91 lines
7.1 KiB
Markdown
91 lines
7.1 KiB
Markdown
# 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МБ источник Четьи-Миней).
|
||
|
||
```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)** — Полная русская документация формата данных и процесса обогащения |