{"repo":"shuricksumy/foyer","free":true,"listed":false,"github":"https://github.com/shuricksumy/foyer","clone":"git clone https://github.com/shuricksumy/foyer.git","description":"Config-driven homelab start page — sidebar of self-hosted services that load into an in-page pane, no build step, everything driven by YAML","language":"JavaScript","stars":20,"topics":["dashboard","homelab","no-build","self-hosted","start-page","static-site","vanilla-javascript","yaml"],"license":"MIT","category":"self-hosted-apps","readme_excerpt":"foyer A config-driven homelab start page — the entryway to every self-hosted service you run. Live demo — served via GitHub Pages straight from main , no build step of its own (Pages just serves the static files as-is). config.yaml is a sanitized example config with real official-site links for the well-known services — your real setup goes in the gitignored private profiles (see Profiles below), which never get pushed. Sidebar of self-hosted services, click one and it loads into a pane on the right without leaving the page — no separate tab to lose track of. Content (services, icons, grouping, URL rules) lives entirely in YAML config files, not HTML, so adding or changing a service is a config edit, not markup surgery. No build step. Static HTML/CSS/vanilla JS, js-yaml vendored locally ( js/vendor/ ) for parsing the config in the browser. Serve this folder however you'd serve any static site — or for local testing: Deploying docker-compose.yml runs it behind nginx ( nginx:alpine ), mounting only the specific files a profile needs rather than the whole repo root — so .git / README.md / .gitignore etc. never end up served over HTTP even if they exist in your working copy. docker compose up -d and it's running on :8080 . It includes Traefik labels for reverse-proxy routing — HTTPS on a dedicated subdomain by default, with a plain-HTTP/ PathPrefix alternative documented right next to it for serving foyer at the root of an existing host instead. Drop the labels: / networks: block","default_branch":null,"files":null,"tree":[],"storefront":"/r/shuricksumy","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/shuricksumy/foyer/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}