API
ChurchApps API er en modulær monolitt -- en enkelt kodebase som betjener seks distinkte moduler, hver med sin egen database. Denne arkitekturen gir deg de organisatoriske fordelene ved mikrotjenester (klare grenser, uavhengige datalager) med den operasjonelle enkelheten til en enkelt distribusjon.
Moduler
| Modul | Formål |
|---|---|
| Membership | Personer, grupper, husstander, tillatelser |
| Attendance | Gudstjenester, økter, innsjekking |
| Content | Sider, seksjoner, elementer, strømming |
| Giving | Gaver, fond, betalingsbehandling |
| Messaging | Samtaler, varsler, e-post |
| Doing | Oppgaver, planer, tildelinger |
Teknologistabel
- Kjøretid: Node.js 22.x med TypeScript (ES-moduler)
- Rammeverk: Express
- Avhengighetsinjeksjon: Inversify (dekoratørbasert ruting)
- Database: MySQL -- én database per modul, hver med sin egen tilkoblingspool
- Autentisering: JWT-basert autentisering via
CustomAuthProvider - Distribusjon: AWS Lambda via Serverless Framework v3
Porter
| Protokoll | Port | Beskrivelse |
|---|---|---|
| HTTP | 8084 | Hoved-REST-API |
| WebSocket | 8087 | Sanntids socket-tilkoblinger |
Lambda-funksjoner
Når API-et distribueres til AWS, kjører det som fire Lambda-funksjoner:
web-- Håndterer alle HTTP-forespørslersocket-- Administrerer WebSocket-tilkoblingertimer15Min-- Kjøres hvert 15. minutt for e-postvarslertimerMidnight-- Kjøres daglig for oppsummeringse-poster og vedlikeholdsoppgaver
Delte biblioteker
API-et avhenger av to delte ChurchApps-pakker:
@churchapps/helpers-- Basisverktøy (DateHelper, ApiHelper osv.)@churchapps/apihelper-- Express-serververktøy inkludert autentisering, databasehjelpere og AWS-integrasjoner
Info
API-et bruker ES-moduler ("type": "module" i package.json). Sørg for at importene dine bruker ES-modulsyntaks.
I denne seksjonen
- Lokalt oppsett -- Klon, konfigurer og kjør API-et lokalt
- Database -- Database-per-modul-arkitektur, skjemaskript og datatilgangsmønstre
- Modulstruktur -- Kontrollere, repositories, modeller og autentisering
- Endepunktreferanse -- Komplett REST API-dokumentasjon for alle moduler