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
Solution rapide et locale pour la gestion des repas d'entreprise à Thiès et Dakar.
Translation pending
BusinessTypeScript · PLpgSQLGitHub @babs105OnlineOwner 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 ↗Solution ultra-légère de repas d'entreprise en 2 clics pour le Sénégal.
Développé selon le sprint fast-track 10 jours pour les 2 entreprises pilotes en essai gratuit.
PWA Mobile Employé (/p/[token]) :
localStorage).Espace RH (/rh) :
Nom, Téléphone), bouton direct de partage WhatsApp.Passerelle Traiteur (/resto/[token]) :
# 1. Cloner ou ouvrir le projet
cd "cantine Pro"
# 2. Installer les dépendances
npm install
# 3. Lancer le serveur de développement
npm run dev
# 4. Ouvrir dans le navigateur
# http://localhost:3000
supabase/schema.sql.companies, employes, menus_du_jour, commandes) et la vue d'agrégation..env.local :NEXT_PUBLIC_SUPABASE_URL=https://votre-id.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=votre-cle-anon
SUPABASE_SERVICE_ROLE_KEY=votre-cle-service-role
NEXT_PUBLIC_APP_URL=http://localhost:3000
L'Espace RH /rh est protégé par un code d'accès par entreprise (cookie signé, 30 jours).
Une entreprise s'inscrit seule sur /inscription (14 jours d'essai, offre Starter / Pro / Business) et se
connecte ensuite avec son identifiant ou son e-mail. Pour ouvrir une entreprise à la main, dans l'éditeur SQL Supabase :
INSERT INTO public.companies (nom, slug, heure_ouverture_vote, heure_limite_vote, rh_code_hash)
VALUES ('Nom Entreprise', 'nom-entreprise', '08:00', '11:10',
encode(digest('CODE-SECRET-RH', 'sha256'), 'hex'))
RETURNING id;
Le RH se connecte sur /rh/login avec le slug + le code, puis ajoute ses restaurants partenaires
dans l'onglet Restaurants (nom, WhatsApp, heure de livraison). Chaque restaurant a son propre lien
de confirmation /resto/<token>.
Base de démo : slug pilote-thies, code pilote-thies-2026 (à changer avant le go-live).
Pour le pilote, rien n'est envoyé automatiquement : le RH déclenche chaque envoi depuis l'Espace RH.
/resto/<token> ; à 11h30, le
l'Espace RH signale les restaurants qui ont reçu leur récap sans le confirmer.Envoi automatique (plus tard) : la route
/api/cron/clotureclôture et envoie les récaps via l'API WhatsApp Cloud ou un webhook. Pour l'activer, ajoutez dansvercel.json"crons": [{ "path": "/api/cron/cloture", "schedule": "10 11 * * 1-5" }](ou appelez-la depuis QStash / cron-job.org avecAuthorization: Bearer CRON_SECRET).
Variables d'environnement : voir .env.local.example.
Import Excel (.xlsx) ou CSV : colonnes Nom, Prénom, Téléphone, Service (détection automatique des en-têtes, doublons ignorés, numéros à 9 chiffres complétés en +221).
Menus de la semaine (lundi → vendredi) avec « Dupliquer la semaine précédente ».
Modification manuelle par le RH d'une commande (y compris après 11h10 et après la clôture) tant que le restaurant concerné n'a pas confirmé. Si le récap avait déjà été envoyé, il est recalculé et repasse « à renvoyer ». Une fois le restaurant confirmé, ses commandes sont verrouillées.
Alerte 11h30 dans l'Espace RH si le restaurant n'a pas confirmé, avec bouton d'appel.
Compte à rebours sur la PWA employé, verrouillage automatique à l'heure limite, heure d'enregistrement du choix.
Export Excel paie (/rh/export?mois=AAAA-MM&format=xlsx) : onglets Paie par service, Récap services, Facture traiteur, Détail jour par jour.
Onglet Paramètres : heures d'ouverture et de fin des commandes, jours de travail (lundi → dimanche, par défaut lundi → vendredi : la grille des menus, la duplication de semaine et les commandes des salariés les suivent), coordonnées, changement du code RH, état de l'abonnement.
Onglet Historique & Factures : historique jour par jour (détail par collaborateur), facture PDF du mois (/rh/facture?mois=AAAA-MM : synthèse, une facture par restaurant avec zone signature et cachet, ventilation par service), exports Excel et CSV.
Onglet Statistiques (DG / DAF) : dépense du mois, évolution sur 6 mois, coût moyen, plats les plus commandés, taux de participation par service.
PWA installable : bannière « Ajouter à l'écran d'accueil » (bouton sur Android, mode d'emploi sur iPhone) ; l'icône rouvre directement la page du salarié. Hors-ligne : un choix fait sans réseau est gardé dans le téléphone et envoyé au retour de la connexion (refusé par le serveur si l'heure limite est passée entre-temps).
/admin (code SUPERADMIN_CODE, 12 caractères min.) : liste des entreprises, MRR, encaissé du mois, taux de conversion, changement d'offre et de statut, prolongation d'essai, enregistrement d'un paiement Wave (prolonge l'abonnement de N mois).WAVE_NUMERO_PAIEMENT (optionnel) : numéro Wave affiché aux RH dans l'onglet Paramètres.Après mise à jour, relancez
supabase/schema.sql(ajouteemployes.service,commandes.modifie_par_rh, la tablerestaurants, l'heure d'ouverture des commandes, les colonnes d'abonnement et la tablepaiements; l'ancien traiteur unique devient automatiquement le premier restaurant).