Files

99 lines
7.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Ponomar — Православный календарь PWA
Прогрессивное веб-приложение для православного церковного календаря, богослужебных текстов и чтений Писания.
Произведено из оригинального Java-приложения Ponomar от Александра Андреева, Юрия Шардта и Сергея Ф.
**Демо:** <https://ponomar.atroshin.ru>
## Возможности
- **Календарь** — Просмотр сеток месяцев с литургическими днями, периодами поста, чинами и празднованиями. Поддерживает юлианский календарь с григорианскими эквивалентами.
- **Service Reader** — Сборка богослужебных текстов (часов, кафизм) из структурированных шаблонов с условной логикой.
- **Bible Reader** — Чтение Писания на 13 языках (церковнославянский, русский синодальный, KJV, Брентон, Вульгата и др.). Позиция чтения для каждой версии сохраняется между сессиями.
- **Жития святых** — 1203/3046 житий обогащены текстами из Четьи-Миней и Настольной книги Булгакова.
- **Многоязычный интерфейс** — Английский, русский, церковнославянский (со специальными шрифтами для церковнославянского).
- **Цветовые схемы** — Переключение между Стандартной, Тёмной, Сепия и Высокой контрастностью в настройках.
- **PWA + Офлайн** — Устанавливается на устройства. Предзагрузка данных (жития, календарь, переводы Библии) для офлайн-доступа через IndexedDB.
- **Астрономия** — Время восхода/заката и церковная фаза луны (день, тренд, освещённость) в панели дня календаря. Местоположение настраивается.
- **Навигация** — 3 элемента верхнего уровня (Calendar, Library, Settings) с выпадающим меню Library: Библия, Service (Часослов, Сборник, Молитвенное правило, Каноны и акафисты, Паримии, Пареклит, Ирмологий), Праздники (Минея, Постная Триодь).
## Технологический стек
- [TypeScript](https://www.typescriptlang.org/) — полностью типизированный
- [Vite](https://vitejs.dev/) — инструмент сборки
- [Tailwind CSS v4](https://tailwindcss.com/) — CSS с утилитарными классами
- [vite-plugin-pwa](https://vite-pwa-org.netlify.app/) — PWA + service worker
## Начало работы
```bash
npm install
npm run dev
```
Файлы данных в `static/data/` отслеживаются в git. Единственный игнорируемый файл вывода — `scripts/output/minei.json` (33МБ источник Четьи-Миней).
**Версия данных**: `DATA_VERSION` в `src/ui/app.ts` управляет инвалидацией кэша. Увеличивайте её при реструктуризации данных (новые поля, перегруппированные пачки, обновлённые источники), чтобы пользователи получили свежие данные при следующей загрузке приложения.
**Манифест предзагрузки**: После добавления или удаления файлов данных перегенерируйте манифест:
```bash
npm run generate-manifest
```
Затем закоммитьте обновлённый `static/data/shared/preload-manifest.json` вместе с изменениями данных.
```bash
npm run build # продуктивная сборка
npm run preview # предпросмотр продуктивной сборки
```
## QA / Валидация
```bash
npx tsc --noEmit # Проверка типов TypeScript
npm run build # Проверка сборки
npx tsx scripts/validate-data.ts # Главный валидатор
npx tsx scripts/validate-i18n.ts # Полнота i18n (en/ru/cu)
npx tsx scripts/validate-tabs.ts # Согласованность вкладок/шаблонов богослужений
npx tsx scripts/validate-menaion.ts # Валидация данных минеи
npx tsx scripts/validate-prayer-rule.ts # Валидация структуры правила молитвы
npx tsx scripts/validate-triodion.ts # Валидация периода Триоди
npx tsx scripts/validate-pentecostarion.ts # Валидация Пятидесятницы
npx tsx scripts/validate-holy-week.ts # Валидация Страстной седмицы
npx tsx scripts/validate-great-canon.ts # Валидация Великого канона
npx tsx scripts/assembler-test.ts # Интеграционные тесты сборщика богослужений
```
## Категории литургических текстов (static/data/shared/services/)
- **Triodion** — 37 разделов (Масленица → Великий пост → Страстная седмица)
- **Pentecostarion** — 50 дней (Пасха → Все святые)
- **Menaion (daily)** — 367 ежедневных записей (одна на каждый день юлианского календаря)
- **Menaion (feasts)** — 34 неподвижных праздника с отдельными богослужениями
- **Canons** — Пареклит (будние дни, 8 гласов × 6 дней = 48), Осмогласник (воскресенье, 8 гласов), Великий канон
- **Services** — 78 богослужений с полными данными
- **Horologion / Sbornik / Prayer Rule / Akathists / Parimii / Paraclete / Irmologion** — коллекции суточного круга
- **Lives** — Жития святых (en/cu/ru, 1203/3046 с обогащённым life.text из Четьи-Миней и Булгакова)
## Структура проекта
```
src/
core/ — Логика предметной области (календарь, пасхалия, сборка богослужений, i18n)
ui/ — Компоненты представления (приложение, календарь, библия, богослужения, настройки)
main.ts — Точка входа
scripts/ — Конвертация данных, миграция, валидация, обогащение и инструменты CLI
static/
data/ — Литургические данные в формате JSON (отслеживаются в git)
fonts/ — Шрифты для церковнославянского языка
icons/ — Иконки PWA
```
## Лицензия
Такая же, как у оригинального Java-проекта.
## Документация
- **[DATA_EN.md](DATA_EN.md)** — Комплексная документация формата статических данных на английском языке
- **[DATA_RUS.md](DATA_RUS.md)** — Полная русская документация формата данных и процесса обогащения