Add editable site identity and homepage configuration #35

Closed
opened 2026-05-19 19:51:45 -05:00 by erik · 2 comments
Owner

Goal

Make the template homepage easy to customize from one obvious copied-site configuration file without requiring users to edit route logic or rendering internals.

Spec: docs/web-specs/02-site-configuration-theming.md

Scope

This is a small manually testable vertical slice of site configuration and theming. Broader runtime config editing, ActivityPub actor display settings, author/contact identity modeling, and full theming systems are deferred to tracked follow-up tasks.

Requirements

  • Add one obvious template-owned site configuration file that survives being copied by slug init.
  • Configure site name, site URL, tagline/description, homepage intro/copy, navigation links, footer links, and basic theme tokens.
  • Wire the public homepage to read from this config file instead of route-local constants or normal site identity environment variables.
  • Add basic CSS variables or theme tokens for colors and typography and apply them to the homepage.
  • Add clear comments or documentation for values every initialized site owner should change.
  • Ensure default configuration works in local development without production secrets.
  • Keep public website route logic separate from configuration content.
  • Follow docs/CONTRIBUTING.md and docs/CODE_STANDARDS.md.

Out of scope

  • Runtime config editing through slug or admin UI; tracked by task-fbb9f988.
  • Database-backed site configuration; tracked by task-6278792d.
  • ActivityPub actor display settings; tracked by task-a726b38e.
  • Default author/contact identity modeling; tracked by task-5cb39b0b.
  • Expanded theming beyond the initial homepage tokens; tracked by task-299598f5.
  • Theme marketplace or plugin system; not planned unless explicitly requested.

Follow-up tasks

  • task-6278792d — Add DB-backed site configuration.
  • task-fbb9f988 — Add runtime site config editing.
  • task-a726b38e — Add ActivityPub actor display config.
  • task-5cb39b0b — Add default author identity config.
  • task-299598f5 — Add expanded theme configuration.

Acceptance criteria

  • Site name can be changed from one obvious config file.
  • Homepage copy can be changed from one obvious config file.
  • Navigation and footer links can be changed without editing route logic.
  • Public homepage uses configured site identity and theme values.
  • README or docs list required customization steps after initialization/copying.
  • Default config works without production secrets.
  • Tests cover configured site identity, homepage copy, navigation/footer links, and theme values.
  • Relevant lint/test checks pass.

Dependencies

  • task-d6397b57
## Goal Make the template homepage easy to customize from one obvious copied-site configuration file without requiring users to edit route logic or rendering internals. Spec: `docs/web-specs/02-site-configuration-theming.md` ## Scope This is a small manually testable vertical slice of site configuration and theming. Broader runtime config editing, ActivityPub actor display settings, author/contact identity modeling, and full theming systems are deferred to tracked follow-up tasks. ## Requirements - Add one obvious template-owned site configuration file that survives being copied by `slug init`. - Configure site name, site URL, tagline/description, homepage intro/copy, navigation links, footer links, and basic theme tokens. - Wire the public homepage to read from this config file instead of route-local constants or normal site identity environment variables. - Add basic CSS variables or theme tokens for colors and typography and apply them to the homepage. - Add clear comments or documentation for values every initialized site owner should change. - Ensure default configuration works in local development without production secrets. - Keep public website route logic separate from configuration content. - Follow `docs/CONTRIBUTING.md` and `docs/CODE_STANDARDS.md`. ## Out of scope - Runtime config editing through `slug` or admin UI; tracked by `task-fbb9f988`. - Database-backed site configuration; tracked by `task-6278792d`. - ActivityPub actor display settings; tracked by `task-a726b38e`. - Default author/contact identity modeling; tracked by `task-5cb39b0b`. - Expanded theming beyond the initial homepage tokens; tracked by `task-299598f5`. - Theme marketplace or plugin system; not planned unless explicitly requested. ## Follow-up tasks - `task-6278792d` — Add DB-backed site configuration. - `task-fbb9f988` — Add runtime site config editing. - `task-a726b38e` — Add ActivityPub actor display config. - `task-5cb39b0b` — Add default author identity config. - `task-299598f5` — Add expanded theme configuration. ## Acceptance criteria - [ ] Site name can be changed from one obvious config file. - [ ] Homepage copy can be changed from one obvious config file. - [ ] Navigation and footer links can be changed without editing route logic. - [ ] Public homepage uses configured site identity and theme values. - [ ] README or docs list required customization steps after initialization/copying. - [ ] Default config works without production secrets. - [ ] Tests cover configured site identity, homepage copy, navigation/footer links, and theme values. - [ ] Relevant lint/test checks pass. ## Dependencies - task-d6397b57
erik changed title from Add site configuration and theming to Add editable site identity and homepage configuration 2026-05-22 09:25:56 -05:00
Author
Owner

