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
Ocall Suite : des logiciels de gestion en ligne pour les entreprises africaines — parcs aquatiques, restaurants, et bientôt écoles, cliniques, RH, solaire et documents.
Translation pending
BusinessTypeScript · CSSGitHub @Souleymane-coulibalyOnlineOwner 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 ↗Logiciel SaaS B2B de gestion pour les établissements africains : parcs aquatiques et espaces de loisirs, restaurants, ou les deux. Lancement au Mali, en français, prix en FCFA (XOF).
Statut : Sprint 8 (en cours) — socle SaaS (Sprint 1), caisse POS restaurant (Sprint 2), POS Android avec impression thermique ESC/POS et tiroir-caisse (Sprint 3, validation sur matériel réel à faire), billetterie du parc avec QR codes et contrôle d'accès (Sprint 4, docs/BILLETTERIE-PARC.md), restaurant : commandes, cuisine KDS en temps réel, commandes QR, tables, stocks, réservations et tickets cuisine (Sprint 5, docs/RESTAURANT.md), bornes de commande, CRM, fidélité et planning du personnel (Sprint 6, docs/BORNES-CRM-FIDELITE-PLANNING.md), intelligence artificielle : import de carte, copilote analytique, commande vocale (Sprint 8, docs/INTELLIGENCE-ARTIFICIELLE.md), analyses, marges et exports CSV (Sprint 9, docs/ANALYSES.md), sites vitrines publics et domaines (Sprint 10, docs/SITES-VITRINES.md). Suivi détaillé : SPRINT_STATUS.md.
apps/
api/ API REST NestJS (/api/v1, Swagger sur /api/docs)
web/ Frontend Next.js App Router + Tailwind CSS
android/ Connecteur Android (WebView + pont matériel imprimante / tiroir), Kotlin
packages/
shared/ Contrats partagés : métiers, rôles, matrice RBAC, modules, navigation
database/ Schéma Prisma, migrations, scripts (db:check, super admin)
e2e/ Tests Playwright
docs/ Documentation (déploiement Railway, caisse POS, matériel, billetterie, checkpoints)
scripts/ Outils de dépôt (journaux complets des tests dans test-logs/)
| Couche | Technologie | Hébergement cible |
|---|---|---|
| Frontend | Next.js 15, React 19, Tailwind CSS 3 | Railway (web) |
| API | NestJS 11, class-validator, Swagger | Railway (api) |
| Base de données | PostgreSQL + Prisma 6 | Neon |
| CI | GitHub Actions | GitHub |
organizationId. L'organisation active vient
uniquement de la session côté serveur ; tout champ organizationId envoyé par le client est
refusé (400). Une ressource d'une autre organisation renvoie 404.httpOnly / SameSite=Lax (seul son hash SHA-256 est stocké), révocable
immédiatement (déconnexion, désactivation, suspension, changement de mot de passe)./api/v1/* sur le domaine du frontend, que Next.js
relaie vers l'API. Le cookie reste first-party, l'API n'est pas exposée en cross-site.packages/shared/src/rbac.ts, appliquée par l'API (gardes globales) et
reflétée par l'interface. Le SUPER_ADMIN est un rôle plateforme sans accès aux données métier.PARK | RESTAURANT | PARK_RESTAURANT. Seule évolution permise : vers PARK_RESTAURANT, sans perte.SubscriptionPlan), modifiables par le Super Admin, historisés dans
l'audit. Paiement Wave : interface PaymentProvider seulement — un abonnement ne sera jamais activé
sur la foi du frontend.corepack enable ou npm i -g [email protected])git clone https://github.com/Souleymane-coulibaly/park-management.git
cd park-management
pnpm install
# Variables d'environnement (jamais commitées)
Copy-Item apps/api/.env.example apps/api/.env
Copy-Item apps/web/.env.example apps/web/.env.local
# Éditez apps/api/.env : DATABASE_URL / DIRECT_URL (base Neon de développement)
# et TEST_DATABASE_URL / TEST_DIRECT_URL (branche Neon « test »)
| Environnement | Base | Variables |
|---|---|---|
| Développement | Base Neon existante | DATABASE_URL, DIRECT_URL |
| Test | Branche Neon test / base éphémère CI | TEST_DATABASE_URL, TEST_DIRECT_URL |
| Production | À choisir avant le déploiement | Variables Railway (non configurées) |
Jamais de migration destructrice ni de nettoyage de tests sur la base de développement. Détails : docs/DEPLOIEMENT-RAILWAY.md.
pnpm db:check # connexion et migrations appliquées (développement)
pnpm db:migrate:status # état des migrations
pnpm db:migrate:create -- nom_evolution # génère une migration (lecture seule sur la base)
pnpm db:migrate:check # refuse les migrations destructrices
pnpm db:migrate:deploy # contrôle puis applique les migrations en attente
pnpm db:bootstrap-super-admin -- --email [email protected] --first-name Awa --last-name Traoré
La migration initiale crée aussi les trois offres : Parc 25 000, Restaurant 35 000,
Parc + Restaurant 55 000 FCFA/mois. prisma migrate dev n'est pas utilisé : il peut proposer de
réinitialiser la base.
pnpm build:packages # compile packages/shared et packages/database
pnpm dev # API sur http://localhost:4000, web sur http://localhost:3000
pnpm lint # ESLint
pnpm format:check # Prettier
pnpm typecheck # TypeScript strict sur tous les paquets
pnpm test # tests unitaires (Jest)
pnpm db:migrate:deploy:test # migrations sur la base de test
pnpm test:integration # tests d'intégration API — base de TEST uniquement
pnpm build; pnpm test:e2e # tests Playwright (démarre l'API et le web construits, base de TEST)
⚠️ Les tests d'intégration et E2E créent puis suppriment des données. Ils s'exécutent uniquement
sur la base désignée par TEST_DATABASE_URL / TEST_DIRECT_URL (branche Neon test) et
refusent de démarrer si elle est absente ou identique à DATABASE_URL. Création de la branche :
voir docs/DEPLOIEMENT-RAILWAY.md. La CI GitHub Actions
utilise sa propre base PostgreSQL éphémère.
Voir docs/DEPLOIEMENT-RAILWAY.md. Aucun déploiement de production sans validation.