← All workSystem 01 / 04
Live — cloud & on-premiseVenue-operations ERP

A whole park,run from one system.

A multi-tenant ERP for amusement and water parks: tickets and NFC wristbands at the gate, cashless cards charged by arcade machines, lockers, food counters, crowd analytics, CRM and payroll — online, or installed fully offline.

Client
Leisure & entertainment · India
Role
Full-stack engineer
Surfaces
Operations app · License console · IoT endpoints · On-prem installer
The brief

A park runs a dozen businesses at once — gates, games, food, lockers, rides, staff — usually on a dozen disconnected tools. The brief was one system where every counter, machine and team works from the same data.

Some venues also need it to run with no internet at all, on their own hardware. That turned licensing, installation and tamper-resistance into first-class engineering problems, not afterthoughts.

01

Operations app

Gate ticketing, NFC wristbands, game cards, lockers, rooms, outlets, kitchen tickets and reports.

02

Workforce & CRM

Attendance, shifts, leave, payroll and recruitment, plus campaigns and bulk messaging.

03

Machines & devices

IoT endpoints for arcade machines and ride cameras, POS card terminals and thermal printers.

04

License console

A control plane for tenants, modules and licences — and an offline installer for on-site venues.

System map

How it fitstogether.

Every surface talks to one platform core. This is the shape of the system as it runs in production.
Counter & gateHQ adminArcade machinesRide camerasStaff self-servicePlatform coreERP API+ license planeTicketing & NFCGame-card walletOutlets & kitchenHR & payrollLicensingCard-terminal paymentsThermal printersMongoDB + MySQLSMS & pushPDF & Excel
The hard parts

What made ithard — and how.

The problems that don't show up in a screenshot, but decide whether a product survives real users.
01

Licensing that survives being offline

The problem

An on-premise install can be copied to another machine, or have its clock wound back to stretch a licence.

The approach

Licences are RSA-signed and bound to a hashed hardware identity and the tenant, checked by a global hook on every request with a short cache. Signed time tokens detect clock rollback, and the licensing code is obfuscated at build time.

RSA signaturesHardware bindingTamper detection
02

Two databases, one application

The problem

Payroll and master data are deeply relational; gate and machine activity is high-volume and document-shaped.

The approach

Relational HR and custom-field data lives in MySQL, operational events in MongoDB — inside one API, with tenant and branch scoping enforced by shared hooks on both.

MySQLMongoDBMulti-tenancy
03

A cashless economy run by machines

The problem

Arcade machines charge players' cards directly, with no cashier in the loop.

The approach

Each machine call is authenticated, the card balance is checked against that machine's price per session, and every play is written to a machine log — with counter recharges feeding the same wallet.

IoTNFCWallet
04

Card terminals that reconcile themselves

The problem

Physical POS payments resolve asynchronously, and some bills are split across several payment modes.

The approach

A scheduled job polls pending terminal transactions with signed requests every minute and settles them to success, failure or expiry; bookings accept a validated breakdown across payment modes.

POSReconciliationSplit payments
05

Printing at the speed of a queue

The problem

Wristbands and receipts have to print instantly at busy counters, on thermal hardware.

The approach

The browser drives thermal printers directly with printer-native commands for barcodes and QR codes, and room assignment runs inside a database transaction so two counters can't hand out the same room.

Thermal printingTransactions
Inside the system

Everythingit does.

01Gate ticketing with promo codes and in/out logs
02NFC wristbands linked to bookings, with recharge
03Game-zone cards, machines and per-session pricing
04Timer games, lockers and room assignment
05Food counters with kitchen tickets and invoices
06Ride queues, incident logs and crowd analytics
07CRM campaigns, templates and feedback
08HR: attendance, shifts, leave, payroll, recruitment
09Twelve modules each venue can switch on or off
Built with
Built with
01

Backend

Node.js · TypeScript · FeathersJS · MongoDB · MySQL · Cron

02

Web

Next.js · React · MUI · FullCalendar · Charts

03

Hardware

NFC · IoT machines · POS terminals · Thermal printers

04

Platform

Razorpay · Stripe · SaaS + offline installer · CI/CD

Building something like this?

Let’s scope yours.