Hopp til hovedinnhold

Arkitektur

Disse sidene er tverr-repo systemkart: de dokumenterer hvordan et kjerne ChurchApps system fungerer ende-til-ende -- på tvers av appene, API-modulene og delte biblioteker -- i stedet for hvordan ethvert enkelt prosjekt er satt opp. Les dem før endring av et systems oppførsel; les Oppsett for å få et prosjekt kjørende og API-seksjonen for referanse på endepunktnivå.

Økosystemet på øyeblikk

ChurchApps er ~20 uavhengige depoter (ikke en monorepo). Klientapper snakker til et lite sett av backend APIer over HTTPS og WebSocket, og deler kode gjennom npm-pakker publisert under @churchapps omfanget.

┌────────────────────────────────┐            ┌──────────────────────────────────────────────┐
│ Klienter │ │ Api — kjerne modulær monolitt (AWS Lambda) │
│ │ │ │
│ B1Admin personal panel │ HTTPS │ medlemskap nærvær innhold │
│ B1App medlemsportal + │ ─────────▶ │ giving meldinger gjøring │
│ kirke nettsted │ │ │
│ B1Checkin innsjekk kiosk │ ◀───WS───▶ │ en MySQL database per modul (6 totalt) │
│ B1Mobile (vedlikehold-kun) │ └──────────────────────────────────────────────┘
│ FreePlay TV innholds spiller │ ┌──────────────────────────────────────────────┐
└───────────────┬────────────────┘ │ LessonsApi — Lessons.church backend │
│ └──────────────────────────────────────────────┘
│ delt kode via npm (@churchapps/*)

helpers (tverr-app grensesnitt) · apphelper (React komponenter) · apihelper (Express/server verktøy)

To strukturregler former alt dokumentert i denne seksjonen:

  1. Moduler er isolert. Hver Api modul eier sin database og sine tabeller; andre moduler og apper når dataene kun gjennom REST endepunktene. Se Modulstruktur.
  2. Delt kode sendes som npm pakker. Apper importerer aldri hverandres kilde; noe som gjenbrukes krysser repo grenser gjennom @churchapps/helpers, @churchapps/apphelper eller @churchapps/apihelper. Se Delte biblioteker.

Systemkart

SideHva den dekkerSpenn
Meldinger & påminnelserHvordan hva som helst forteller en person noe: de to dispatch dørene, kanal eskaleringskjeden og påminnelsesmotorenApi (meldinger), B1Admin, B1App
SanntidsarkitekturWebSocket leveringsrammeverket bak chat, tilstedeværelse og i-app leveringApi (meldinger), alle web apper
Web push-meldingerNettleseren push kanal: VAPID nøkler, abonnements lagring, leveringApi (meldinger), alle web apper
GivingBetalingsleverandører og gatewayer, donasjonsflyter, midler/batcher, gateway webhooksApi (giving), apphelper, B1App, B1Admin
HendelsespåmeldingerPåmeldingss commerce modell: deltaker typer, valg, rabattkoder, betalinger gjennom giving gateway, og ventelistenApi (innhold + giving), B1App, B1Admin
InnsjekkKiosk og selvinnsjekk, nærværsdatamodell, romruting, barnesikkerhetslaget, etikettutskriftB1Checkin, B1App, B1Admin, Api (nærvær + medlemskap)
NettstedbyggerSiden/seksjonen/element tre, element-type kontrakt og gjengiver, blog, tilgangsgater sider, SEO og AI genereringApi (innhold), AskApi, helpers/apphelper, B1Admin, B1App
Nettstedruting & multi-siteHvordan en forespørsel løser til en kirke og et spesifikkt nettsted, multi-site siteId datamodell og Caddy egendefinert-domene kantB1App, Api (medlemskap + innhold), B1Admin
IntegrasjonerUtvidelses overflaten: OAuth, API nøkler, webhooks, innholdsleverandører, MCPApi, delte biblioteker, eksterne apper
Revisjonslogg & Reversible batcherStandard-på revisjon av hver mutasjon ved kontroller choke punkt, og batch-laget som gjør import og bulk handlinger reversibleApi (alle moduler), B1Admin, B1Transfer
MinistryStuffDen betalte lagring & tekstkreditt service: delt-JWT identitet, service-nøkkel S2S, tekstering og lagring leverandør søm, Stripe faktureringMinistryStuffApi, MinistryStuffWeb, Api (innhold + meldinger), tekstering/apihelper pakker, B1Admin
Bring-Your-Own lagringKirker koble Google Drive, Dropbox, OneDrive eller en S3-kompatibel bøtte for opplastinger forbi gratis 100MB: OAuth koble, per-leverandør opplasting former, offentlig nedlasting omdirigeringApi (innhold + medlemskap), helpers/apphelper pakker, B1Admin, B1App
Tips

Når en endring endrer hvordan en av disse systemene virker -- ikke bare en side inne i en app -- matchende system kart her bør oppdateres i samme innsats. Det holder denne seksjonen tillitverdig som første stopp for nye bidragsytere.