BusinessOS
Une application multi-tenant pour le CRM, la facturation et les réservations, avec Next.js et PostgreSQL.
Conçu comme une démonstration fonctionnelle pouvant servir de base à une solution métier personnalisée.
Consulter les preuves
Consultez le code, le modèle de données et les tests dans le dépôt.
Ce que j’ai construit
- Architecture full-stack Next.js 15 App Router avec React 19 et TypeScript 5.7
- Schéma relationnel multi-tenant à 15 modèles Prisma avec isolation stricte par entreprise
- 14 suites automatisées sur l’authentification, l’isolation et les flux métier
- Pipeline commercial CRM avec étapes interactives, répertoire contacts et suivi d'activité
- Moteur de facturation détaillée avec calcul de TVA et instantanés de factures immuables
- Système de réservation de rendez-vous avec planning d'équipe et gestion des fuseaux horaires
- Gestion intégrée des tâches, suivi des stocks, annuaire des collaborateurs et documents
- Contrôle d'accès par rôles (Admin, Manager, Collaborateur) avec cookies de session signés HTTP-only
- Déploiement en production vérifié sur Vercel avec 14 vues App Router, Server Actions et zéro avertissement
Fragmentation Opérationnelle & Incohérence des Données
Les entreprises de services gèrent souvent leurs activités quotidiennes avec des outils déconnectés : les contacts dans une application, la facturation dans une autre, les plannings sur des calendriers externes et les finances dans des tableurs. Cette dispersion brise l'intégrité relationnelle : les coordonnées clients divergent des comptes facturés, les rendez-vous se chevauchent et les documents financiers déjà émis risquent d'être corrompus rétroactivement lors de la mise à jour des fiches sources.
Noyau Relationnel Multi-Tenant & Isolation Stricte
BusinessOS établit une architecture de base de données relationnelle centralisée où les flux opérationnels circulent via des relations à clés étrangères validées. La conversion d'une opportunité commerciale se lie directement à une facture détaillée, la prise de rendez-vous vérifie les conflits d'agenda et les grands livres financiers agrègent les transactions réglées—le tout sécurisé par des frontières d'entreprise strictes côté serveur, des gardes d'autorisation par rôles et des instantanés de documents immuables.
03 / EXPÉRIENCE PRODUIT
Fonctionnalités & Parcours Utilisateur
Télémétrie Exécutive & Indicateurs Financiers
Une vue opérationnelle consolidée calculant le chiffre d'affaires actif, le volume du pipeline mensuel, les créances en attente, l'activité récente et le statut global.
Permet aux dirigeants et responsables de mesurer le flux opérationnel et la trésorerie en un coup d'œil, sans compilation manuelle.
Tableau de bord de télémétrie exécutive avec KPI de chiffre d'affaires, journaux d'audit et indicateurs financiers
Pipeline Commercial CRM & Répertoire Clients
Un suivi Kanban des opportunités commerciales avec fiches clients détaillées, historique des interactions, étapes de conversion et gestion des profils.
Structure les relations clients du premier contact à la conclusion de la vente, établissant des enregistrements relationnels réutilisés pour la facturation.
Pipeline commercial CRM avec suivi par étape et annuaire client centralisé
Facturation Détaillée & Instantanés Immuables
Un moteur de facturation intégré avec calcul automatique des lignes, gestion de la TVA, suivi des statuts de paiement et instantanés immuables des données émetteur/client à l'émission.
Garantit la conformité et l'exactitude comptable : les informations client et fiscales restent figées à l'émission, éliminant tout risque de dérive rétroactive.
Interface de facturation dynamique avec calcul des taxes et suivi des statuts de règlement
Planning des Réservations & Gestion des Fuseaux IANA
Un système de planification interactif avec gestion des capacités d'équipe, durées de prestations, normalisation des fuseaux IANA et prévention atomique des conflits côté serveur.
Élimine les doubles réservations et les décalages horaires lors des changements d'heure, tout en reliant chaque rendez-vous aux fiches clients et collaborateurs.
Calendrier de réservation avec gestion des disponibilités de l'équipe et des rendez-vous
Coordination des Tâches, Stocks & Annuaire RBAC
Modules opérationnels coordonnés comprenant la gestion des tâches avec statut et assignation, le suivi des stocks par référence SKU avec ajustements, et l'annuaire d'équipe avec contrôle d'accès RBAC.
Comble le fossé entre vente et exécution en permettant aux équipes de traiter les opérations quotidiennes dans un cadre d'entreprise et de rôles sécurisé.
Grand Livre Financier, Documents & Analytics BI
Analytics financiers en temps réel propulsés par Recharts, suivant la trésorerie nette, la ventilation des revenus et dépenses, l'archivage documentaire et les journaux d'audit.
Fournit une visibilité financière claire et en temps réel sur les performances passées, guidant les décisions budgétaires à partir de données réelles encaissées.
Grand livre financier et analytics de trésorerie en temps réel avec indicateurs de rentabilité nette
04 / ARCHITECTURE TECHNIQUE
Fondations Techniques & Architecture
Cloisonnement Multi-Tenant & Défense IDOR
Dans une architecture multi-tenant, un identifiant d'objet ne suffit pas à garantir la sécurité. Chaque requête en base et Server Action applique un filtrage composé par entreprise (where: { id, companyId }). Les clés étrangères reliant clients, factures, rendez-vous et tâches sont systématiquement validées par rapport à la session d'entreprise authentifiée avant liaison, prévenant toute fuite de données ou faille IDOR.
Immuabilité des Factures & Intégrité Comptable
Si un client modifie son nom, son adresse ou son numéro de TVA après l'émission d'une facture, une jointure relationnelle dynamique réécrirait silencieusement l'historique comptable. Pour garantir la conformité aux audits, l'émission de facture fige un instantané immuable des coordonnées client, de l'adresse de facturation, des taux de taxe et des lignes sur l'enregistrement même, renforcé par un verrou HTTP 409 interdisant la modification des factures réglées.
Gestion Déterministe des Fuseaux IANA & Anti-Conflit
Les rendez-vous et plannings peuvent subir des décalages d'heures ou de jours si les heures locales sont converties naïvement d'un fuseau à l'autre. Grâce à date-fns-tz, les rendez-vous sont analysés selon le fuseau IANA configuré de l'entreprise (ex : America/New_York) et stockés en UTC normalisé, avec validation explicite rejetant les heures locales inexistantes lors du passage à l'heure d'été (DST) et détection atomique des chevauchements.
Vérification automatisée (14 suites)
Le dépôt contient 14 suites et un script d’exécution commun. Elles couvrent l’authentification, l’isolation, les factures, les réservations et les flux inter-modules. Le code et les instructions permettent de reproduire les vérifications.
DANS LE CODE
Architecture et preuves
Le parcours d’une requête, les règles à préserver et les fichiers où les examiner.
Du navigateur à la base de données
- 01
Interface
Saisie et affichage
- 02
Session & rôles
Identité vérifiée côté serveur
- 03
Actions serveur
Validation et filtrage par entreprise
- 04
Prisma / PostgreSQL
Relations et persistance
L’identifiant d’entreprise vient de la session vérifiée. Les actions contrôlent l’appartenance des données et les rôles avant de modifier les enregistrements.
Historique des factures
Les informations de facturation, prix et taxes sont enregistrés sur la facture. Modifier une fiche client ne réécrit donc pas les valeurs historiques.
Consulter les tests de facturationVérifications automatisées
14 suites couvrent l’authentification, les accès inter-entreprises, la facturation, les réservations et les transitions entre modules. Le dépôt documente leur exécution ; aucun statut de réussite en direct n’est affiché ici.
Consulter les suites de tests05 / DÉCISIONS TECHNIQUES
Choix techniques et compromis
Isolation au niveau des requêtes
Problème : Un identifiant de fiche ne doit pas donner accès aux données d’une autre entreprise.
Déduire companyId de la session vérifiée et l’inclure dans les lectures et mutations serveur.
La requête contrôle l’appartenance même si un utilisateur modifie un identifiant dans une requête.
Compromis : Chaque nouvelle action nécessite le même filtrage et un test de régression inter-entreprises.
Instantanés pour l’historique des factures
Problème : Les coordonnées client et prix peuvent changer après l’émission d’une facture.
Stocker coordonnées, prix et taxes sur la facture plutôt que lire les données actuelles.
Une ancienne facture conserve les valeurs utilisées lors de son émission.
Compromis : Les instantanés dupliquent des données et exigent un flux de correction explicite au lieu de modifier silencieusement les factures émises.
Un modèle relationnel partagé
Problème : Ventes, factures et rendez-vous doivent conserver des liens cohérents vers clients et personnel.
Utiliser les relations PostgreSQL et les modèles Prisma pour relier les données opérationnelles.
Les clés étrangères rendent les liens explicites et limitent les enregistrements orphelins.
Compromis : Les évolutions du schéma exigent des migrations et les suppressions doivent tenir compte des données financières liées.
06 / ENSEIGNEMENTS & RETOUR D'EXPÉRIENCE
Ce que ce projet a démontré
Cohérence Relationnelle à Travers des Cycles Interconnectés
Le développement de BusinessOS a démontré que la robustesse d'un logiciel de gestion repose sur la rigueur de ses transitions inter-modules. Modéliser la répercussion de la signature d'un contrat sur la facturation et les journaux d'audit tout en préservant les contraintes référentielles a constitué la discipline architecturale clé.
L'Autorisation Serveur comme Seule Frontière de Sécurité
Masquer des éléments d'interface ou désactiver des boutons côté client n'offre aucune sécurité réelle. Dans un système multi-tenant, chaque Server Action et requête en base doit vérifier de façon autonome la session, l'appartenance à l'entreprise et les permissions du rôle avant toute mutation.
Normalisation Déterministe des Fuseaux pour la Planification
La planification d'équipe exige une référence de fuseau horaire d'entreprise faisant autorité. Convertir les saisies locales en horodatages UTC normalisés et interdire les créneaux fictifs lors des bascules d'heure d'été a permis d'éliminer les conflits de planning avant toute écriture en base.
Déploiement direct accessible en temps réel sur Vercel
Consultez l’implémentation et son historique.
Consultez les mises en page dans les captures et la démo.
Découvrez l’architecture et les choix de cette étude de cas.
Explorer l'Application en Direct
Accédez immédiatement au tableau de bord et aux fonctionnalités dans un environnement de test sécurisé.
🔒 Environnement en lecture seule · Données de test
ARCHITECTURE FULL-STACK & SYSTÈMES
Intéressé par la conception de systèmes complexes ou d'outils opérationnels ?
Je suis toujours ouvert aux échanges sur l'architecture multi-tenant, la modélisation de bases de données, le développement logiciel ou les opportunités d'ingénierie logicielle.
Vous recherchez spécifiquement un outil de pointage et de suivi d'adhérents ? Voir le système de gestion Gym CRM →