One room-booking app, deployed for three offices
A tablet on every meeting-room door and an admin console, both synced with the rooms in Exchange. We built it for Planet Fitness Mexico, then deployed it for IB Group's Fashion Depot and Grimatex; Grimatex was set up in a single day.
Meeting Rooms is a room-booking web app with two faces: a tablet fixed to each meeting-room door and an admin console, both synced with the Exchange rooms people already book in Outlook. We built it for Planet Fitness Mexico, then deployed it for two IB Group offices, Fashion Depot and Grimatex. That makes three separate installations with 22 rooms between them, and Grimatex was set up in one day, on 29 October 2026.
- Client
- IB Group · Planet Fitness Mexico
- Sector
- Corporate offices (fitness and fashion)
- Where
- Mexico
- Year
- 2026
- Deliverables
- Kiosk-mode door tablet
- Responsive admin console
- Exchange sync through Microsoft Graph
- Three branded deployments
The rooms were already in Exchange; nobody could see them from the door
All three offices had their rooms set up as resources in Exchange Online, and staff booked them from Outlook or Teams. Standing at the door, nobody could tell whether a room was free, and booking meant opening Outlook. The Planet Fitness PRD set two measurable goals: read a room's status in under 3 seconds and book it in under 30, with Exchange as the source of truth.
Each office has its own scale. Planet Fitness specified 8 rooms; Fashion Depot has 9 on floor 10 and Grimatex has 5 on floor 2.
One product, three repositories
The app mirrors the Exchange room calendars into its own database (Supabase) and writes each booking back to Exchange through Microsoft Graph, with application permissions. The door tablet runs the same web app full-screen in the browser, with no native app, on Android and Yealink devices. It shows the live status, the day's timeline and a button to book that room, and Supabase Realtime refreshes it when a booking changes. The console holds the dashboard, the room directory, room detail, a global agenda and settings, and it works on a phone too.
Each office has its own repository, Vercel project and Supabase project. Fashion Depot started in October 2026 as a fork of the Planet Fitness build and changed the booking form: a required company e-mail first, meeting type, headcount against room capacity, and Microsoft directory suggestions as you type. It also has 4 restricted rooms, where only one authorised person can book from the tablet. Grimatex was cloned from Fashion Depot on 29 October, with the IB Group logo, its own subtitle and its 5 rooms.
-
01
Readable from the corridor
Available, booked soon or in use, with the current meeting, its progress bar and the next booking. The tablet never shows e-mail addresses; those stay in the console.
-
02
Booking at the door
The form opens on the next free slot, with durations from 15 minutes to 2 hours and an availability check before confirming. The booking lands on the tablet's agenda and the app sends it to the room's Exchange calendar.
-
03
Recurring meetings in one row
A daily, weekly or monthly series is stored as one master row and projected day by day. The limit is 6 months at Planet Fitness and 3 months at IB Group.
-
04
Sync set per office
Each deployment has its own Vercel cron for Exchange: once a day at 07:00 for Planet Fitness, every 3 minutes for the two IB Group offices. It runs wherever the client's Exchange policy gives the app access to the room mailboxes.
The project in pictures
8 images · Open any image to see it full size.
The second and third offices came out of the first
The Planet Fitness repository has 41 commits between 16 March and 23 October 2026. Fashion Depot's has 4, between 6 and 23 October, and Grimatex's has 3, all on 29 October. Both IB Group offices started from a product that already handled the tablet, the console and Exchange, so the work was branding, rooms and each office's own rules.
We have not measured how many bookings come from the tablet versus Outlook, so we don't publish a number for it.
- 3 independent deployments, each with its own repository, Vercel and Supabase
- 22 rooms: 8 at Planet Fitness, 9 at Fashion Depot, 5 at Grimatex
- Grimatex set up in one day, on 29 October 2026
- Spanish interface and Mexico City time in all three offices
The questions we hear often
Does a meeting room booking display need a native app?
No. The tablet opens the web app full-screen in the browser. The offices run it on Android and Yealink devices.
Do bookings made on the tablet show up in Outlook?
Yes, once Exchange gives the app access. The app creates, updates and cancels the event in the room mailbox through Microsoft Graph, and bookings made in Outlook reach the app through the sync cron.
How long does it take to roll the app out to another office?
Grimatex took one day: we cloned the Fashion Depot deployment, changed the branding and subtitle, loaded its 5 rooms and created its Vercel and Supabase projects. Sync also needs the client's Exchange administrator to authorise the app on the room mailboxes.
Cases close to this one
Read more
Sí, Jefa · AI agent office
Sí, Jefa: 18 AI agents run a lunch company
Office lunches in Madrid: one dish a day at €8.90 excl. VAT, orders locked at 10:00. Seven surfaces in one app and La Oficina, a 3D scene where 18 AI agents run the operation.
Learn more →
Read more
Remittance network · Colombia → Venezuela
From a legacy Web Forms app to an owned remittance platform
We replaced the ASP.NET system of a Colombia → Venezuela remittance network: 8 roles, mandatory MFA, every money movement in Postgres functions and 132 automated tests, in about six weeks.
Learn more →
Read more
JCDecaux Mexico · Asset Manager
Inventory and assignments under control
Corporate asset manager for JCDecaux Mexico: QR-tagged inventory, signed assignment letters, contracts, PDF/CSV reports and Admin IT / Auditor roles. Paperless’s operational counterpart.
Learn more →Let's put it in production
Tell us your challenge. We reply within 24 business hours with an honest first read: if we can help, we'll say how; if not, we'll say who can.
I reply personally. No endless forms, no canned replies.





