4.5 KiB
4.5 KiB
Project Context for AI Agents
Quick Project Overview
Ponomar is a Progressive Web App for Orthodox Church calendar, liturgical services, and Bible readings.
- Technology: TypeScript + Vite + Tailwind CSS v4
- Data: JSON-based liturgical data organized by language (en, cu, el, fr, zh, ru)
- Architecture: Client-side PWA with static JSON data, no backend database
- Core Functionality: Calendar display, service assembly, Bible reading, saint lives
Key Architectural Patterns
Data Organization
- Language-based structure:
static/data/{lang}/(en, cu, el, fr, zh, ru) - Bundle system: menaion-bundles, lives bundles, service templates
- File routing: CIds with
01-12prefix → month files, elsemisc.json
Core Scripts
convert-all.ts— Master conversion scriptenrich-lives.ts— Fuzzy matching and enrichment pipelinevalidate-data.ts— Main validator (checks 274 files)convert-minei.ts— Chetyi-Minei EPUB to JSON conversionmigrate-data.ts— Data normalization
Recent Work Context
Completed Enrichment
- Chetyi-Minei import: 1154 chapters processed, 1190/3046 lives enriched
- Manual fixes: 214 manual corrections in
enrich-lives.ts - Bundle fixes: 868 Иаков Боровицký corrected from 05-22 to 10-23
- Coverage: 39% of lives have texts (source from Chetyi-Minei)
Validation Status
- All data files validated: 274 files checked
- TypeScript compiles cleanly
- Build succeeds without errors
Critical Invariants
- Never overwrite existing
life.text— enrichment only fills empty entries - File routing is strict: CId prefix determines file location
- Bundle CIds must exist: Menaion CIds require corresponding lives entries
- Static data is tracked:
static/data/in git (exceptscripts/output/minei.json) - Validation must pass: Changes must pass
validate-data.ts,tsc --noEemit,npm run build
Key Script Quick Reference
# Development
npm run dev # Start dev server
npm run build # Production build
# Data operations
npm run convert # Convert XML to JSON
npm run migrate # Normalize data format
# Validation
npx tsx scripts/validate-data.ts # Main validator
npx tsc --noEmit # Type checking
npm run build # Build verification
# Enrichment
npx tsx scripts/enrich-lives.ts # Dry run enrichment
npx tsx scripts/enrich-lives.ts --write # Apply enrichment
File Structure Highlights
src/
├── core/ # Domain logic (calendar, paschalion, service assembly)
├── ui/ # View components
└── main.ts # Entry point
scripts/
├── convert-*.ts # XML→JSON conversion pipeline
├── validate-*.ts # Comprehensive validation suite
└── enrich-lives.ts # Enrichment with manual fixes
static/data/
├── cu/ # Church Slavonic (authoritative calendar)
├── ru/ # Russian (enriched lives)
├── en/ # English
└── shared/ # Cross-language resources
Important Notes
Pipeline Dependencies
- Chetyi-Minei source: EPUB conversion requires
convert-minei.ts - Enrichment workflow: Requires minei.json output + menaion-bundle.json
- Validation chain: Each commit must pass validation → typecheck → build
File System Constraints
scripts/output/minei.jsonis gitignored (33MB source file)static/data/is fully tracked in git- Lives files are written by month (01.json-12.json) or misc.json
Common Tools Reference
- Search:
npx tsx scripts/tools/search-texts.ts <query> - Stats:
npx tsx scripts/tools/stats.ts [--lang en] - Validate:
npx tsx scripts/validate-data.ts
Documentation Reference
- DATA_FORMAT.md — Detailed technical specifications (English)
- DATA_RUS.md — Complete documentation in Russian
- README.md — Project overview and getting started
Working Reminders
- Always run validation before committing data changes
- Check coverage statistics when working with enrichment
- Test builds after any modifications to static data
- Review the match report after dry runs
Current State
- Total CIds: 3046
- Lives with text: 1190 (enriched from Chetyi-Minei)
- Unmatched minei chapters: 27 (floor: narratives, no-target, already-filled)
- Latest enrichment commits:
ec3f593(3 more lives),08950cd(57 more lives),381a494(121 more lives),7dde216(baseline enrichment)