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
翻訳待ち
No updates detected yet. GitHub releases will appear here.
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 ».
This is the beginning of the README. Read the rest at the original. Read the full README ↗