Hopp til hovedinnhold

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

ModulFormål
MembershipPersoner, grupper, husstander, tillatelser
AttendanceGudstjenester, økter, innsjekking
ContentSider, seksjoner, elementer, strømming
GivingGaver, fond, betalingsbehandling
MessagingSamtaler, varsler, e-post
DoingOppgaver, 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

ProtokollPortBeskrivelse
HTTP8084Hoved-REST-API
WebSocket8087Sanntids socket-tilkoblinger

Lambda-funksjoner

Når API-et distribueres til AWS, kjører det som fire Lambda-funksjoner:

  • web -- Håndterer alle HTTP-forespørsler
  • socket -- Administrerer WebSocket-tilkoblinger
  • timer15Min -- Kjøres hvert 15. minutt for e-postvarsler
  • timerMidnight -- Kjøres daglig for oppsummeringse-poster og vedlikeholdsoppgaver

Delte biblioteker

API-et avhenger av to delte ChurchApps-pakker:

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