Feature: Project Pages
Purpose
The project publishes a standard set of self-contained status pages — index.html, dashboard.html, todo.html, prompts.html, documents.html, records.html — that serve as the project’s read interface for humans and LLMs (status, live state, work plan, rules, knowledge, and records) without exposing project-internal files.
The pages follow the homelab project-pages conventions (canonical: homelab documents/09-project-pages-conventions.md; skeleton summary: documents/06-project-pages.md). The homelab project is the only publisher: this project generates its pages, registers once via pages_source, and does not push to the web server itself.
Requirements
make sitemust build the standard page set intosite.out/:index.htmlfromsite.in/index.txt(status page),dashboard.htmlfromsite.in/dashboard.txt(live state),todo.html,prompts.html,documents.html,records.htmlgenerated byscripts/site-condense.shfrom the project’s ownTODO.md,prompts/,documents/, andrecords/at build time.
- Every
.mdfile underprompts/(the entire tree, including subdirectories),documents/, andrecords/must be published as its own full-text page (e.g.prompts-common-02-universal-rules.html), linked from the index pages. Markdown is rendered to HTML at build time (pandoc when available, minimal fallback otherwise). todo.htmlstays condensed: open items with continuation text, completed items summarized as a count.- Every page must use the shared template
site.in/template.html(standard 6-page relative nav,<style>, footer,<!-- SITE-CONTENT -->marker). - The nav must carry the marker
<!-- HOMELAB-HOME-LINK -->; the homelab replaces it with a link back to the labs home at publish time. The project must not hardcode the labs site URL. - All links must be relative so the pages work at any depth under
/projects/<id>/. - Generated pages must begin with
<!-- generated by scripts/site-*.sh; do not edit manually -->. - Generated output (
site.out/) is gitignored and never edited by hand; onlysite.in/is authored. - Published pages must pass the homelab sanitization gate (no MAC addresses, private LAN IPs, usernames, home paths, or private-key material) — full text of prompts/documents/records is published, so the source files must themselves be sanitized.
make deploymust not push to the web server: it is retired and only points at the homelab publish flow.
Behavior
- Running
make siteregenerates the standard page set deterministically fromsite.in/and the project’s ownTODO.md,prompts/,documents/,records/. - The pages are registered for publishing via the homelab’s
sources/projects.yaml(pages_source); the homelab fetches the generated tree, re-runs the leak gate, and publishes it with its own deploy.
Dependencies
- Feature
01-site-build.md(Site Build).