Skip to content

ConstructoAI/Open_Source_Code

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Constructo AI — Code source ouvert

Plateforme ERP SaaS multi-locataires (multi-tenant) pour l'industrie de la construction (Québec / Canada / États-Unis), publiée sous licence Apache 2.0.

Ce dépôt réunit le code source du produit Constructo AI : un ERP web complet et plusieurs applications satellites (pointage employés, portail B2B/B2C, appels d'offres, vitrine immobilière, estimation publique, rendu 3D), bâties sur un backend FastAPI (Python) et des frontends React (TypeScript / Vite), avec PostgreSQL (un schéma par locataire) comme base de données.

Le code est fourni « tel quel ». Aucune clé d'API, aucun secret et aucune donnée client réelle ne figure dans ce dépôt : toutes les valeurs sensibles sont lues depuis des variables d'environnement (voir .env.example).

Conçu et développé par Sylvain Leduc, fondateur de Constructo AI Inc.


Modules

Module Emplacement Description
ERP ERP_REACT/ ERP principal : CRM, devis/soumissions, production (bons de travail, Gantt, Kanban), comptabilité, inventaire, paie, RH, documents, assistants IA.
Pointeur MOBILE_REACT/ Application PWA de pointage des employés (hors ligne, notifications push, photos de pointage).
B2B / B2C ERP_REACT/backend/routers/b2b*.py Portail clients / fournisseurs (devis, bons de commande, suivi).
SEAOP SEAOP_REACT/ Plateforme d'appels d'offres publics + répertoire d'entrepreneurs et d'ouvriers.
Immobilier IMMO_REACT/ Vitrine immobilière + back-office promoteur (fonds de prévoyance, Loi 16).
Estimation Express ESTIMATION_EXPRESS_REACT/ Sous-application publique d'estimation assistée par IA (crédits prépayés).
Rendu 3D ERP_REACT/backend/routers/gemini_image.py, cao*.py, hover.py Modélisation 3D (DAO « cao2 »), rendus photoréalistes, plan → 3D.

Architecture

  • Monorepo : un backend FastAPI par application + un frontend React par application.
  • Multi-tenant : isolation par schéma PostgreSQL (un schéma public partagé + un schéma par locataire). Le provisionnement des locataires est géré par tenant_manager.py et auto_repair_tenants_startup.py.
  • Co-hébergement : le service ERP (ERP_REACT) monte aussi, sous des sous-chemins, les applications satellites — /mobile (Pointeur), /immo (Immobilier), /seaop (SEAOP), /estimation (Estimation Express). Chaque application peut également fonctionner de manière autonome.
  • Modules partagés : plusieurs modules Python à la racine du dépôt sont des dépendances partagées du backend (couche base de données, provisionnement, facturation Stripe, suivi de l'usage IA, utilitaires). Voir la structure ci-dessous.

Structure du dépôt

.
├── ERP_REACT/                  ERP principal (backend FastAPI + frontend React)
│   ├── backend/                erp_api.py + ~88 routers + erp_database/auth/stripe/config
│   └── frontend/               SPA React (pages, composants, stores Zustand, i18n FR/EN)
├── MOBILE_REACT/               Pointeur (backend FastAPI + PWA React)
├── IMMO_REACT/                 Immobilier (backend + frontend)
├── SEAOP_REACT/                Appels d'offres (backend + frontend)
├── ESTIMATION_EXPRESS_REACT/   Estimation publique (frontend ; backend dans ERP_REACT)
├── METRE_PDF/                  Module de métré sur PDF (backend + config)
├── modules/email_manager/      Chiffrement + envoi de courriels (IMAP/SMTP)
│
├── erp_database.py             Modules Python partagés (dépendances du backend) :
├── tenant_manager.py             provisionnement des locataires
├── database_config.py            configuration du pool PostgreSQL
├── stripe_manager.py             abonnements et crédits prépayés
├── ai_usage_tracker.py           suivi de l'usage et des coûts IA
├── security_utils.py             hachage de mots de passe, validation, sanitation
├── devis_manager.py              logique des devis
├── attachments_manager.py        gestion des pièces jointes
├── cache_manager.py              cache applicatif
├── cad_viewer.py                 lecture de fichiers CAO
├── ... (autres modules de migration / optimisation / audit)
│
├── requirements.txt            dépendances Python
├── .env.example                gabarit de configuration (à copier en .env)
├── LICENSE                     Apache License 2.0
└── NOTICE

Pile technique

  • Backend : Python 3.11+, FastAPI, Uvicorn, psycopg2, PostgreSQL 15+.
  • Frontend : React 18, TypeScript, Vite, Zustand, Tailwind CSS.
  • Paiements : Stripe.
  • IA : Anthropic Claude (assistants, estimation), Google Gemini (rendu d'images).
  • Intégrations : Hover (plan → 3D), VAPI (agent vocal), QuickBooks, IMAP/SMTP.

Installation

Prérequis

  • Python 3.11+
  • Node.js 18+
  • PostgreSQL 15+
  • (optionnel) un compte pour chaque service externe utilisé (Stripe, Anthropic, etc.)

1. Configuration

cp .env.example .env
# Renseignez au minimum DATABASE_URL et un secret JWT.
# Les autres variables ne sont requises que pour les fonctionnalités correspondantes.

2. Backend (ERP)

python -m venv .venv
source .venv/bin/activate          # Windows : .venv\Scripts\activate
pip install -r requirements.txt

cd ERP_REACT
uvicorn backend.erp_api:app --reload --port 8003

3. Frontend (ERP)

cd ERP_REACT/frontend
npm install
npm run dev                         # développement
# ou : npm run build                pour un bundle de production

Les applications satellites (MOBILE_REACT, IMMO_REACT, SEAOP_REACT, ESTIMATION_EXPRESS_REACT) suivent le même schéma : un backend/ FastAPI (le cas échéant) et un frontend/ Vite, chacun avec son propre .env.example.


Configuration (variables d'environnement)

Toutes les valeurs sensibles proviennent de l'environnement. Principales variables (voir .env.example et les .env.example de chaque application pour la liste complète) :

Variable Rôle
DATABASE_URL Chaîne de connexion PostgreSQL (obligatoire).
ERP_JWT_SECRET Secret de signature des jetons JWT de l'ERP (obligatoire).
ANTHROPIC_API_KEY Clé Anthropic Claude (assistants IA, estimation).
GOOGLE_GEMINI_API_KEY Clé Google Gemini (rendu d'images 3D).
STRIPE_SECRET_KEY / STRIPE_WEBHOOK_SECRET Paiements et abonnements.
SMTP_HOST / SMTP_USER / SMTP_PASSWORD Envoi de courriels.
HOVER_CLIENT_ID / HOVER_CLIENT_SECRET Intégration Hover (plan → 3D).

Les fonctionnalités dont les variables ne sont pas renseignées se désactivent proprement (elles ne bloquent pas le démarrage).


Notes

  • Ce dépôt est extrait d'un produit en exploitation. Certaines fonctionnalités (paiements, IA, agent vocal, Hover) nécessitent des comptes tiers et les clés correspondantes dans .env.
  • La base de données est multi-locataires : le premier démarrage crée les structures partagées ; le provisionnement d'un locataire crée son schéma dédié.
  • Aucune donnée de production, aucun identifiant réel et aucun secret ne sont inclus. Fournissez vos propres valeurs via .env.

Un mot du créateur

Constructo AI est né sur le terrain, de l'expérience concrète d'un entrepreneur en construction et en fabrication. J'ai voulu bâtir l'outil que j'aurais aimé avoir dès le départ : un écosystème complet et cohérent, pensé pour la réalité des chantiers d'ici — du premier devis jusqu'à la comptabilité.

En ouvrant ce code, mon souhait est simple : le partager avec la communauté — entrepreneurs, développeurs et étudiants — pour qu'il serve, inspire et continue de s'améliorer. Merci de prendre le temps de l'explorer ; c'est une fierté et un privilège de le rendre accessible.

Sylvain Leduc, fondateur et développeur de Constructo AI Inc.

Auteur

Sylvain Leduc — fondateur de Constructo AI Inc. (Farnham, Québec, Canada)
constructoai.ca · info@constructoai.ca

Licence

Distribué sous licence Apache 2.0. Voir les fichiers LICENSE et NOTICE.

Copyright 2026 Constructo AI Inc. — Créé par Sylvain Leduc.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages