En ligne bizleen.com

Bizleen × Bizleen Orbit

Un seul produit, deux dépôts : le site public vend, l’espace connecté exécute.

En clair

Bizleen Orbit est un produit de Bizleen, un seul produit servi par deux dépôts.

Bizleen, le site public, vend : carte numérique, catalogue, horaires, réservation, en dix langues, avec Studio d’édition unifié et refonte marketing. Bizleen Orbit, l’espace connecté, exécute : heures, pourboires, congés, planning, paie estimée, sur la tablette partagée et sur le téléphone de chaque salarié en 14 langues. Les deux bases de données restent distinctes. Les deux dépôts sont désormais unis par un SSO bidirectionnel en production (cookie partagé sur .bizleen.com), sept canaux RPC unifiés, un arbitre de niveau d’espace (interne vs autonome) et une offre Team prête à la commercialisation à 20 €/mois avec provisionnement automatique.

Points forts

  1. SSO bidirectionnel actif en production

    Depuis le 16 septembre 2026, le SSO Bizleen est actif en production dans les deux sens : une session sur bizleen.com ouvre instantanément app.bizleen.com sans ressaisie de mot de passe, et depuis app.bizleen.com un gérant rejoint Bizleen Studio ou Insights par un jeton à usage unique valable 60 secondes. Fermer la session d’un côté révoque aussitôt l’accès de l’autre, testé et validé, consigné dans le journal d’audit.

  2. Sept canaux RPC unifiés

    Sept canaux typés relient les Workers dans le compte Cloudflare sans surface HTTP publique, dont BookingRpcV1, BizleenProvisioningV1, EtablissementSyncV1, MigrationReadiness, SessionsBizleenV1 et StatistiquesOrbitV1.

  3. Arbitre de niveau d’espace (interne / autonome)

    Contrat definirNiveauEspace : un établissement en gestion interne coupe la prise de rendez-vous publique autonome sans rien perdre de son cahier ni de ses droits d’équipe.

  4. Offre Team commercialisée et provisionnement direct

    L’offre Team à 20 €/mois (ou 200 €/an) est vendable en production via Stripe Checkout et provisionne automatiquement l’espace connecté Orbit dès la souscription.

  5. Réservation publique sans secret partagé

    Le formulaire est une iframe Bizleen Orbit embarquée sur bizleen.com, servie avec une CSP qui n’autorise que ce domaine à l’encadrer. La route publique ne demande aucune clé d’API : elle se défend par Turnstile, un champ piège, une limite de cadence et un opt-in par établissement. Bizleen n’a donc aucun accès à la base d’Orbit.

  6. Plat du jour saisi côté service, publié côté vitrine

    Le plat du jour se règle dans Bizleen Orbit, là où l’équipe prépare déjà le service, puis part vers l’API d’intégration Bizleen avec un jeton porteur propre à l’établissement. Ce jeton est un secret serveur : collé une seule fois par le super-admin, il n’est jamais renvoyé au navigateur ni visible dans les réglages de l’établissement.

  7. Traduit par lots, assumé asynchrone

    La traduction est produite côté Bizleen et met de 3 à 25 secondes, l’anglais arrivant avant les autres langues. Plutôt que d’ouvrir une route entrante à défendre, Bizleen Orbit ne bloque pas la saisie et repasse chercher le résultat selon une cadence dégressive (2,5 / 5 / 9 / 14 / 20 / 27 s), en s’arrêtant dès que les langues se stabilisent.

  8. Fiche client construite par le service, pas par un formulaire

    La réservation alimente un profil client durable : visites, absences non honorées, dernière venue, tout est recalculé depuis l’historique des réservations. Les préférences et allergies restent un champ de texte libre, choix délibéré : le service note ce que le client a dit, pas ce qu’une liste déroulante avait prévu.

  9. Le fichier client est un privilège de rôle, pas de présence

    Réservations et fiches clients sont réservées aux responsables et à la tablette d’accueil ; le rôle salarié n’a aucun droit global, et le code refuse même de lui pousser un lien vers cet écran. Un salarié en salle reçoit un récapitulatif anonymisé de son service (nombre de couverts attendus, plus grande table), jamais un nom, jamais une allergie.

  10. Deux modes d’accès, tous les deux assumés

    Chaque salarié a son compte personnel et une application installable sur son téléphone. En parallèle, un seul compte tablette par établissement couvre le poste d’accueil, avec deux codes distincts (serveur, manager) et une élévation de droits tracée qui expire au bout de 15 minutes. La tablette ne mémorise jamais de mot de passe, d’où une session longue et glissante plutôt qu’une reconnexion en plein service.

  11. Le comptable reçoit un document, pas un accès

    Le 1er de chaque mois, une tâche planifiée génère le détail des heures en PDF et l’envoie à un administrateur désigné, le comptable en copie (trois destinataires au maximum). Désactivé par défaut, activable par établissement. L’envoi est réservé par un verrou en base avant d’être effectué, avec rattrapage jusqu’au 3 du mois : jamais deux fois, jamais zéro fois.

  12. La vitrine réutilisée en salle

    En mode tablette, la carte publique Bizleen s’ouvre en plein écran depuis Bizleen Orbit. Le menu n’est donc jamais recopié dans l’outil interne : le client attablé et le client sur son téléphone regardent exactement la même page.

