Aller au contenu principal

Architecture

Ces pages sont des cartes de systèmes inter-repo : elles documentent comment un système central de ChurchApps fonctionne de bout en bout — dans les applications, les modules API, et les bibliothèques partagées — plutôt que comment un seul projet est configuré. Lisez-les avant de modifier le comportement d'un système ; lisez Configuration pour mettre un projet en place et la section API pour la référence au niveau du point de terminaison.

L'écosystème en un coup d'œil​

ChurchApps est ~20 référentiels indépendants (pas un monorepo). Les applications client parlent à un petit ensemble d'API backend sur HTTPS et WebSocket, et partagent du code via des paquets npm publiés sous la portée @churchapps.

┌────────────────────────────────┐            ┌──────────────────────────────────────────────┐
│ Clients │ │ Api — monolithe modulaire principal (AWS Lambda) │
│ │ │ │
│ B1Admin tableau de bord du personnel │ membership attendance content │
│ B1App portail des membres + │ giving messaging doing │
│ sites web d'église │ │
│ B1Checkin borne de pointage │ ◀───WS───▶ │ une base de données MySQL par module (6 au total) │
│ B1Mobile (maintenance uniquement) │ └──────────────────────────────────────────────┘
│ FreePlay lecteur de contenu TV │ ┌──────────────────────────────────────────────┐
└───────────────┬────────────────────┘ │ LessonsApi — Backend Lessons.church │
│ └──────────────────────────────────────────────┘
│ code partagé via npm (@churchapps/*)
▼
helpers (interfaces cross-app) · apphelper (composants React) · apihelper (utilitaires Express/serveur)

Deux règles structurelles façonnent tout ce qui est documenté dans cette section :

  1. Les modules sont isolés. Chaque module Api possède sa base de données et ses tables ; d'autres modules et applications n'accèdent à ses données que via ses points de terminaison REST. Voir Structure du Module.
  2. Le code partagé s'expédie comme paquets npm. Les applications n'importent jamais la source les unes des autres; tout ce qui est réutilisé traverse les limites du repo via @churchapps/helpers, @churchapps/apphelper, ou @churchapps/apihelper. Voir Bibliothèques Partagées.

Cartes de systèmes​

PageCe qu'elle couvreCouvre
Notifications et RappelsComment n'importe quoi dit à une personne quelque chose : les deux portes de dispatch, la chaîne d'escalade des canaux, et le moteur de rappelApi (messaging), B1Admin, B1App
Architecture en Temps RéelLe cadre de livraison WebSocket derrière le chat, la présence, et la livraison in-appApi (messaging), toutes les applications web
Notifications Push WebLe canal push du navigateur : clés VAPID, stockage des abonnements, livraisonApi (messaging), toutes les applications web
DonsFournisseurs et passerelles de paiement, flux de donations, fonds/lots, webhooks de passerelleApi (giving), apphelper, B1App, B1Admin
Inscriptions d'ÉvénementLe modèle commerce d'inscription: types de participants, sélections, codes de réduction, paiements via la passerelle de dons, et la liste d'attenteApi (content + giving), B1App, B1Admin
PointagesBorne et auto-pointage, le modèle de données de participation, routage de salle, la couche de sécurité des enfants, impression d'étiquettesB1Checkin, B1App, B1Admin, Api (attendance + membership)
Générateur de Site WebL'arborescence page/section/élément, le contrat et les rendus de type d'élément, blog, pages d'accès contrôlé, SEO, et génération d'IAApi (content), AskApi, helpers/apphelper, B1Admin, B1App
Routage et Multi-Site du Site WebComment une requête se résout en une église et un site spécifique, le modèle de données siteId multi-site, et l'edge de domaine personnalisé CaddyB1App, Api (membership + content), B1Admin
IntégrationsLa surface d'extension : OAuth, clés API, webhooks, fournisseurs de contenu, MCPApi, bibliothèques partagées, applications externes
Journal d'Audit et Lots AnnulablesAudit par défaut de chaque mutation au point d'étranglement du contrôleur, et la couche de lot qui rend les importations et les actions en masse annulablesApi (tous les modules), B1Admin, B1Transfer
MinistryStuffLe service de stockage payant et de crédit textos : identité JWT partagée, S2S clé de service, les sérums du fournisseur de textos et de stockage, facturation StripeMinistryStuffApi, MinistryStuffWeb, Api (content + messaging), paquets textos/apihelper, B1Admin
Apportez Votre Propre StockageLes églises lient Google Drive, Dropbox, OneDrive ou un bucket compatible S3 pour les téléchargements au-delà de 100 Mo libres : connexion OAuth, formes de téléchargement par fournisseur, la redirection de téléchargement publicApi (content + membership), paquets helpers/apphelper, B1Admin, B1App
Communs de ContenuLa colonne vertébrale d'actif/soumission partagée derrière le contenu généré par l'utilisateur inter-produit, et la file d'attente de modération réservée au personnel unique dans B1Admin Server AdminApi (commons module), B1Admin, WorshipCommons, Lessons.church, FreeShow
astuce

Lorsqu'un changement modifie le fonctionnement de l'un de ces systèmes — pas seulement une page à l'intérieur d'une application — la carte du système correspondante ici devrait être mise à jour dans le même effort. Cela maintient cette section fiable comme premier arrêt pour les nouveaux contributeurs.