Aller au contenu principal

Architecture du backend

Le backend (backend/) est une application NestJS organisée en modules fonctionnels sous backend/src/modules/. Chaque module possède généralement son propre contrôleur, service et DTO, et la plupart des services injectent le dispatcher de webhooks pour émettre des événements lors des changements d'état (voir Système de webhooks).

Modules

ModuleRôle
api-keysCRUD et vérification des clés API ; stocke un hash et suit la date de dernière utilisation.
auth-extendedÉtend la bibliothèque d'authentification avec la gestion des mots de passe, p. ex. permettre aux utilisateurs OIDC de définir un mot de passe local.
clientsGère les fiches clients.
companyGère le profil de l'entreprise, l'image de marque des PDF (couleurs, polices) et les modèles d'e-mail.
cronTâches planifiées en arrière-plan.
dangerOpérations sensibles nécessitant une vérification par OTP (p. ex. suppression de compte).
dashboardAgrège les indicateurs clés : totaux de factures, tendances de revenus, statuts de devis, nombre de clients.
directoryNavigateur de fichiers restreint utilisé pour la sélection de fichiers de plugins/config.
invitationsCrée et valide des codes d'invitation pour l'inscription multi-utilisateurs.
invoicesCRUD des factures, génération PDF/XML, suivi des paiements, lignes d'articles.
loggerFlux d'événements (server-sent events) de logs en temps réel, filtrable par catégorie/niveau/utilisateur.
payment-methodsStocke et active/désactive les moyens de paiement, rattachés aux factures/devis.
pluginsRegistre et chargeur des plugins intégrés et externes. Voir Système de plugins.
quotesCRUD des devis, génération PDF, flux de signature, suivi d'expiration.
receiptsGénération de reçus à partir des factures, PDF, envoi par e-mail.
recurring-invoicesGénération planifiée de factures de façon récurrente.
signaturesFait le lien avec le flux de signature des devis pour les signataires anonymes.
statsStatistiques financières mensuelles/annuelles.
webhooksAbonnements aux webhooks définis par l'utilisateur et envoi d'événements vers des points de terminaison externes.

Couche de données

Le backend utilise Prisma comme ORM, avec le schéma défini dans backend/prisma/schema.prisma. SQLite est la base par défaut pour les installations locales/Docker ; PostgreSQL est pris en charge via DATABASE_URL.

Documentation de l'API

Le backend expose une interface Swagger/OpenAPI en direct sur /api/docs (spécification JSON sur /api/docs-json), générée à partir des décorateurs @nestjs/swagger sur chaque contrôleur. Voir la page Référence API.