En chiffres

  • 1 Produit
  • 2 Dépôts
  • 4 Surfaces partagées
  • 7 Canaux RPC unifiés
  • 535 Documents Markdown
  • 674 850 Lignes de production
  • 28 350 Cas de test
  • 268 Migrations SQL

Le récit

Un seul produit, deux dépôts

Bizleen est né le 23 mai 2026 comme une carte de visite numérique : une page publique, un identifiant, un QR, une vCard. Onze jours plus tard, le 3 juin 2026, un restaurant avait besoin d’un outil pour pointer les heures, répartir les pourboires et estimer les salaires : il est né StaffClock, et il est devenu Bizleen Orbit. Pendant juin et juillet, les deux dépôts ne se parlaient pas.

Le 18 août 2026, j’ai écrit le premier document d’échange, pour une raison commerciale avant d’être technique : le mini-site savait afficher une grille de prestations tarifées, mais il ne savait pas dire si le créneau du mardi 15 heures était libre, et cette information vivait dans l’outil qui tenait déjà le planning de l’équipe. Le site public vend, l’espace connecté exécute. Les quatre pièces du pont ont été construites dans l’ordre : appairage, contrat de service, pont de catalogue, provisionnement.

Le 16 septembre 2026, le SSO unifié a été allumé en production : une session sur bizleen.com ouvre instantanément app.bizleen.com. Le 18 septembre, un cinquième canal RPC et l’arbitre de niveau d’espace ont été déployés, tandis que l’offre Team devenait vendable ; deux canaux supplémentaires ont suivi d’ici le 28 septembre, portant le total à sept. 674 850 lignes de production et 528 420 lignes de tests soutiennent aujourd’hui cette suite d’entreprise.

Décisions structurantes

Le point de saisie suit la fréquence de changement

Le catalogue permanent (prestations, variantes, prix, allergènes, accords) se gère dans Bizleen, parce qu’on l’édite rarement et longuement ; Orbit n’en garde qu’une projection en lecture seule. Le plat du jour se saisit dans Orbit, parce qu’on l’écrit tous les jours en trente secondes, dans l’outil déjà ouvert pour préparer le service. Le responsable ne change pas d’application au moment où il a le moins de temps, et personne ne saisit la même information deux fois.

Orbit appelle, Bizleen ne rappelle jamais

