Zum Hauptinhalt springen

Architektur

Diese Seiten sind bereichsübergreifende Systemkarten: Sie dokumentieren, wie ein Kern-ChurchApps-System end-to-end funktioniert -- über die Apps, die API-Module und die gemeinsamen Bibliotheken -- anstatt wie ein einzelnes Projekt eingerichtet wird. Lesen Sie diese vor dem Ändern des Verhaltens eines Systems; Lesen Sie Setup zum Ausführen eines Projekts und der API-Bereich für Endpoint-Level-Referenz.

Das Ökosystem auf einen Blick

ChurchApps ist ~20 unabhängige Repositories (nicht ein Monorepo). Client-Apps sprechen über HTTPS und WebSocket mit einem kleinen Satz von Backend-APIs und teilen Code über npm-Pakete, die unter dem @churchapps-Umfang veröffentlicht sind.

┌────────────────────────────────┐            ┌──────────────────────────────────────────────┐
│ 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)

Zwei strukturelle Regeln prägen alles, das in diesem Bereich dokumentiert wird:

  1. Module sind isoliert. Jedes Api-Modul besitzt seine Datenbank und seine Tabellen; andere Module und Apps erreichen ihre Daten nur über ihre REST-Endpunkte. Siehe Modul-Struktur.
  2. Gemeinsamer Code sendet wie npm-Pakete. Apps importieren nie den Quellcode voneinander; alles, das wiederverwendet wird, überquert Repo-Grenzen durch @churchapps/helpers, @churchapps/apphelper oder @churchapps/apihelper. Siehe Gemeinsame Bibliotheken.

System-Karten

SeiteWas sie abdecktBereiche
Benachrichtigungen & ErinnerungenWie alles jemandem etwas sagt: die zwei Abgänge, die Kanal-Eskalations-Kette und die Erinnerungs-EngineApi (messaging), B1Admin, B1App
Real-time-ArchitekturDas WebSocket-Lieferwerk hinter Chat, Präsenz und In-App-LieferungApi (messaging), alle Web-Apps
Web-Push-BenachrichtigungenDer Browser-Push-Kanal: VAPID-Schlüssel, Abonnement-Speicherung, LieferungApi (messaging), alle Web-Apps
SpendenZahlungsanbieter und Gateways, Spenden-Flows, Fonds/Batches, Gateway-WebhooksApi (giving), apphelper, B1App, B1Admin
Veranstaltungs-RegistrierungenDas Registierungs-Handels-Modell: Teilnehmer-Typen, Auswahlmöglichkeiten, Rabatt-Codes, Zahlungen über das Spendentor und die WartelisteApi (content + giving), B1App, B1Admin
Check-InsKiosk- und Self-Check-in, das Anwesenheits-Datenmodell, Raum-Routing, die Kindersicherheits-Schicht, Etikett-DruckB1Checkin, B1App, B1Admin, Api (attendance + membership)
Website-BuilderDer Seiten-/Abschnitts-/Element-Baum, der Element-Typ-Vertrag und Renderer, Blog, Zugangsgegründete Seiten, SEO und KI-GenerierungApi (content), AskApi, helpers/apphelper, B1Admin, B1App
Website-Routing & Multi-SeiteWie eine Anfrage zu einer Kirche und einer bestimmten Seite auflöst, das Multi-Seite siteId-Datenmodell und die benutzerdefinierte Domäne der Caddy-KanteB1App, Api (membership + content), B1Admin
IntegrationenDie Erweiterungs-Oberfläche: OAuth, API-Schlüssel, Webhooks, Inhalts-Anbieter, MCPApi, gemeinsame Bibliotheken, externe Apps
Audit-Log & Undoable-BatchesStandard-On-Auditing jeder Mutation am Controller-Erstickungspunkt, und die Batch-Schicht, die Importe und Massen-Aktionen rückgängig machtApi (all modules), B1Admin, B1Transfer
MinistryStuffDer bezahlte Speicher- & SMS-Kredit-Service: gemeinsamer JWT-Identität, Service-Schlüssel S2S, die SMS- und Speicher-Anbieter-Nähte, Stripe-AbrechnungMinistryStuffApi, MinistryStuffWeb, Api (content + messaging), texting/apihelper packages, B1Admin
Bring-Your-Own StorageKirchen verknüpfen Google Drive, Dropbox, OneDrive oder ihren eigenen S3-kompatiblen Bucket für Uploads jenseits des kostenlosen 100MB: OAuth verbinden, pro-Anbieter Upload-Formen, die öffentliche Download-WeiterleitungApi (content + membership), helpers/apphelper packages, B1Admin, B1App
Tipp

Wenn eine Änderung ändert, wie eines dieser Systeme funktioniert -- nicht nur eine Seite in einer App -- sollte die übereinstimmende Systemkarte hier in der gleichen Anstrengung aktualisiert werden. Das hält diesen Bereich vertrauenswürdig als die erste Anhaltstelle für neue Mitwirkende.