Skip to content

Decide whether to publish docs/ on the docs.plus domain #196

Description

@HMarzban

Goal

Decide whether the pages in docs/ should also be published on docs.plus, and if so, how.

Today docs/ holds 12 tracked Markdown files. They are readable on GitHub and nowhere else. This issue is the decision, not the build. Phase one (#170) deliberately shipped no documentation website, and that was right. This is the follow-up question it left open.

Why it comes up now

The site has three indexable pages: /, /privacy and /terms. That is the whole search surface. INDEXABLE_PATHS in apps/webapp/src/components/pages/home/homeMetadata.ts is its only input, and user documents carry noindex on purpose. That ceiling shapes every discovery decision.

A documentation site would be the only honest way to add indexable pages, because every page would be real content written for a named reader.

What was already ruled out

The GitHub Wiki. Evaluated and rejected on 2026-08-24, and the tab is now off. A wiki is a separate git repository, so its pages get no pull request, no review, no CI, no link check, and no version tag. AGENTS.md also forbids the duplication outright: "Cross-link instead of duplicating. Two copies of the same fact = one is wrong." Do not re-propose it.

What must be decided

Answer these three before any work starts. None has an obvious answer.

Question Options Note
Is it worth it? Yes / no A documentation site is ongoing maintenance, not a one-time build. "No" is a valid answer.
Where does it live? A path on the main app, or a separate host A path keeps one origin and one deploy. A separate host keeps the app bundle clean.
How is it built? Render docs/ at build time, or a static-site generator Whatever wins, the site renders docs/. It never copies it. One source of truth.

Traps this repository already knows about

  • [...slugs] catches everything. apps/webapp/src/pages/[...slugs].tsx treats an unknown path as a document. /privacy and /terms only work because routePolicy.ts marks them utility routes. apps/webapp/CLAUDE.md states the rule: "Do not let [...slugs] or isDocumentAsPath treat those paths as documents." Any documentation path needs the same treatment.
  • The docs/ gitignore question is already settled — do not reopen it. docs/ is tracked today, with 12 files, and .gitignore holds only explanatory comments. Write the docs.plus documentation set, phase one: self-hosting and the API #170's body still proposes an ignore-then-negate shape (/docs/* plus ! negations). That approach was rejected on 2026-08-19, because it mixes public pages into a private directory and one careless git add docs/ leaks plans and reviews. Private material lives in Notes/, which is ignored wholesale.
  • routePolicy.ts drives more than routing. It decides the document stylesheet import and, since 2026-08-24, whether analytics loads. New routes must be classified there deliberately.
  • Versioning. A page describing v2.0.0 must stay reachable after v2.1.0 ships, or self-hosters follow the wrong instructions. Decide this before choosing a builder.

Out of scope

Not this issue: an llms.txt, an AI-facing mirror of the pages, or a translation workflow. #170 already ruled that an agent is not a separate reader, because a second copy of every fact goes stale.

Definition of done

A written decision in this issue, with a reason. If the answer is "not worth it", say so and close it. That is a successful outcome, and it stops the question being reopened every quarter.

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions