product-engineering react node postgresql multi-tenant

A franchise-ready booking platform for a cat hotel, built solo in 4 months

July 26, 2026 ·Hospitality / Pet care ·4 min read

Results at a glance

Solo build, from static site to full back-office

4 months

Franchise-ready reservation platform

Multi-hotel

Lean infrastructure on an SMB budget

1 VPS

Tools

React · Vite · Material UI · Node.js · Express · PostgreSQL · Sequelize · Hetzner · PM2 · GitHub Actions

In 2022, Amandine, who runs Les Pachas d’Amandine , a cat hotel near Annecy in France, came to me with a problem she couldn’t solve. She wanted to franchise her concept, but no one could build the reservation platform she needed to make that possible. The agencies and IT service firms she approached either couldn’t do it or quoted well beyond what a growing small business could spend.

She didn’t need a generic booking tool. A cat hotel has its own rules: different room types per location, add-on care services, medication schedules per cat, opening and closing calendars, high and low seasons, and a mandatory trusted contact for every guest. And to franchise, each future location would have to run on the same system, with its own rooms, prices, and staff.

Booking calendar with high and low season, closing days and non-bookable days
Date selection with high and low season, closing days and non-bookable days, configured per hotel.
graph LR A[Public site + booking wizard
React] -->|REST API| B[Node.js / Express
JWT auth] B --> C[(PostgreSQL
Sequelize)] D[Multi-hotel back-office
owner & staff] -->|manage| B B -->|PDF confirmation
+ email| E[Guest] F[Push to master] -->|GitHub Actions SSH| G[Hetzner VPS
PM2]

The problem

Three things made this hard to solve off the shelf:

  1. A franchise needs one shared platform. Every future location has to live in the same system, each with its own rooms, prices, care options, and calendar, all manageable centrally.
  2. Generic booking tools don’t model a cat hotel. Care add-ons, medication schedules, per-hotel seasons and closing days, trusted contacts and vet details are not fields you get in an off-the-shelf reservation widget.
  3. The budget didn’t match the market. The firms that could build it quoted like an agency: a team, layers, and a margin. That put a real platform out of reach for a small business.

What she actually needed was a senior engineer she could talk to directly, who would build the specific thing her business required at a price it could afford.

What I built

Over four months, working directly with Amandine week after week, I built the whole thing end to end:

  • Public sites for the brand and each hotel.
  • A public reservation wizard: guests pick dates on a calendar that understands high and low season, closing days and non-bookable days, choose their accommodation type, add care services, and enter their cat’s details, medication, a mandatory trusted contact, and vet information.
  • Automatic PDF booking confirmations and email notifications.
  • A full multi-hotel back-office: create and configure hotels, room types, prices, care options and opening calendars per location; manage every reservation; with roles for a super admin and per-hotel staff.
  • Messaging, guest reviews, a live webcam viewer, and multi-language support.
Public reservation wizard: guest details, mandatory trusted contact and vet information
The public booking wizard: guests enter their details, a mandatory trusted contact, and their cat's vet information.

The stack

Everything in JavaScript and TypeScript, kept deliberately lean for the budget:

  • Front-end: React (Vite) with Material UI.
  • Back-end: Node.js and Express, with JWT authentication.
  • Database: PostgreSQL with Sequelize.
  • Infrastructure: a single Hetzner VPS, PM2 to keep the app running, and a GitHub Actions pipeline that deploys on every push to master (build, database migrations, restart). Docker for local development.

No overengineering, no unpredictable cloud bill. One well-run server, automated deploys, and a codebase a single person can fully own.

The outcome

The platform went live and runs today across the two Pachas hotels, Villaz and Beaumont, and it is designed so a new franchise location is simply another hotel added to the system. Amandine got the tool she had been told was too expensive to build, and the technical foundation to grow her concept.

Multi-hotel back-office managing Villaz and Beaumont with per-hotel roles
The multi-hotel back-office: one system managing Villaz, Beaumont and any future franchise location, with per-hotel roles.

Years on, the platform is still running and maintained (now on Node 20 with modern tooling) - which is the real test of software built to last.

What made it work

Direct access to a senior engineer. No account manager, no junior relay. Amandine explained her business, I built it, she tested with real bookings, and we iterated - every week, for four months. The cat-hotel specifics exist only because they came out of real conversations with the person who runs the business.

A budget that actually worked. The agency quotes assumed a team and a margin. One senior engineer, a lean stack, and a single VPS delivered the same outcome at a fraction of the cost - and left her owning 100% of the code.

Built to franchise from day one. Multi-hotel, multi-role, and per-location configuration were in the data model from the start, so growth never meant a rebuild.


Have a product an agency told you was out of budget, or one that needs to grow like a franchise? Book a free 30-minute call and let’s talk through it.