Обзор проектов
ChurchApps состоит из примерно 20 независимых репозиториев, опубликованных в организации ChurchApps на GitHub. Эта страница содержит полный перечень всех проектов, организованных по категориям, с указанием их фреймворков, портов и взаимосвязей.
Прежде чем начать
- Установите предварительные требования для категории проекта, над которой хотите работать
Бэкенд-API
Все API построены на Node.js, Express и TypeScript и развёрнуты в AWS Lambda через Serverless Framework.
| Проект | Назначение | Dev-порт | База данных |
|---|---|---|---|
| Api | Основной модульный монолит, охватывающий membership, attendance, content, giving, messaging и doing | 8084 | Отдельная MySQL БД на модуль (6 всего) |
| LessonsApi | Бэкенд Lessons.church | -- | Единая MySQL БД lessons |
| AskApi | AI-инструмент запросов на базе OpenAI | -- | -- |
Основной проект Api — это модульный монолит. Каждый модуль (membership, attendance, content, giving, messaging, doing) имеет собственную базу данных и доступен по подпути, например /membership или /giving. В продакшене они представлены как отдельные Lambda-функции за API Gateway.
Веб-приложения
| Проект | Фреймворк | Dev-порт | Назначение |
|---|---|---|---|
| B1Admin | React 19 + Vite + MUI 7 | 3101 | Панель управления церковью |
| B1App | Next.js 16 + React 19 + MUI 7 | 3301 | Публичное приложение для членов церкви |
| LessonsApp | Next.js 16 | 3501 | Фронтенд Lessons.church |
| B1Transfer | React + Vite | -- | Утилита импорта/экспорта данных |
| BrochureSites | Static | -- | Статические рекламные сайты церквей |
Мобильные приложения
Все мобильные приложения используют React Native с Expo.
| Проект | Назначение | Ключевые версии |
|---|---|---|
| B1Mobile | Приложение для членов церкви для iOS и Android | Expo 54, React Native 0.81 |
| B1Checkin | Приложение-киоск для регистрации | Expo |
| LessonsScreen | Отображение уроков на Android TV | Expo |
| FreePlay | Воспроизведение контента (включая TV OS) | Expo |
| FreeShowRemote | Мобильный пульт управления для FreeShow | Expo |
Десктоп
| Проект | Стек | Назначение |
|---|---|---|
| FreeShow | Electron 37 + Svelte 3 + Vite | ПО для презентаций и богослужений |
Общие библиотеки
Общий код публикуется в npm под областью @churchapps и потребляется как обычные npm-зависимости вышеуказанными проектами. Все общие пакеты находятся в одном репозитории — Packages — управляется как рабочее пространство Yarn и выпускается с помощью changesets.
| Пакет | Назначение | Используется |
|---|---|---|
@churchapps/helpers | Базовые утилиты и общие интерфейсы TypeScript (DateHelper, ApiHelper, CurrencyHelper и т.д.) | Все проекты |
@churchapps/apihelper | Утилиты Express-сервера (аутентификация, базовые контроллеры, доступ к базе данных, интеграции AWS) | Все API |
@churchapps/apphelper | Библиотека React-компонентов с подпутями модулей для входа, пожертвований, форм, markdown и создания веб-сайтов | Все веб-приложения |
@churchapps/content-providers | Абстракция провайдера контента третьих сторон (Lessons.church, Planning Center, Dropbox и другие) | Api, B1Admin, B1App, FreePlay |
@churchapps/integration-sdk | Набор инструментов интеграции B1.church: вебхуки, REST клиент, OAuth | Разработчики внешних интеграций |
@churchapps/texting | Абстракция провайдера SMS | Api |
См. Общие библиотеки для настройки рабочего пространства и рабочего процесса выпуска.
Взаимосвязи проектов
Frontend Apps Shared Libraries Backend APIs
-------------- ---------------- ------------
B1Admin ──────┐
B1App ──────┤ @churchapps/helpers ◄───── Api
LessonsApp ──────┼──► @churchapps/apphelper LessonsApi
B1Mobile ──────┤ AskApi
FreeShow ──────┘ @churchapps/apihelper ◄────┘
Все фронтенд-приложения зависят от @churchapps/helpers. Веб-приложения дополнительно зависят от пакетов @churchapps/apphelper. Все бэкенд-API зависят как от @churchapps/helpers, так и от @churchapps/apihelper.
Следующие шаги
- Переменные окружения — настройте файлы
.envдля подключения к API - Локальная установка API — настройте бэкенд-API локально