Plateforme web complète pour une pension féline : comptes des propriétaires et de la pension, profils de chats avec portraits, et documents (carnets de vaccination, certificats de santé) réservés au propriétaire et à la pension.
Réservation & séjour
- Parcours de réservation client, calendrier des disponibilités, décompte du tarif, demande modifiable ou annulable tant qu’elle est en attente, entretien préalable en visio ou par téléphone en option.
- Devis calculé dès la demande, séjour et suppléments (au jour, à la visite, au forfait), montants figés sur le séjour : changer la grille ne rechiffre aucun séjour existant.
- Messagerie par séjour, avis de maison par chat (validé / avec réserve / refusé) et notifications in-app temps réel.
- Carnet de séjour quotidien, une note pouvant couvrir plusieurs chats, et espace Photos conservé 30 jours.
- Horaires d’arrivée et de départ, sur des créneaux d’accueil réglables.
- Facturation PDF générée à la volée.
Administration
- File « À traiter », les séjours qui attendent une décision ou un message client non lu, avec une épingle partagée.
- Fiches séjour et client en onglets, tableaux filtrables et triables.
- Encaissements en plusieurs versements (espèces, chèque, virement), reste dû visible dans la liste, et onglet Compta avec export CSV prêt pour Excel.
- Cycle de vie des séjours, marquer terminé, rouvrir, lecture seule une fois clôturé, archive au bout de 30 jours.
- Panneau « Aujourd’hui », calendrier cliquable et écran de réglages des tarifs et des créneaux.
Visio & temps réel
- Visioconsultations 1:1 en WebRTC, pair-à-pair, avec un relais TURN seulement quand la connexion directe échoue.
- Signaling SSE, et documents téléversables pendant la visio.
Design system
- Design system maison d’inspiration mid-century illustrée (façon Charley Harper).
- Typo & palette, Newsreader + Manrope + JetBrains Mono, palette crème + tons joaillerie.
Côté produit
Contexte. Une pension féline a besoin d’un seul outil, pour ses clients comme pour elle : demandes de séjour, devis, nouvelles des pensionnaires, visio, encaissements.
Mon rôle. Product Owner. D’abord une discovery : 58 cartes de départ revues par lots, dont 55 versées dans le backlog. Ensuite des sprints thématiques (réservation client, contenu du site public, administration), avec une recette à chaque livraison dont les retours repartent en correctifs. Le développement est confié à des agents IA, sur des cartes que je cadre.
Décisions.
- Un séjour clôturé passe en lecture seule, qu’il soit terminé ou annulé ; un séjour refusé n’en fait pas partie, parce que l’échange avec le client continue.
- L’encaissement reste ouvert sur un séjour terminé, le solde pouvant arriver après le départ des chats, mais se verrouille sur un séjour annulé.
- Annuler un séjour annule ses télé-rendez-vous, plutôt qu’un simple verrouillage de l’affichage.
- « Terminé » est un geste manuel, avec un retour arrière réservé à la pension, et le client est prévenu avec un renvoi vers sa facture et son carnet.
- L’archive n’est pas un statut mais un filtre, « clôturé depuis plus de 30 jours », compté à partir de la clôture pour qu’un encaissement tardif ne remette pas le compteur à zéro.
- Une promesse retirée plutôt que codée : une remise annoncée sur le site public n’était appliquée nulle part, elle a été retirée du site.
- Un ordre de livraison imposé : les versements multiples avant la colonne « encaissé », la fiche séjour à onglets avant les autres écrans à onglets.
Résultat. En ligne. Quatre sprints livrés et déployés (réservation client, contenu du site public, puis deux sprints d’administration), recette validée sur le parcours de réservation, et une revue de code adverse qui a évité une perte de données sur la modification d’une demande.
Stack Next.js + PostgreSQL + Prisma, CI GitHub Actions, en ligne sur chatpitre.gautierchuinard.com, auto-hébergée.
Full web platform for a cat boarding house: accounts for owners and for the boarding house, cat profiles with portraits, and documents (vaccination records, health certificates) reserved for the owner and the boarding house.
Booking & stay
- Client booking journey, availability calendar, price breakdown, request that can be edited or cancelled while pending, optional preliminary interview by video or phone.
- Quote computed at request time, stay and add-ons (per day, per visit, flat rate), amounts frozen on the stay: changing the price grid never re-prices an existing stay.
- Messaging per stay, house review per cat (approved / with reservations / declined) and real-time in-app notifications.
- Daily stay log, with one note able to cover several cats, and a Photos space kept for 30 days.
- Arrival and departure times, on configurable reception slots.
- PDF invoicing generated on the fly.
Administration
- “To handle” queue, stays awaiting a decision or with an unread client message, with a shared pin.
- Stay and client records in tabs, filterable and sortable tables.
- Payments in several installments (cash, check, bank transfer), balance due shown in the list, and an Accounting tab with a CSV export ready for Excel.
- Stay lifecycle, mark as completed, reopen, read-only once closed, archived after 30 days.
- “Today” panel, clickable calendar and a settings screen for prices and slots.
Video & real time
- 1:1 WebRTC video consultations, peer-to-peer, with a TURN relay only when the direct connection fails.
- SSE signaling, and documents can be uploaded during the call.
Design system
- In-house design system inspired by illustrated mid-century style (Charley Harper-like).
- Typography & palette, Newsreader + Manrope + JetBrains Mono, cream palette + jewel tones.
Product side
Context. A cat boarding house needs a single tool, for its clients as well as for itself: stay requests, quotes, news about the boarders, video calls, payments.
My role. Product Owner. First a discovery: 58 initial cards reviewed in batches, 55 of which went into the backlog. Then themed sprints (client booking, public site content, administration), with acceptance testing at each delivery whose feedback goes back as fixes. Development is handed to AI agents, on cards I frame.
Decisions.
- A closed stay becomes read-only, whether completed or cancelled; a declined stay is not included, because the conversation with the client goes on.
- Payments stay open on a completed stay, since the balance may come in after the cats have left, but are locked on a cancelled stay.
- Cancelling a stay cancels its video appointments, rather than merely locking the display.
- “Completed” is a manual action, with an undo reserved for the boarding house, and the client is notified with a link to their invoice and stay log.
- The archive is not a status but a filter, “closed more than 30 days ago”, counted from the closing date so that a late payment does not reset the clock.
- A promise removed rather than coded: a discount announced on the public site was applied nowhere, so it was removed from the site.
- An enforced delivery order: multiple installments before the “paid” column, the tabbed stay record before the other tabbed screens.
Outcome. Online. Four sprints delivered and deployed (client booking, public site content, then two administration sprints), acceptance testing passed on the booking journey, and an adversarial code review that prevented data loss when editing a request.
Stack Next.js + PostgreSQL + Prisma, GitHub Actions CI, online at chatpitre.gautierchuinard.com, self-hosted.