A free, offline-first iOS/Android siddur for the Feigenbaum Weekday Siddur (Cohen Family Edition, Nusach Ashkenaz). Built for teens, with Hebrew / Both / English display modes, inline commentary, highlights, and notes.
iOS is on TestFlight; Android support is in progress.
- Content (the hard part): faithfully digitizing the print siddur into
structured JSON, then proofing it section-by-section against the print.
The print PDF (
feigenbaum-siddur-original.pdf) is the sole authority for content — every change is verified against the actual page, not against training-data memory of the text. - App: the Expo reading client that renders that JSON.
npm install
npm start # Expo dev server (then i / a / w for ios / android / web)
npm run check # tsc --noEmit && python3 scripts/lint_content.py --strict --errors && jestOne-time setup for a new clone — wires up the content linter as a pre-commit gate:
git config core.hooksPath scripts/hooksOther commands:
npm run ios # launch in iOS simulator
npm run typecheck # tsc --noEmit
npm test # jest (jest-expo preset)
npm run lint:content # content linter, full report (errors + advisory warnings)Run a single test: npx jest src/store/__tests__/preferences.test.ts (or
-t "name").
app/— Expo Router (file-based) screens:daven/index.tsx(home) →daven/[service].tsx(the reader), plusindex.tsx(redirect),onboarding.tsx, andsettings.tsx.src/content/— the siddur content as structured JSON, loaded throughsrc/content/loader.ts. The exact rendering contract (which segment fields are actually shown, header ordering, etc.) is documented indocs/CONTENT_GUIDE.md— read it before touching anysrc/content/*.json.src/store/— Zustand stores (preferences, annotations, appendix navigation), persisted to AsyncStorage.scripts/— content tooling: the linter (lint_content.py) that enforcesdocs/CONTENT_GUIDE.md, and the many deterministicfix_*.py/add_*.pyscripts used to edit content JSON (content JSON is edited via these scripts, not by hand).docs/—CONTENT_GUIDE.md(rendering contract),REVIEW_QUEUE.md(deferred content decisions),solutions/(documented past problem/fix write-ups), and project plans.
For the full architecture and content-editing workflow, see CLAUDE.md.
The siddur text itself is © its rightsholders; it is included here for digitization/proofing against the print edition and is not covered by this repository's software license.