Zum Hauptinhalt springen

API

Die ChurchApps-API ist ein modularer Monolith -- eine einzige Codebasis, die sechs Datenmodule bereitstellt, jedes mit einer eigenen Datenbank. Diese Architektur bietet die organisatorischen Vorteile von Microservices (klare Grenzen, unabhängige Datenspeicher) bei der operativen Einfachheit eines einzigen Deployments.

Module

ModulZweck
MembershipPersonen, Gruppen, Haushalte, Berechtigungen
AttendanceGottesdienste, Sitzungen, Check-in-Datensätze
ContentSeiten, Abschnitte, Elemente, Streaming
GivingSpenden, Fonds, Zahlungsabwicklung
MessagingUnterhaltungen, Benachrichtigungen, E-Mail
DoingAufgaben, Pläne, Zuweisungen

Technologie-Stack

  • Laufzeitumgebung: Node.js 22.x mit TypeScript (ES-Module)
  • Framework: Express
  • Dependency Injection: Inversify (dekoratorbasiertes Routing)
  • Datenbank: MySQL -- eine Datenbank pro Modul, jede mit eigenem Connection Pool
  • Authentifizierung: JWT-basierte Authentifizierung über CustomAuthProvider
  • Deployment: AWS Lambda über das Serverless Framework v3

Ports

ProtokollPortBeschreibung
HTTP8084Haupt-REST-API
WebSocket8087Echtzeit-Socket-Verbindungen

Lambda-Funktionen

Im Deployment auf AWS läuft die API als sechs Lambda-Funktionen:

  • web -- Verarbeitet alle HTTP-Anfragen
  • socket -- Verwaltet WebSocket-Verbindungen
  • timer15Min -- Läuft alle 30 Minuten für E-Mail-Benachrichtigungen (der Name ist historisch bedingt)
  • timerMidnight -- Läuft täglich für Digest-E-Mails und Wartungsaufgaben
  • timerScheduledTasks -- Läuft täglich für fällige Automatisierungen und die Verarbeitung überfälliger Workflows
  • timerWebhooks -- Läuft jede Minute, um wartende ausgehende Webhooks zuzustellen

Gemeinsam genutzte Bibliotheken

Die API ist von zwei gemeinsam genutzten ChurchApps-Paketen abhängig:

  • @churchapps/helpers -- Basisdienstprogramme (DateHelper, ApiHelper usw.)
  • @churchapps/apihelper -- Express-Server-Dienstprogramme einschließlich Authentifizierung, Datenbank-Helfern und AWS-Integrationen
Info

Die API verwendet ES-Module ("type": "module" in package.json). Stellen Sie sicher, dass Ihre Imports die ES-Modul-Syntax verwenden.

In diesem Abschnitt

  • Lokale Einrichtung -- API klonen, konfigurieren und lokal ausführen
  • Datenbank -- Architektur einer Datenbank pro Modul, Schema-Skripte und Datenzugriffsmuster
  • Modulstruktur -- Controller, Repositories, Modelle und Authentifizierung
  • API-Schlüssel -- Persönliche Zugriffstoken für Skripte und Connectoren
  • Verbundene Apps (OAuth) -- Mandantenfähiger OAuth-Flow für Drittanbieter-Apps
  • Webhooks -- Ereignisbenachrichtigungen an externe Systeme senden
  • MCP-Server -- Model-Context-Protocol-Endpunkt, der die API für KI-Assistenten bereitstellt
  • Endpunktreferenz -- Vollständige REST-API-Dokumentation für alle Module