Synced from todu comment by @todu on 2026-05-22T14:36:10.691Z

PR Review: Approved

PR: #48

Summary

Reviewed PR #48 at commit eee1b31. The PR delivers the approved vertical slice for editable site identity and homepage configuration: src/config/site.ts is the obvious copied-site customization file, the homepage renders configured site identity/copy/navigation/footer/theme values, env examples no longer treat public site identity as normal runtime env, and docs/tests cover the customization path.

Acceptance Criteria

  • Site name can be changed from one obvious config file.
  • Homepage copy can be changed from one obvious config file.
  • Navigation and footer links can be changed without editing route logic.
  • Public homepage uses configured site identity and theme values.
  • README or docs list required customization steps after initialization/copying.
  • Default config works without production secrets.
  • Tests cover configured site identity, homepage copy, navigation/footer links, and theme values.
  • Relevant lint/test checks pass: make check, ./scripts/pre-pr.sh, manual homepage smoke, and Forgejo CI all passed.

Blocking Issues

None.

Warnings

None.

Verdict

Approved for merge.

_Synced from todu comment by @todu on 2026-05-22T14:36:10.691Z_ ## PR Review: Approved PR: https://forge.caradoc.com/erik/slugkit/pulls/48 ### Summary Reviewed PR #48 at commit `eee1b31`. The PR delivers the approved vertical slice for editable site identity and homepage configuration: `src/config/site.ts` is the obvious copied-site customization file, the homepage renders configured site identity/copy/navigation/footer/theme values, env examples no longer treat public site identity as normal runtime env, and docs/tests cover the customization path. ### Acceptance Criteria - [x] Site name can be changed from one obvious config file. - [x] Homepage copy can be changed from one obvious config file. - [x] Navigation and footer links can be changed without editing route logic. - [x] Public homepage uses configured site identity and theme values. - [x] README or docs list required customization steps after initialization/copying. - [x] Default config works without production secrets. - [x] Tests cover configured site identity, homepage copy, navigation/footer links, and theme values. - [x] Relevant lint/test checks pass: `make check`, `./scripts/pre-pr.sh`, manual homepage smoke, and Forgejo CI all passed. ### Blocking Issues None. ### Warnings None. ### Verdict Approved for merge.
erik 2026-05-22 09:41:42 -05:00
Author
Owner

Synced from todu comment by @todu on 2026-05-22T14:37:42.875Z

Closing Summary

PR #48 merged: #48

Acceptance criteria evidence:

  • Site name can be changed from one obvious config file: met — template/site/src/config/site.ts defines siteConfig.name and homepage renders it.
  • Homepage copy can be changed from one obvious config file: met — siteConfig.homepage.intro and siteConfig.homepage.body render on the homepage.
  • Navigation and footer links can be changed without editing route logic: met — siteConfig.navigation and siteConfig.footerLinks render through the homepage template.
  • Public homepage uses configured site identity and theme values: met — homepage renders configured identity and CSS variables from siteConfig.theme.
  • README or docs list required customization steps after initialization/copying: met — template/site/README.md documents first-pass customization values.
  • Default config works without production secrets: met — defaults are local/static and require no secrets.
  • Tests cover configured site identity, homepage copy, navigation/footer links, and theme values: met — homepage tests cover these values.
  • Relevant lint/test checks pass: met — make check, ./scripts/pre-pr.sh, PR CI, and main push CI passed.

Readiness: READY

_Synced from todu comment by @todu on 2026-05-22T14:37:42.875Z_ ## Closing Summary PR #48 merged: https://forge.caradoc.com/erik/slugkit/pulls/48 Acceptance criteria evidence: - Site name can be changed from one obvious config file: met — `template/site/src/config/site.ts` defines `siteConfig.name` and homepage renders it. - Homepage copy can be changed from one obvious config file: met — `siteConfig.homepage.intro` and `siteConfig.homepage.body` render on the homepage. - Navigation and footer links can be changed without editing route logic: met — `siteConfig.navigation` and `siteConfig.footerLinks` render through the homepage template. - Public homepage uses configured site identity and theme values: met — homepage renders configured identity and CSS variables from `siteConfig.theme`. - README or docs list required customization steps after initialization/copying: met — `template/site/README.md` documents first-pass customization values. - Default config works without production secrets: met — defaults are local/static and require no secrets. - Tests cover configured site identity, homepage copy, navigation/footer links, and theme values: met — homepage tests cover these values. - Relevant lint/test checks pass: met — `make check`, `./scripts/pre-pr.sh`, PR CI, and main push CI passed. Readiness: READY
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
erik/slugkit#35
No description provided.