Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Découvrez les menuisiers, leurs réalisations et un espace commun pour vos devis, documents et échanges.
Translation pending
BusinessTypeScript · JavaScriptGitHub @johnyfetraOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Plateforme pour la menuiserie aluminium et les volets roulants à Madagascar. Vision complète : mettre en relation menuisiers vérifiés et clients (profils, avis, devis en ligne, suivi de chantier).
Version actuelle : une place de marché complète en deux espaces.
Le contact (e-mail et téléphone) est obligatoire à l'inscription, pour les deux types de compte.
npm install --legacy-peer-deps # contourne un bug npm avec les peer deps optionnelles
npm run dev # http://localhost:3000 → créez un compte sur /inscription
Node 20+. Aucune installation de base de données : en développement, une base Postgres embarquée (PGlite) est créée dans .data/ au premier lancement.
| Commande | Rôle |
|---|---|
npm test | Tests unitaires du calcul et des accès base (base en mémoire) |
npm run test:e2e:fresh | Tests de bout en bout (API + navigateur Chrome) sur une base jetable et un autre port : recommandé |
npm run test:e2e | Mêmes tests contre le serveur déjà lancé (npm run dev) : ajoute des comptes de test à votre base locale |
npm run lint · npm run build | Qualité et build de production |
npm run demo:photos · npm run demo:assets · npm run seed:demo | Données de démonstration : vraies photos libres (Pexels, Internet requis), logos et portraits (SVG), puis 12 menuisiers, 4 clients, 15 devis à tous les stades et des conversations (mot de passe motdepasse123) |
npm run admin:create | Crée un compte administrateur avec mot de passe généré (voir ci-dessous) |
npx drizzle-kit generate | Génère une migration après une modification de lib/db/schema.ts |
npm run dev # dans un terminal
npm run seed:demo # dans un autre (ADMIN_EMAIL / ADMIN_PASSWORD optionnels : accordent le badge « Vérifié »)
Les photos de réalisations viennent de Pexels (voir public/demo/CREDITS.md) : elles illustrent le type d'ouvrage et non de vrais chantiers ; les logos et portraits sont des illustrations générées (aucune vraie personne). Comptes : [email protected], [email protected], [email protected], [email protected], [email protected], [email protected] (menuisiers) ; [email protected], [email protected], [email protected], [email protected] (clients).
npm run admin:create # [email protected] + mot de passe généré
npm run admin:create -- --email [email protected] --name "Moi" # e-mail et nom choisis
npm run admin:create -- --password "MonMotDePasse" # mot de passe imposé
Le mot de passe généré est affiché une seule fois : notez-le. Relancer la commande avec le même e-mail réinitialise le mot de passe, lève une éventuelle suspension et ferme les sessions ouvertes. L'e-mail du compte est tenu pour vérifié. Les comptes protégés (PROTECTED dans lib/admin.ts) sont refusés. En local, arrêtez npm run dev avant (la base embarquée est prévue pour un seul processus à la fois) ; PGLITE_DIR désigne une autre base locale. En production, définissez DATABASE_URL pour viser la bonne base.
L'administrateur se connecte comme tout le monde et arrive sur /admin : vue d'ensemble (comptes, connectés, inscriptions, connexions, devis, chantiers terminés), gestion des comptes (/admin/comptes, avec la configuration et les devis de chaque compte), liste de tous les devis (/admin/devis, filtrable par menuisier et par client) avec, pour chacun, la feuille, le PDF, les remarques par ouvrage et la discussion (lecture seule) messagerie directe avec n'importe quel client ou menuisier (sous le profil AluMg), nombre de téléchargements de PDF de chaque devis, réseaux sociaux affichés dans le pied de page (/admin/reseaux) et journal des actions (/admin/journal). Voir docs/architecture.md, « Administration ».
| Zone | Écran | Rôle |
|---|---|---|
| Public | / | Accueil : présentation, menuisiers les mieux notés, comment ça marche |
| Public | /menuisiers, /menuisiers/[slug] | Annuaire filtrable, profil (à propos, réalisations, avis) ; la demande de devis exige un compte client |
| Public | /connexion, /inscription | Accès ; l'inscription choisit client ou menuisier |
| Menuisier | /tableau-de-bord | Indicateurs, demandes à traiter, chantiers en cours, montants par mois |
| Menuisier | /devis, /devis/[id] | Liste filtrable ; éditeur (client, ouvrages, remise, envoi au client, historique) |
| Menuisier | /devis/[id]/profils, /devis/[id]/profils/[ligne] | Besoin en profilés : achats, coût, marge, ouvrages partageant un profilé, vue 3D |
| Menuisier | /chantiers, /clients | Avancement des chantiers en %, liste des clients |
| Menuisier | /realisations, /profil-public | Portfolio photos, profil public et publication |
| Menuisier | /reglages, /reglages/profils | Entête, signature, tarifs, majorations, longueur de barre ; marché des profilés (prix et longueurs) |
| Client | /espace-client, /espace-client/nouvelle, /espace-client/devis/[id] | Mes demandes, nouvelle demande, suivi d'un devis |
| Commun | /compte | Nom, téléphone, mot de passe |
| Admin | /admin, /admin/comptes, /admin/comptes/[id], /admin/devis, /admin/devis/[id], /admin/journal | Statistiques de la plateforme, comptes (recherche, création, réinitialisation, suspension, rôle, badge, suppression, configuration et devis du compte), devis de toute la plateforme (lecture seule), journal |
Transversal : thème clair/sombre (barre latérale identique), 3 langues (français, English, Malagasy), mobile-first, accessible au clavier et aux lecteurs d'écran.
lib/model.ts et restent à valider avec des menuisiers malgaches.