Spring til hovedindhold

API

ChurchApps API er en modulariseret monolith -- en enkelt kodebase, der serverer seks tilsvarende moduler, hver med sin egen database. Denne arkitektur giver dig organisationsfordelene ved mikroservices (klare grænser, uafhængige datamagasiner) med den operationelle enkelthed for en enkelt installation.

Moduler

ModuleFormål
MembershipMennesker, grupper, husstande, tilladelser
AttendanceTjenester, sessioner, check-in-poster
ContentSider, afsnit, elementer, streaming
GivingDonationer, fonde, betalingsbehandling
MessagingSamtaler, meddelelser, e-mail
DoingOpgaver, planer, opgaver

Tech Stack

  • Runtime: Node.js 22.x med TypeScript (ES-moduler)
  • Framework: Express
  • Dependency Injection: Inversify (dekorator-baseret routing)
  • Database: MySQL -- en database pr. modul, hver med sin egen forbindelsespulje
  • Auth: JWT-baseret godkendelse via CustomAuthProvider
  • Deployment: AWS Lambda via Serverless Framework v3

Porte

ProtokolPortBeskrivelse
HTTP8084Hoved REST API
WebSocket8087Realtids-socket forbindelser

Lambda-funktioner

Når der implementeres på AWS, kører API'en som fire Lambda-funktioner:

  • web -- Håndterer alle HTTP-anmodninger
  • socket -- Administrerer WebSocket-forbindelser
  • timer15Min -- Kører hver 15. minut til e-mail-meddelelser
  • timerMidnight -- Kører dagligt til sammendrag af e-mail og vedligeholdelsesopgaver

Delte biblioteker

API'en afhænger af to delte ChurchApps-pakker:

info

API'en bruger ES-moduler ("type": "module" i package.json). Sørg for, at dine importer bruger ES-modulsyntaks.

I dette afsnit

  • Lokalt Setup -- Klon, konfigurér og kør API'en lokalt
  • Database -- Database-per-modul arkitektur, skemascripter og dataadgangsmønstre
  • Modulstruktur -- Controllere, repositories, modeller og godkendelse
  • Endpoint-reference -- Komplette REST API-dokumentation for alle moduler