Vai al contenuto principale

API

L'API di ChurchApps è un monolite modulare -- un unico codebase che serve sei moduli di dati, ciascuno con il proprio database. Questa architettura offre i vantaggi organizzativi dei microservizi (confini chiari, archivi dati indipendenti) con la semplicità operativa di un'unica implementazione.

Moduli

ModuloScopo
MembershipPersone, gruppi, nuclei familiari, permessi
AttendanceServizi, sessioni, registrazioni di check-in
ContentPagine, sezioni, elementi, streaming
GivingDonazioni, fondi, elaborazione pagamenti
MessagingConversazioni, notifiche, email
DoingAttività, piani, assegnazioni

Stack Tecnologico

  • Runtime: Node.js 22.x con TypeScript (moduli ES)
  • Framework: Express
  • Dependency Injection: Inversify (routing basato su decoratori)
  • Database: MySQL -- un database per modulo, ciascuno con il proprio pool di connessioni
  • Autenticazione: basata su JWT tramite CustomAuthProvider
  • Deployment: AWS Lambda tramite Serverless Framework v3

Porte

ProtocolloPortaDescrizione
HTTP8084API REST principale
WebSocket8087Connessioni socket in tempo reale

Funzioni Lambda

Quando distribuita su AWS, l'API viene eseguita come sei funzioni Lambda:

  • web -- Gestisce tutte le richieste HTTP
  • socket -- Gestisce le connessioni WebSocket
  • timer15Min -- Viene eseguita ogni 30 minuti per le notifiche email (il nome è storico)
  • timerMidnight -- Viene eseguita quotidianamente per email di riepilogo e attività di manutenzione
  • timerScheduledTasks -- Viene eseguita quotidianamente per le automazioni in scadenza e l'elaborazione dei flussi di lavoro in ritardo
  • timerWebhooks -- Viene eseguita ogni minuto per consegnare i webhook in uscita accodati

Librerie Condivise

L'API dipende da due pacchetti ChurchApps condivisi:

Info

L'API utilizza moduli ES ("type": "module" in package.json). Assicurati che i tuoi import usino la sintassi dei moduli ES.

In Questa Sezione

  • Configurazione Locale -- Clona, configura ed esegui l'API in locale
  • Database -- Architettura database-per-modulo, script di schema e pattern di accesso ai dati
  • Struttura dei Moduli -- Controller, repository, modelli e autenticazione
  • Chiavi API -- Token di accesso personale per script e connettori
  • App Connesse (OAuth) -- Flusso OAuth multi-tenant per app di terze parti
  • Webhook -- Invia notifiche di eventi a sistemi esterni
  • Server MCP -- Endpoint Model Context Protocol che espone l'API agli assistenti AI
  • Riferimento Endpoint -- Documentazione completa dell'API REST per tutti i moduli