Publier le plat du jour est un appel sortant d’Orbit ; récupérer ses traductions en est un autre. Aucune route entrante n’a été ouverte sur Orbit pour recevoir un retour de Bizleen, donc aucune signature à vérifier, aucun rejeu à craindre sur Internet.

Quand le pont a eu besoin du sens inverse (une réservation à poser, un instantané de catalogue à publier), je ne l’ai pas ouvert sur le web : il passe par une liaison de service interne au compte Cloudflare, sans surface HTTP publique.

Un secret par établissement, jamais un identifiant public

Chaque méthode du contrat prend le secret de l’établissement comme premier argument ; aucune ne résout un établissement à partir d’un slug. Orbit ne garde que l’empreinte de ce secret, Bizleen le conserve chiffré et lié à la ligne qui le porte. Un seul appairage vivant à la fois, une révocation datée plutôt qu’effacée : le jour où il faut comprendre ce qui s’est passé, l’historique est encore là.

L’accès aux données sensibles suit le rôle, jamais le planning

Il aurait été séduisant d’ouvrir la fiche client au personnel présent ce jour-là. C’est un mauvais critère : la présence bouge toute la journée, et elle transforme un droit d’accès en effet de bord du planning. Les préférences et allergies restent donc réservées aux responsables et à la tablette d’accueil, et le salarié reçoit une information dimensionnée à son besoin réel : combien de couverts, quelle est la plus grande table.

Le challenge non trivial

Faire traverser un catalogue et des réservations entre deux bases qui ne se partagent rien

La tentation, quand deux dépôts servent le même produit, est de leur donner une base commune, ou de construire entre eux une couche de synchronisation que personne ne teste vraiment. J’ai gardé la contrainte inverse : deux bases, et tout ce qui traverse porte un nom, une version et un propriétaire. Le catalogue appartient à Bizleen ; Orbit n’en accepte un instantané que si sa révision est strictement croissante, et ses déclencheurs refusent d’en supprimer une ligne, si bien qu’une prestation retirée reste lisible dans les rendez-vous déjà pris.

Les réservations traversent dans l’autre sens par les canaux RPC, avec le secret de l’établissement à chaque appel et un registre d’idempotence qui rejoue la réponse d’origine quand un appel est répété. Le SSO s’appuie sur un cookie partagé (.bizleen.com) et révoque instantanément les sessions Orbit associées lors de la déconnexion.

Leçon retenue

Un seul produit n’oblige pas à une seule base. Ce qui relie deux dépôts doit rester plus petit qu’eux et entièrement nommé : quatre surfaces, sept canaux RPC, un secret par établissement, aucun stockage intermédiaire hors d’une projection en lecture seule.

C’est ce qui permet de déployer l’un sans redéployer l’autre, et de certifier en production chaque étape de la chaîne.

Fiche technique

Où ça tourne Cloudflare Workers · 2 bases D1 de production, jamais partagées · R2 · Hono 4 · 3 Durable Objects

Les technologies de Bizleen × Bizleen Orbit, par domaine
Site public Astro 6 SSR · Cloudflare Workers · D1 · R2 · Cloudflare Images · Stripe en REST direct · Bizleen Studio
Espace connecté Hono 4 · React 19 · D1 + Drizzle · 3 Durable Objects · Cron Cloudflare · 14 langues
Surfaces livrées iframe + CSP frame-ancestors · Turnstile · fetch serveur à serveur · Jeton porteur par établissement
Pont & SSO SSO bidirectionnel (.bizleen.com) · 7 canaux RPC unifiés · Liaison ORBIT_SESSIONS en prod · Révocation cascade
Données 2 bases D1 de production, jamais partagées · 128 tables (41 + 87) · 268 migrations SQL · Isolation par établissement
Envois Resend · Web push réabonnement autonome · PDF mensuel · Verrou d’envoi idempotent
Tests Vitest · 28 350 cas de test · 528 420 lignes de test · 70 200+ assertions

Un seul produit, deux dépôts : le site public vend, l’espace connecté exécute.