Pular para o conteúdo principal

Arquitetura

Essas páginas são mapas de sistema entre repositórios: elas documentam como um sistema ChurchApps essencial funciona end-to-end — através dos aplicativos, módulos de API e bibliotecas compartilhadas — em vez de como qualquer projeto único é configurado. Leia-as antes de alterar o comportamento de um sistema; leia Configuração para executar um projeto e a seção de API para referência em nível de endpoint.

O ecossistema de uma olhada

ChurchApps é ~20 repositórios independentes (não um monorepo). Aplicativos cliente falam para um pequeno conjunto de APIs backend por HTTPS e WebSocket e compartilham código através de pacotes npm publicados sob o escopo @churchapps.

┌────────────────────────────────┐            ┌──────────────────────────────────────────────┐
│ Clients │ │ Api — core modular monolith (AWS Lambda) │
│ │ │ │
│ B1Admin staff dashboard │ HTTPS │ membership attendance content │
│ B1App member portal + │ ─────────▶ │ giving messaging doing │
│ church websites │ │ │
│ B1Checkin check-in kiosk │ ◀───WS───▶ │ one MySQL database per module (6 total) │
│ B1Mobile (maintenance-only) │ └──────────────────────────────────────────────┘
│ FreePlay TV content player │ ┌──────────────────────────────────────────────┐
└───────────────┬────────────────┘ │ LessonsApi — Lessons.church backend │
│ └──────────────────────────────────────────────┘
│ shared code via npm (@churchapps/*)

helpers (cross-app interfaces) · apphelper (React components) · apihelper (Express/server utilities)

Duas regras estruturais moldam tudo documentado nesta seção:

  1. Módulos são isolados. Cada módulo de Api possui seu banco de dados e suas tabelas; outros módulos e aplicativos alcançam seus dados apenas através de seus endpoints REST. Consulte Estrutura de Módulo.
  2. Código compartilhado é enviado como pacotes npm. Os aplicativos nunca importam o código-fonte um do outro; qualquer coisa reutilizada atravessa limites do repositório através de @churchapps/helpers, @churchapps/apphelper ou @churchapps/apihelper. Consulte Bibliotecas Compartilhadas.

Mapas de Sistema

PáginaO que cobreAbrange
Notificações e LembretesComo qualquer coisa diz a uma pessoa algo: as duas portas de despacho, a cadeia de escalação de canal e o mecanismo de lembreteApi (messaging), B1Admin, B1App
Arquitetura de Tempo RealO framework de entrega WebSocket por trás de chat, presença e entrega no aplicativoApi (messaging), todos os aplicativos web
Notificações Web PushO canal de push do navegador: chaves VAPID, armazenamento de inscrição, entregaApi (messaging), todos os aplicativos web
DoaçãoProvedores de pagamento e gateways, fluxos de doação, fundos/lotes, webhooks de gatewayApi (giving), apphelper, B1App, B1Admin
Registros de EventoO modelo de comércio de registro: tipos de participante, seleções, códigos de desconto, pagamentos através do gateway de doação e a lista de esperaApi (content + giving), B1App, B1Admin
Check-InsQuiosque e autoatendimento, modelo de dados de participação, roteamento de sala, camada de segurança infantil, impressão de etiquetaB1Checkin, B1App, B1Admin, Api (attendance + membership)
Construtor de WebsiteA árvore página/seção/elemento, o contrato de tipo de elemento e renderizadores, blog, páginas com acesso barrado, SEO e geração de IAApi (content), AskApi, helpers/apphelper, B1Admin, B1App
Roteamento de Website e Multi-SiteComo uma solicitação resolve para uma igreja e um site específico, o modelo de dados multi-site siteId, e a borda Caddy de domínio personalizadoB1App, Api (membership + content), B1Admin
IntegraçõesA superfície de extensão: OAuth, chaves de API, webhooks, provedores de conteúdo, MCPApi, bibliotecas compartilhadas, aplicativos externos
Log de Auditoria e Lotes DesfazerAuditoria padrão de cada mutação no ponto de estrangulamento do controlador e a camada de lote que torna importações e ações em massa desfazerApi (all modules), B1Admin, B1Transfer
MinistryStuffO serviço pago de armazenamento e créditos de envio de mensagens: identidade JWT compartilhada, serviço-chave S2S, costura de provedor de envio de mensagens e armazenamento, cobrança StripeMinistryStuffApi, MinistryStuffWeb, Api (content + messaging), pacotes texting/apihelper, B1Admin
Armazenamento Traga seu PróprioIgrejas vinculam Google Drive, Dropbox, OneDrive ou um balde compatível com S3 para uploads além do livre 100MB: conectar OAuth, formas de upload por provedor, redirecionamento de download públicoApi (content + membership), pacotes helpers/apphelper, B1Admin, B1App
Dica

Quando uma mudança altera como um desses sistemas funciona — não apenas uma página dentro de um aplicativo — o mapa de sistema correspondente aqui deve ser atualizado no mesmo esforço. Isso mantém essa seção confiável como a primeira parada para novos contribuidores.