docs(readme): self-hoster setup + env-var reference; CLAUDE.md convention to keep it current (#114) #118
No reviewers
Labels
No labels
area:auth
area:ci
area:db
area:infra
area:native
area:pwa
area:service
epic
feature
foundation
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
james/carol!118
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "114-readme-config"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #114.
What lands
README.mdpodman run, a Postgres + OIDC + reverse-proxy variant, and acompose.yaml. Volume mount for/app/datais called out..env.localoverride pattern and the thirdLEFTHOOK_EXCLUDE=conventionalline added (was missing).BASE_REF,FORGEJO_*,GITHUB_*,PR_NUMBER,TEST_POSTGRES_URL,NEXT_RUNTIME) are deliberately excluded with a callout — they belong with the workflow or test that uses them.CLAUDE.mddocs/*may link but must not restate defaults.README#configurationinstead of restatingCAROL_STORAGE_ROOT/OIDC_<NAME>_*values. The architectural claim stays; the env-var values move.Acceptance criteria
README.mdhas a Configuration section listing every self-hoster-facing env var with default + brief description, grouped by concern.README.mdhas a self-hosted deployment snippet that names the data-directory volume and shows the minimum env vars to start the container.CLAUDE.mdadds the convention bullet that ties future env-var changes to README updates.OIDC_<NAME>_*set, covered in the OIDC providers table.README.mdandCLAUDE.md/docs/*—grep -nE 'CAROL_STORAGE_ROOT|OIDC_<NAME>_|REGISTRATION_POLICY|DATABASE_URL|APP_URL' CLAUDE.mdreturns empty after this PR.Composes with
CAROL_STORAGE_ROOTgot its first user there; this PR puts it where self-hosters can find it.OIDC_<NAME>_REQUIRE_EMAIL_VERIFIED(just merged) is captured in the OIDC table.APP_URLfor reverse-proxy deployments is now visible from the README rather than the bug-fix description.docs/oidc-self-hoster-guide.md— the README summary points at the deep-dive guide; the guide stays as the recipe book.Out of scope (called out in #114)
process.env.*and failing the build on a new name missing from the README table. Worth a follow-up if drift turns out to be real; the convention bullet is the soft enforcement first..env.examplefile. Useful but follow-up — README table is the source of truth first.docs/ci.md/docs/oidc-self-hoster-guide.md. Those stay as references; the README now links into them.The self-hoster-facing surface was scattered across CLAUDE.md, the Dockerfile, docs/ci.md, docs/oidc-self-hoster-guide.md, and the ADRs. None of the env vars (DATABASE_URL, CAROL_STORAGE_ROOT, APP_URL, REGISTRATION_POLICY, OIDC_<NAME>_*, PORT, HOSTNAME) appeared in the README — anyone landing on the repo page had to grep source to find them. README.md - New "Configuration" section. Tables grouped by concern (Data, Authentication, OIDC providers, Operations), one row per env var with default + notes + when the default holds. The OIDC table summarises the pattern; the full walkthrough stays in docs/oidc-self-hoster-guide.md. - New "Self-hosted deployment" section: minimal podman run, a Postgres + OIDC + reverse-proxy variant, and a compose.yaml. Volume mount for /app/data is called out. - "Setup" renamed to "Local development" with an explicit .env.local override pattern. - CI-runner-only / test-only env vars (BASE_REF, FORGEJO_*, GITHUB_*, PR_NUMBER, TEST_POSTGRES_URL, NEXT_RUNTIME) are deliberately excluded with a callout. CLAUDE.md - New convention bullet under "Conventions" making README the env-var source of truth. ADRs and docs/* may link but must not restate defaults. - "Stack defaults" lines for Auth (OIDC) and Blob storage demoted to link into README#configuration instead of restating CAROL_STORAGE_ROOT / OIDC_<NAME>_* values. Audit (per ticket AC): grep -rohE 'process\.env\.[A-Z_]+' over lib/ app/ db/ proxy.ts instrumentation.ts returns APP_URL, CAROL_STORAGE_ROOT, DATABASE_URL, NEXT_RUNTIME, NODE_ENV, REGISTRATION_POLICY — all six covered (NEXT_RUNTIME explicitly called out as internal). The dynamic OIDC_<NAME>_* set is covered by the OIDC table.📊 Test coverage
Patch coverage: no testable lines changed.
Overall (
app/,lib/,db/, excluding UI per ADR-0019):Soft thresholds per ADR-0019. Coverage is informational and does not block merge.