Standalone repo that builds embeddable JAMstack map bundles (web components), composes them into a lazy-loaded SPA via layouts/, and optionally wraps a Capacitor Android/iOS app — one build, choose your output/CDN. Diátaxis docs. History reset to a single clean commit; no PII, IPs, or internal terms.
115 lines
5.4 KiB
Text
115 lines
5.4 KiB
Text
# (The build no longer uses an intermediate app/ tree — vite writes straight into
|
|
# public/<name>/, which is committed. See "THE SERVED WEB-ROOT" below.)
|
|
|
|
# Node
|
|
node_modules/
|
|
.npm/
|
|
.pnpm-store/
|
|
|
|
# Vite cache
|
|
.vite/
|
|
dist/
|
|
|
|
# Editor
|
|
.vscode/
|
|
.idea/
|
|
|
|
# OS
|
|
.DS_Store
|
|
|
|
# Env
|
|
.env
|
|
.env.local
|
|
.env.*.local
|
|
!.env.example
|
|
|
|
# Research dashboard — developed on its own branch (research-dashboard),
|
|
# excluded from the map-only bundle. Do not track dashboard files here.
|
|
|
|
# Local build artifacts / deploy config — kept on disk, out of the map PR
|
|
build-sizes-baseline.json
|
|
|
|
|
|
_archive
|
|
|
|
# ── BUILD OUTPUT — regenerated by `bun run build`; one tree, three consumers ──
|
|
# Not committed: it is derived. Railway builds it in CI; Capacitor copies it via
|
|
# `cap sync`; staging serves it locally.
|
|
|
|
# ── Capacitor generated / machine-specific (the native projects THEMSELVES are
|
|
# committed under capacitor/; only their build output is ignored) ──
|
|
capacitor/android/app/src/main/assets/public/
|
|
capacitor/android/app/src/main/assets/capacitor.config.json
|
|
capacitor/android/app/src/main/assets/capacitor.plugins.json
|
|
capacitor/android/build/
|
|
capacitor/android/app/build/
|
|
capacitor/android/.gradle/
|
|
capacitor/android/local.properties
|
|
capacitor/android/keystore.properties
|
|
capacitor/ios/App/build/
|
|
capacitor/ios/App/Pods/
|
|
*.jks
|
|
*.keystore
|
|
|
|
# ── THE SERVED WEB-ROOT — COMMITTED ───────────────────────────────────────────
|
|
# public/ is the product: the shell, the built bundles and the pre-generated
|
|
# posters the app fetches at runtime. It is committed whole so a clone (or a
|
|
# static host, or the source-control service) has a working site without running
|
|
# anything, and so CI regenerates only public/<name>/ in place rather than
|
|
# assembling the folder from other directories.
|
|
# The exceptions are BOTH Mapbox credentials: token.local.js (local staging, held
|
|
# out by public/.gitignore) and api/maps/token.json, which the build writes from
|
|
# the MAPBOX_TOKEN environment variable so the value lives in deployment settings
|
|
# rather than in git history.
|
|
public/api/maps/token.json
|
|
|
|
# ── stale dev-time bundle copies inside the wrapper ───────────────────────────
|
|
# The wrapper mounts bundles from ./doxa-maps/ at the served root now; these were
|
|
# hand-copied during bring-up and would silently go stale.
|
|
layouts/*/profiles/
|
|
layouts/*/js/
|
|
|
|
# ── POSTER GENERATOR OUTPUT ───────────────────────────────────────────────────
|
|
# library/scripts/posters/ is source (the template + its snapshots); out/ is what
|
|
# it renders — ~95 MB of HTML and 3000x3000 PNGs, all reproducible from source:
|
|
# bun run posters && bun run posters:shoot && bun run posters:gallery
|
|
|
|
# ── EXCEPT the three inputs the build guards read ────────────────────────────
|
|
# iso2-map, resource-join and tables-complete verify shipped data against these.
|
|
# They are derived, but they are derived from NETWORK FETCHES, and the research
|
|
# network policy forbids CI reaching out to those sources — so CI cannot rebuild
|
|
# them and, without them committed, three guards fail on a clean clone and the
|
|
# deploy dies. 2 MB of the 23 MB out/ tree; the rest stays ignored.
|
|
# Visual-gate screenshots are OUTPUT, not fixtures. visual-gate.mjs and
|
|
# palette-preview.mjs only ever page.screenshot() INTO this folder — the gate's own
|
|
# rule is that it never reads a PNG back, it asserts against the live DOM. So these
|
|
# are 11 MB of regenerable pictures of somebody's screen, and they bake build-slice
|
|
# vocabulary into pixels where no text scrub can reach it.
|
|
app-profiles/*/data/visual-gate-shots/
|
|
|
|
library/scripts/*/out/**
|
|
internal/*/out/**
|
|
# EXCEPT the three inputs the build guards read. iso2-map, resource-join and
|
|
# tables-complete verify shipped data against these. They are derived — but derived
|
|
# from NETWORK FETCHES, and the research network policy forbids CI reaching those
|
|
# sources, so CI cannot rebuild them. Without them committed, three guards fail on a
|
|
# clean clone and the deploy dies. 2 MB of the 23 MB out/ tree; the rest stays out.
|
|
# (Negations must follow the exclude: the last matching rule wins.)
|
|
!library/scripts/research/out/arclight-languages.json
|
|
!library/scripts/research/out/iso3-to-iso2.json
|
|
!library/scripts/research/out/language-resources.json
|
|
!library/scripts/research/out/ebible-translations.csv
|
|
!library/scripts/research/out/tables/
|
|
!library/scripts/research/out/tables/**
|
|
|
|
# ── INTERNAL DOCS — the split-plane rule ──────────────────────────────────────
|
|
# Agent/internal working docs live here and are NEVER published. The repo's
|
|
# public surface stays architecture + code + contributor docs; internal process
|
|
# notes, lessons-learned and agent instructions stay out of it.
|
|
_qa-cycle/
|
|
|
|
# ── GENERATOR OUTPUT — regenerable render artifacts, never committed ──────────
|
|
# internal/<tool>/out/ holds what the poster/research generators RENDER
|
|
# (upg100-posters/out alone is ~619MB / 12,623 PNGs). The generators themselves
|
|
# are source and ARE committed; their output is derived. What actually ships is
|
|
# the exported subset in public/assets/ (see export-public.mjs).
|