Repository navigation
Release Checklist
Use this checklist to ship changes to GraceChords confidently and avoid stale assets. It covers the website; mobile app releases follow apps/mobile/RELEASING.md.
- Node.js 20 LTS (20.19+) installed
- PDF fonts present under
apps/web/src/assets/fonts/(Noto Sans + Noto Mono) -
.envfile configured with Supabase credentials and service role key
Songs and posts are managed via the Supabase database:
-
Songs — use the Editor Portal (
/editor) to add/edit songs directly in Supabase -
Posts — use the Post editor (
/portal/posts) to create or update blog posts - PPTX slides — upload via the PPTX widget in the song editor (stored in R2)
npm run test:mvpGuards the approved PDF layout (spacing, columns, chord alignment). Run the full suite with npm test.
VITE_COMMIT_SHA=$(git rev-parse HEAD) npm run build
npm run previewThis embeds the commit in the service worker cache name for clean updates.
Push to main. Cloudflare Pages automatically builds the web workspace and deploys apps/web/dist/.
No manual deploy step is required. Watch the build status in the Cloudflare Pages dashboard.
- Check the Production smoke test workflow is green, or run
npm run smoke:prod -w @gracechords/web(see Production-Readiness) - Hard refresh the site (Ctrl+Shift+R)
- Confirm edited songs load (Supabase network-first)
- Export a PDF to verify visuals (title 26pt, key 16pt gray, lyric/chord ≥12pt)
- Confirm any new PPTX downloads work
Pushing changes under apps/web/public/wiki/** to main automatically triggers
the wiki-sync.yml workflow, which publishes to the GitHub Wiki (requires the
WIKI_PUSH_TOKEN secret). To sync manually, run the workflow from the Actions
tab, or locally from the web workspace:
cd apps/web
WIKI_PUSH_TOKEN=<your_PAT> node scripts/syncWiki.mjsIf a client appears stale:
navigator.serviceWorker.getRegistrations().then(rs => rs.forEach(r => r.unregister()))Then reload.
- Song changes not visible? Ensure Supabase data is correct; check browser console for query errors
- Stale JS/CSS? Ensure
VITE_COMMIT_SHAwas set during the build and the CF Pages build completed - Missing sitemap entries? The sitemap is regenerated into
dist/sitemap.xmlon every production build (and weekly by thesitemap-rebuildWorker); retry the latest deployment in Cloudflare Pages
-
User Guide
-
Editing & Admin
-
Developer Guide
-
Infrastructure
-
Mobile