Aller au contenu principal

API

L'API ChurchApps est un monolithe modulaire -- une base de code unique qui dessert six modules de données, chacun avec sa propre base de données. Cette architecture vous offre les avantages organisationnels des microservices (limites claires, magasins de données indépendants) avec la simplicité opérationnelle d'un seul déploiement.

Modules

ModuleObjectif
MembershipPersonnes, groupes, ménages, permissions
AttendanceServices, sessions, enregistrements d'accueil
ContentPages, sections, éléments, streaming
GivingDonations, fonds, traitement des paiements
MessagingConversations, notifications, e-mail
DoingTâches, plans, affectations

Pile technologique

  • Runtime : Node.js 22.x avec TypeScript (modules ES)
  • Framework : Express
  • Injection de dépendances : Inversify (routage basé sur décorateurs)
  • Base de données : MySQL -- une base de données par module, chacune avec son propre pool de connexions
  • Auth : Authentification basée sur JWT via CustomAuthProvider
  • Déploiement : AWS Lambda via Serverless Framework v3

Ports

ProtocolePortDescription
HTTP8084API REST principale
WebSocket8087Connexions de socket en temps réel

Fonctions Lambda

Lors du déploiement sur AWS, l'API s'exécute en tant que six fonctions Lambda :

  • web -- Gère toutes les requêtes HTTP
  • socket -- Gère les connexions WebSocket
  • timer15Min -- S'exécute toutes les 30 minutes pour les notifications par e-mail (le nom est historique)
  • timerMidnight -- S'exécute quotidiennement pour les e-mails de résumé et les tâches de maintenance
  • timerScheduledTasks -- S'exécute quotidiennement pour les automations dues et le traitement des flux de travail en retard
  • timerWebhooks -- S'exécute chaque minute pour livrer les webhooks sortants en attente

Bibliothèques partagées

L'API dépend de deux packages ChurchApps partagés :

  • @churchapps/helpers -- Utilitaires de base (DateHelper, ApiHelper, etc.)
  • @churchapps/apihelper -- Utilitaires de serveur Express y compris l'authentification, les assistants de base de données et les intégrations AWS
info

L'API utilise les modules ES ("type": "module" dans package.json). Assurez-vous que vos importations utilisent la syntaxe du module ES.

Dans cette section