Eventdeck: one API behind a web dashboard and an offline-first mobile app
How we rebuilt an event-hire booking system as a product, without dropping a single existing table.
- Industry
- Events & Equipment Hire
- Timeline
- Rebuilt in 2026, in production
- Client
- TabnCode (own product)

01 — Challenge
The problem
Event and wedding organisers run on bookings that change until the day itself: items are added, dates move, deposits arrive in parts, and the same chairs, tents and crockery cannot be promised to two events on one evening. The system we started from handled orders and customers, but it had a single user table with no roles, and no way to work without a connection.
That last point matters more than it sounds. The people who most need the booking in front of them are in a warehouse or at a venue, often with no signal. A rebuild also could not start from an empty database: the existing customers, orders, drafts and sales targets lived in the old schema, and they had to keep working on day one.
02 — Solution
What we built
We kept the data and replaced everything around it. The existing tables (customers, items, order bookings, booking items, drafts, targets) were preserved as they were, and the new capabilities were added beside them as new tables: roles and user roles, event categories, notifications, attendees and ticket types. Nothing was dropped or renamed, so the old records opened in the new system unchanged.
The backend is a Node.js and Express REST API over PostgreSQL with Sequelize, layered as controllers, services and repositories, with JWT authentication and role-based access. Availability is a first-class endpoint: before an item is added to a booking, the API checks it against every other booking that overlaps the event window.
Two clients sit on that one API. The web dashboard is React, TypeScript, Vite and Tailwind with React Query. The mobile app is React Native with a WatermelonDB local database, so it reads and writes offline and syncs when the connection returns. Both share the same seven modules: events and booking, customers and attendees, products and inventory, financials and forecasting, analytics, invoicing, and users and notifications.
Eventdeck is sold as a one-time purchase with the full source code, so it also had to be something another team can run: Docker Compose for the stack, migrations and seeds for the database, and on-demand backup and restore from the dashboard.
Stack & scope
- React
- React Native
- WatermelonDB
- Node.js
- PostgreSQL
- Offline-first
Next step
Want results like these?
Tell us what you want to build. In a 30-minute session we map the scope, the risks and the fastest route to something running.
We reply within 24h · hello@tabncode.com