Synaplan
기업을 위한 오픈소스 AI 플랫폼
Ocall Suite는 아프리카 기업을 위한 온라인 관리 소프트웨어입니다
Ocall Suite : des logiciels de gestion en ligne pour les entreprises africaines — parcs aquatiques, restaurants, et bientôt écoles, cliniques, RH, solaire et documents.
비즈니스TypeScript · CSSGitHub @Souleymane-coulibaly온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
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.