Lumipat sa pangunahing nilalaman

Arkitektura

Ang mga pahina na ito ay cross-repo na mga mapa ng sistema: tinatanggal nila kung paano gumagana ang isang core ChurchApps system end-to-end -- sa mga app, ang Api modules, at ang mga shared libraries -- sa halip na paano ang anumang solong proyekto ay naitakda. Basahin ang mga ito bago baguhin ang behavior ng sistema; basahin ang Setup upang makakuha ng proyekto na tumatakbo at ang API section para sa reference ng endpoint-level.

Ang ecosystem sa isang sulyap

Ang ChurchApps ay ~20 independent repositories (hindi isang monorepo). Ang mga app ng kliyente ay nakikipag-usap sa isang maliit na hanay ng backend APIs sa HTTPS at WebSocket, at nagbabahagi ng code sa pamamagitan ng mga package ng npm na inilathala sa ilalim ng @churchapps scope.

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

Ang dalawang structural rules ay bumubuo sa lahat ng documented sa seksyon na ito:

  1. Ang mga module ay isolated. Bawat Api module ay may-ari ng database nito at ang mga talahanayan nito; ang iba pang mga module at app ay maaabot ang data nito lamang sa pamamagitan ng REST endpoints nito. Tingnan ang Module Structure.
  2. Ang shared code ay naghahatid bilang npm packages. Ang mga app ay hindi kailanman nag-import ng source ng iba; anumang ginagamit ay tumatawid ng mga hangganan ng repo sa pamamagitan ng @churchapps/helpers, @churchapps/apphelper, o @churchapps/apihelper. Tingnan ang Shared Libraries.

Ang mga mapa ng sistema

PageAno ang ito ay sumasaklawSpans
Notifications & RemindersKung paano ang kahit anong nagsasabi sa isang tao ng isang bagay: ang dalawang dispatch doors, ang channel escalation chain, at ang reminder engineApi (messaging), B1Admin, B1App
Real-time ArchitectureAng WebSocket delivery framework sa likod ng chat, presence, at in-app deliveryApi (messaging), lahat ng web apps
Web Push NotificationsAng browser push channel: VAPID keys, subscription storage, deliveryApi (messaging), lahat ng web apps
GivingAng payment providers at gateways, donation flows, funds/batches, gateway webhooksApi (giving), apphelper, B1App, B1Admin
Event RegistrationsAng registration commerce model: attendee types, selections, discount codes, payments sa pamamagitan ng giving gateway, at ang waitlistApi (content + giving), B1App, B1Admin
Check-InsAng kiosk at self check-in, ang attendance data model, room routing, ang child-safety layer, label printingB1Checkin, B1App, B1Admin, Api (attendance + membership)
Website BuilderAng page/section/element tree, ang element-type contract at renderers, blog, access-gated pages, SEO, at AI generationApi (content), AskApi, helpers/apphelper, B1Admin, B1App
Website Routing & Multi-SiteKung paano ang isang request ay nalulutas sa isang simbahan at isang partikular na site, ang multi-site siteId data model, at ang Caddy custom-domain edgeB1App, Api (membership + content), B1Admin
IntegrationsAng extension surface: OAuth, API keys, webhooks, content providers, MCPApi, shared libraries, external apps
Audit Log & Undoable BatchesAng default-on auditing ng bawat mutation sa controller choke point, at ang batch layer na gumagawa ng imports at bulk actions na undoableApi (lahat ng module), B1Admin, B1Transfer
MinistryStuffAng binayaran na storage & texting-credit service: shared-JWT identity, service-key S2S, ang texting at storage provider seams, Stripe billingMinistryStuffApi, MinistryStuffWeb, Api (content + messaging), texting/apihelper packages, B1Admin
Bring-Your-Own StorageAng mga simbahan ay nag-link ng Google Drive, Dropbox, OneDrive o isang S3-compatible bucket para sa uploads lampas sa libre 100MB: OAuth connect, per-provider upload shapes, ang pampublikong download redirectApi (content + membership), helpers/apphelper packages, B1Admin, B1App
Tip

Kapag ang pagbabago ay nagbabago kung paano gumagana ang isa sa mga sistemang ito -- hindi lamang isang pahina sa loob ng isang app -- ang matching system map dito ay dapat na i-update sa parehong pagsisikap. Pinapanatili nito ang seksyon na ito na mapagkakatiwalaan bilang ang unang tumitigil para sa mga bagong contributor.