Each policy now has exactly one copy: docs/PRIVACY.md in the app's own repository. The pages keep their URLs and chrome and render that file through a content collection, so the published page and the app's own documentation cannot drift. scripts/sync-external.mjs shallow-clones both repos into external/ from prebuild and predev — not from CI: Coolify builds the site from the repo, so a checkout that only ran in a Gitea job would never reach the deploy. It falls back to the raw file if git is unavailable, and takes <APP>_REF or <APP>_LOCAL for work against a branch or an unpushed working copy. A missing, empty or malformed policy fails the build, verified against the real image: the deploy stops rather than publishing an empty privacy page.
18 lines
238 B
Plaintext
18 lines
238 B
Plaintext
# build output
|
|
dist/
|
|
# generated types
|
|
.astro/
|
|
# deps
|
|
node_modules/
|
|
# env
|
|
.env
|
|
.env.production
|
|
# os / editor
|
|
.DS_Store
|
|
*.log
|
|
# local screenshots
|
|
.shots/
|
|
|
|
# App repositories fetched at build time (see scripts/sync-external.mjs).
|
|
external/
|