Casablanca · Rabat · Marrakech
Le temps, tel qu’il
se vit au Maroc.
Réservation en ligne, acomptes et rappels WhatsApp pour les salons, les cabinets, les kinés et le lavage auto. Un agenda qui sait déjà que le vendredi a un trou à midi et que le Ramadan décale l’heure du pays.
Sans carte bancaire. Le catalogue de votre métier est déjà rempli.
Vendredi 13 mars
Salon Atlas · Salma
Rien de tout ça n’est saisi à la main : le vendredi vient d’un modèle de fermeture, l’heure du Ramadan du fuseau, le tampon de la prestation.
Un moteur, plusieurs métiers
Le salon et le cabinet tournent sur le même code.
La différence entre un coiffeur et un kinésithérapeute, chez nous, tient dans un fichier de configuration : le catalogue, les questions posées au client, le délai d’annulation, et ce contre quoi le créneau est réservé. Choisissez le vôtre — ce qui s’affiche est exactement ce que vous aurez le premier jour.
Mode d’allocation
Réservé sur une personne
Deux rendez-vous ne peuvent pas partager le même coiffeur à la même heure.
- Le client s’appelle
- Client · زبون
- Le prestataire s’appelle
- Coiffeur · حلاق
- Annulation libre jusqu’à
- 2 h avant
- Plusieurs prestations d’affilée
- Oui
- Séries récurrentes
- Non
- Forfaits prépayés
- Non
Catalogue livré le premier jour
Cheveuxالشعر
- Coupe homme30 min + 570 DH
- Coupe femme45 min + 10150 DH
- Coloration90 min + 15400 DH30% d’acompte
- Brushing30 min + 5100 DH
Esthétiqueالتجميل
- Manucure45 min + 5120 DH
- Hammam & gommage60 min + 15200 DH50% d’acompte
Ce qu’on demande à la réservation
- Demande particulière
Ajouter un métier, c’est ajouter un objet dans un fichier de configuration. Aucune migration de base, aucune branche if (vertical === …) dans le code métier.
L’heure marocaine
Onze mois à UTC+1, un mois à UTC+0.
Le Maroc recule d’une heure pendant le Ramadan, puis avance à nouveau. La plupart des agendas stockent un horaire d’ouverture comme un instant — et décalent silencieusement d’une heure pendant quatre semaines. Vos clients arrivent alors une heure trop tôt.
Le problème
« Ouvert à 9 h » n’est pas un instant
Une règle récurrente enregistrée comme date absolue se décale au changement de fuseau. Le 1er du Ramadan, tout votre planning glisse.
Notre choix
Minutes depuis minuit + jour de semaine
Les horaires d’ouverture sont stockés en heure locale relative ; le fuseau est résolu à chaque instant, pas une fois pour toutes. Les rendez-vous, eux, sont des timestamptz.
La preuve
Testé contre la vraie base tzdata
La suite vérifie qu’un jour de transition fait bien 23 ou 25 heures, et qu’un créneau du Ramadan tombe à la bonne minute. 68 tests, sans base de données.
12:30 → 14:30
Pause prière, chaque vendredi, en un clic
+2 h
Décalage Ramadan appliqué à la journée entière
Jours fériés
Calendrier marocain fourni, fermetures ponctuelles incluses
Deux clients, un créneau
Le double-booking est refusé par la base, pas par le code.
Deux personnes confirment le créneau de 10 h dans la même seconde. Les deux passent la vérification, parce qu’aucune des deux transactions ne voit encore la ligne de l’autre. Une vérification applicative perd toujours cette course — alors on ne la lui confie pas.
packages/db/prisma/constraints.sql
ALTER TABLE "Appointment" ADD CONSTRAINT no_staff_overlap
EXCLUDE USING gist (
"tenantId" WITH =,
"staffId" WITH =,
tstzrange("blockStartAt", "blockEndAt", '[)') WITH &&
);Le second COMMIT échoue en 23P01 et l’API répond 409. Le client voit « ce créneau vient d’être pris », pas une confirmation qui n’existe pas.
Bornes ouvertes à droite
Le rendez-vous de 10:30 suit celui de 10:00
L’intervalle est fermé à gauche, ouvert à droite : deux rendez-vous qui se touchent ne se chevauchent pas. C’est comme ça qu’un salon chargé tourne réellement.
Cloisonnement
Une requête qui oublie son WHERE ne renvoie rien
Chaque table porte son tenantId et une politique RLS Postgres. L’API se connecte avec un rôle non-superutilisateur — sinon RLS serait contourné — et /api/ready le vérifie en continu.
Vérifié au déploiement
La preuve tourne avant la mise en production
Isolation des tenants et refus du double-booking sont testés contre une vraie base ; si l’un des deux tombe, le déploiement s’arrête.
Là où sont vos clients
WhatsApp, l’arabe, et le dirham.
Vos clients ne téléchargeront pas une application. Ils ouvrent un lien, choisissent en arabe ou en français, et reçoivent leur rappel là où ils lisent déjà leurs messages.
Rappels
WhatsApp d’abord, SMS et e-mail en repli
Confirmation, rappel la veille, annulation, demande d’avis. Si le message WhatsApp ne part pas, le canal suivant prend le relais.
Bilingue
Arabe RTL et français, pas une traduction plaquée
La page de réservation se retourne entièrement en arabe, avec une taille et une interlignes ajustées pour les diacritiques.
Acomptes
30 % à la réservation, le reste sur place
Le pourcentage se règle par prestation : rien pour une coupe, la moitié pour un hammam, la totalité pour une téléconsultation. Carte ou espèces.
Un numéro, un client
06 12 34 56 78 = +212612345678
Le numéro de téléphone est l’identité du client. Les cinq façons de l’écrire au Maroc convergent vers une seule fiche.
Tarifs
En dirhams, hors TVA, sans engagement.
30 jours d’essai gratuit : 3 membres d’équipe, 100 réservations et 100 conversations WhatsApp. Aucune carte demandée.
Soloفردي
149 DH/ mois
- 2 membres d’équipe
- 1 établissement
- 300 réservations / mois
- 500 conversations WhatsApp / mois
- Paiement en ligne et acomptes
Salonصالون
Le plus choisi349 DH/ mois
- 8 membres d’équipe
- 2 établissements
- Réservations illimitées
- 2.000 conversations WhatsApp / mois
- Paiement en ligne et acomptes
- Page de réservation à vos couleurs
- Statistiques et export
Chaîneسلسلة
899 DH/ mois
- 40 membres d’équipe
- 20 établissements
- Réservations illimitées
- 10.000 conversations WhatsApp / mois
- Paiement en ligne et acomptes
- Page de réservation à vos couleurs
- Statistiques et export
Le chiffrement des données de santé et la piste d’audit sont inclus dans toutes les offres, y compris l’essai — un cabinet ne devrait pas avoir à payer un supplément pour protéger ses patients.
وقتي
Votre temps, rendu à votre métier.
Trente jours pour voir si l’agenda tient debout un vendredi chargé. Ensuite seulement, on parle d’abonnement.