DownVid
This supports 1000+ websites, with a clean interface, across macOS / Windows / Linux.
AI translation
GraceChords provides free worship chord sheets and lyrics for churches, worship teams, and believers.
MediaTypeScript · JavaScriptGitHub @rwm6857OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
A small, web-based React app for managing Christian song sheets.
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗GraceChords is a worship songbook platform for churches and worship teams. It manages a ChordPro song catalog with fast search, key transposition, setlist and songbook building, PDF/PPTX export, a full-screen worship mode, and daily Bible readings.
New here? Jump to the app you're working on: web or mobile. This root README is the map; each app's README is the manual.
This is an npm-workspaces monorepo. Platform-agnostic logic is factored into shared packages so the web and native apps can consume the same parser, transposition, RBAC, and Supabase wiring.
GraceChords/
├── apps/
│ ├── web/ @gracechords/web — React + Vite SPA (production site)
│ ├── mobile/ @gracechords/mobile — Expo / React Native app (iOS + Android)
│ └── studio/ macOS SwiftUI app (not an npm workspace)
├── packages/
│ ├── core/ @gracechords/core — shared, DOM-free logic (ChordPro parser,
│ │ transposition, RBAC, setlist codec, Supabase factory)
│ └── tokens/ @gracechords/tokens — design tokens (web CSS + native TS map + generated Swift)
├── workers/ Cloudflare Workers (PPTX upload, sitemap rebuild, Telegram bot, session cleanup)
└── supabase/ SQL migrations (songs, users, posts, setlists, …)
| Workspace | Package | What it is |
|---|---|---|
apps/web | @gracechords/web | The production single-page app: full song catalog, setlists, worship mode, admin/editor portals, Daily Word, posts. Deployed to Cloudflare Pages. |
apps/mobile | @gracechords/mobile | Native iOS and Android client (Expo SDK 55, Expo Router v7). A themed five-tab shell (Home · Songs · Setlists · Daily Word · Utilities) with a real chord-chart Song Viewer, Performer mode, the setlist builder (with import), a song editor, live sessions, the Daily Word landing + reader (M'Cheyne reading, devotionals, private journal reflections, an opt-in reading streak, offline Bible downloads), musician utilities (tuner, metronome, pitch pipe, songbook, capo, key reference), Setlist Stats, and native Google/Apple auth. |
apps/studio | — | Native macOS SwiftUI companion app for song creation and content management. Not an npm workspace; reuses packages/core through JavaScriptCore. |
packages/core | @gracechords/core | Pure TypeScript/JS shared by both apps — ChordPro parser (not the renderer), transposition, chord placement, song metadata/sort, the setlist codec, the role hierarchy, and the Supabase client factory. Consumed as source, no build step. |
packages/tokens | @gracechords/tokens | The single home for design tokens. Web imports tokens.css; native imports the typed map from @gracechords/tokens/native; apps/studio uses a committed Swift mirror generated from it (npm run tokens:swift). |
workers/* | — | Cloudflare Workers deployed independently: authenticated PPTX upload/delete, weekly sitemap rebuild, the @gracechords_bot Telegram bot, and live-session cleanup. |
Use Node.js 20 LTS (20.19+, Vite 7's minimum). Install all workspaces from the repo root:
npm ci
Then run the app you want:
npm run dev # web dev server → http://localhost:5173
npm test # web test suite (Vitest)
npm run build # production web build → apps/web/dist/
The root package.json delegates these scripts to @gracechords/web. For the
full web setup (environment variables, Supabase, deployment) see
apps/web/README.md. For the mobile app (Expo, simulator,
env) see apps/mobile/README.md.
| Service | Role |
|---|---|
| Supabase | Auth + Postgres — song catalog, users/roles, posts, starred songs, setlists, live sessions, reflections. Row-level security on every table. |
| Cloudflare Pages | Hosts the web SPA. Builds from the apps/web root directory to apps/web/dist/ on every push to main. |
| Cloudflare Pages Functions | Server-side code at apps/web/functions/: same-origin R2 proxies (bible/, pptx/) that avoid CORS, plus api/ endpoints (export, Telegram, bot, crash reports). |
Cloudflare R2 (gracechords-bible) | Stores PPTX slide decks (pptx/) and Bible chapter JSON (bible/). |
| Cloudflare Workers | gracechords-pptx-upload (authenticated PPTX writes), gracechords-sitemap-rebuild (weekly cron), gracechords-telegram-bot, gracechords-session-cleanup (15-min cron). |
| Cloudinary | Browser-side image hosting for song/post cover images. |
| Resend | Transactional email (server-side only). |
Full details live in the wiki's Cloudflare Infrastructure
page and in apps/web/AGENTS.md.
GraceChords uses four roles: user → editor → admin → owner.
The hierarchy is defined once in packages/core/src/rbac/roles.js and enforced
via hasMinRole(). See Roles & Access for the
permission matrix and the admin/editor portals.
Current focus and planned work:
apps/mobile/RELEASING.md); next up is offline song/setlist persistence.has_stems / stem_slug / gracetracks_url) across web and mobile.@gracechords/core as the mobile app needs it, keeping web and native in lockstep.AGENTS.md is the root guide.
It routes to per-app docs — apps/web/AGENTS.md and
apps/mobile/AGENTS.md — for platform-specific rules.CODE_OF_CONDUCT.md.SECURITY.md.MONOREPO_MIGRATION.md (historical record of the workspaces cutover and Cloudflare settings).Licensed under the terms in LICENSE. See NOTICE for
attribution.