A configurable portal/start page with links organized by categories, RSS feed integration, and dark mode support.
- YAML Configuration - Easy configuration via
config/links.yaml - Dark Mode - Toggle with system preference detection
- RSS Feed - Display latest news from any RSS feed
- Custom Icons - 40+ built-in icons including country flags
- Responsive Design - Works on desktop and mobile
- Docker Ready - Deploy with Docker Compose
npx servedocker compose up -dOpen http://localhost
Edit config/links.yaml to customize your portal:
# Site settings
site_name: "My Portal"
logo: "https://example.com/logo.png"
favicon: "https://example.com/favicon.ico"
message: "Welcome to my portal!"
# RSS Feed (sidebar)
rss_feed: "https://example.com/feed.xml"
rss_items: 5
# Link categories
categories:
- name: "Work"
links:
- title: "Email"
url: "https://mail.example.com"
icon: "mail"
- title: "Calendar"
url: "https://calendar.example.com"
icon: "calendar"
- name: "News"
rss_feed: "https://news.example.com/rss"
rss_items: 5
rss_icon: "rss"home, cloud, image, globe, www, website, flag, search, calculator, code, help-circle, book, edit, terminal, message-square, play-circle, mail, calendar, file-text, clipboard, link, star, heart, settings, user, users, folder, download, upload, external-link, rss, database, server, shield, lock, unlock, key, bell, contact
flag-at (Austria), flag-de (Germany), flag-ch (Switzerland), flag-eu (EU)
flag-wien, flag-noe, flag-ooe, flag-stmk, flag-ktn, flag-sbg, flag-tirol, flag-vbg, flag-bgld
Create custom three-stripe horizontal flags using the format couleur-color1-color2-color3:
icon: "couleur-red-white-gold" # Red, white, gold stripes
icon: "couleur-black-red-yellow" # German flag colors
icon: "couleur-#003399-white-#ed2939" # Blue, white, red (hex colors)Colors can be CSS color names (red, white, gold, blue, etc.) or hex codes (#ff0000, #ffffff).
The container uses an external Docker network called dockernet. You need to create it manually before starting:
docker network create dockernetAlternatively, modify docker-compose.yml to use a local network:
networks:
dockernet:
external: trueChange to:
networks:
dockernet:
driver: bridgeThe config/ directory is mounted as a volume, allowing you to edit links.yaml without rebuilding the container:
volumes:
- ./config:/data/config:roChanges to links.yaml take effect on page refresh.
To restart the container after configuration changes:
docker compose up -dChanges to app.js, styles.css, index.html, or other source files require rebuilding the Docker container:
docker compose up -d --buildMIT