मुख्य सामग्री पर जाएं

Architecture

ये pages cross-repo system maps हैं: वे document करते हैं कि एक core ChurchApps system कैसे end-to-end काम करता है — apps, API modules, और shared libraries के across — बजाय इसके कि कोई single project कैसे set up होता है। system के behavior को change करने से पहले उन्हें read करें; project को run करने के लिए Setup read करें और endpoint-level reference के लिए API section पढ़ें।

The ecosystem at a glance

ChurchApps ~20 independent repositories है (monorepo नहीं)। Client apps एक small set के backend APIs से HTTPS और WebSocket के over talk करते हैं, और @churchapps scope के तहत published npm packages के through code share करते हैं।

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

दो structural rules सब कुछ को इस section में documented को shape करते हैं:

  1. Modules isolated हैं। प्रत्येक Api module अपना database और अपनी tables own करता है; अन्य modules और apps इसके data को केवल अपने REST endpoints के through reach करते हैं। Module Structure देखें।
  2. Shared code npm packages के रूप में ships करता है। Apps कभी एक दूसरे के source को import नहीं करते; कुछ भी reused @churchapps/helpers, @churchapps/apphelper, या @churchapps/apihelper के through repo boundaries को cross करता है। Shared Libraries देखें।

System maps

PageWhat it coversSpans
Notifications & Remindersकैसे कुछ भी एक person को कुछ कहता है: two dispatch doors, channel escalation chain, और reminder engineApi (messaging), B1Admin, B1App
Real-time ArchitectureChat, presence, और in-app delivery के पीछे WebSocket delivery frameworkApi (messaging), सभी web apps
Web Push NotificationsBrowser push channel: VAPID keys, subscription storage, deliveryApi (messaging), सभी web apps
GivingPayment providers और gateways, donation flows, funds/batches, gateway webhooksApi (giving), apphelper, B1App, B1Admin
Event RegistrationsRegistration commerce model: attendee types, selections, discount codes, payments giving gateway के through, और waitlistApi (content + giving), B1App, B1Admin
Check-InsKiosk और self check-in, attendance data model, room routing, child-safety layer, label printingB1Checkin, B1App, B1Admin, Api (attendance + membership)
Website BuilderPage/section/element tree, element-type contract और renderers, blog, access-gated pages, SEO, और AI generationApi (content), AskApi, helpers/apphelper, B1Admin, B1App
Website Routing & Multi-Siteकैसे एक request एक church को एक specific site को resolve करता है, multi-site siteId data model, और Caddy custom-domain edgeB1App, Api (membership + content), B1Admin
IntegrationsExtension surface: OAuth, API keys, webhooks, content providers, MCPApi, shared libraries, external apps
Audit Log & Undoable BatchesDefault-on auditing हर mutation का controller choke point पर, और batch layer जो imports और bulk actions को undoable बनाता हैApi (सभी modules), B1Admin, B1Transfer
MinistryStuffPaid storage & texting-credit service: shared-JWT identity, service-key S2S, texting और storage provider seams, Stripe billingMinistryStuffApi, MinistryStuffWeb, Api (content + messaging), texting/apihelper packages, B1Admin
Bring-Your-Own StorageChurches link Google Drive, Dropbox, OneDrive या एक S3-compatible bucket uploads के लिए free 100MB के पास: OAuth connect, per-provider upload shapes, public download redirectApi (content + membership), helpers/apphelper packages, B1Admin, B1App
सुझाव

जब एक change alters करता है कि एक के ये systems कैसे काम करते हैं — केवल एक के अंदर एक page नहीं — matching system map यहाँ को updated किया जाना चाहिए same effort में। यह इस section को trustworthy रखता है new contributors के लिए first stop के रूप में।