Custom Built CRM, Booking System & Subscription Platform

Member Portal and Business Management Platform

Project

The Hub Club

Portfolio Case Study

Platform: React Native using Expo, Express.js, Replit, PostgreSQL
Status: Live production system serving real members at The Hub family venue

Project overview
The Hub Club is a full-stack, members-only loyalty, booking, and business management platform built for a real family entertainment venue. The platform was designed to replace a fragmented operational setup that relied on paper stamp cards, manual bookings, spreadsheets, and disconnected systems. The result is a single, fully integrated ecosystem that manages memberships, bookings, payments, loyalty, and in-venue transactions in one place.

The platform operates as a connected system made up of a member-facing mobile app, a staff-facing admin CRM dashboard, and an integration layer that synchronises data between external services including GenieAI, EPOS Now, Stripe, and Yoello. Together, these systems remove manual admin, reduce staff error, and create a seamless experience for both customers and staff.

Technical architecture
The frontend is built using React Native with Expo, allowing a single codebase to serve iOS, Android, and web simultaneously. Navigation is handled using a drawer-based root navigator with nested stack flows for authenticated and unauthenticated users. Server state is managed using TanStack Query, enabling automatic caching, background refetching, optimistic updates, and clean cache invalidation across the app.

A custom design system was created specifically for The Hub Club, using brand-aligned colours, bespoke typography, and consistent spacing and layout rules. Animations and transitions are powered by React Native Reanimated to ensure smooth, high-performance interactions. Native device features are used extensively, including QR code scanning, haptic feedback, push notifications, camera access, and image selection.

The backend is built using Express with full TypeScript coverage across the stack. PostgreSQL is used as the primary database, with Drizzle ORM providing type-safe queries, schema validation, and shared types between client and server. Authentication is handled using secure session-based auth with bcrypt password hashing and a PostgreSQL-backed session store. Payments are processed through Stripe using both redirect-based checkout flows and in-app payment intents depending on context.

Membership system and automation
At the core of the platform is a three-tier membership system that runs entirely through automation. Members can exist on a free tier or one of two paid tiers, each unlocking different benefits such as free sessions, priority booking, unlimited drinks, and exclusive discounts.

Subscriptions are managed externally via GenieAI, with webhooks driving all tier changes inside the app. When a subscription is created, upgraded, or cancelled, the system automatically updates the member’s tier, applies or removes benefits, generates or deactivates promo codes, and recalculates permissions. If a user subscribes before registering, their subscription is held in a pending state and applied automatically once their account is created.

Tier changes cascade throughout the system without manual intervention, ensuring members always receive the correct benefits instantly and staff never need to manage subscriptions manually.

Booking system design
The platform includes a dual booking system designed to support both recurring sessions and one-off events. Calendar-based bookings allow members to browse sessions across a rolling window, view live availability, and book age-based tickets with dynamic pricing. Capacity is tracked in real time, with staff able to override limits on specific dates when required.

Event-based bookings support named events with their own pricing, descriptions, visibility rules, and capacity settings. Premium members can access events early through a tier-controlled early access system. Events can optionally include discounted soft play add-ons, with pricing logic that automatically accounts for included children covered by a member’s subscription.

All booking rules are validated server-side to prevent misuse or manipulation.

Promo codes and loyalty logic
A flexible promo code engine underpins both manual promotions and automated membership perks. Codes can apply fixed or percentage discounts, be restricted to specific rooms or dates, and be assigned globally or per user. Membership tiers automatically generate unique promo codes tied to each account, with rules defined through admin-managed tier settings.

Included-children logic is handled entirely server-side. Promo codes automatically discount bookings up to the number of children included in a member’s subscription, while charging full price for any additional children, ensuring fair and accurate pricing every time.

EPOS Now integration
The platform integrates directly with the venue’s EPOS Now till system, enabling automatic loyalty tracking for in-venue purchases. Member accounts are synchronised with EPOS customer profiles, and completed transactions trigger webhooks that award points, apply promotional multipliers, track coffee purchases, and reset stamp cards when rewards are redeemed.

Staff can scan member QR codes using a built-in camera interface to instantly access profiles and apply loyalty actions, supported by haptic feedback for fast in-venue use.

Digital coffee stamp card
The traditional paper coffee stamp card has been fully digitised within the app. Members can view progress visually, with animated stamps and tactile feedback. Higher-tier members with unlimited drink benefits bypass the stamp system entirely, with the interface intelligently adapting to reflect their perks.

The card resets automatically when a reward is earned and supports both staff-added and transaction-triggered stamps.

Push notifications and communication
The platform includes a real-time push notification system built on Expo’s push service. Tokens are registered automatically and linked to user accounts. Staff can send broadcast messages directly from the admin dashboard, while system notifications are triggered automatically when updates or announcements are published.

Admin CRM dashboard
A fully custom admin dashboard replaces what would typically require multiple third-party tools. Staff can manage members, bookings, vouchers, promo codes, events, rooms, pricing, and notifications from a single interface. Live metrics, calendar-based booking views, walk-in booking creation, attendance tracking, and full CRUD functionality are built in throughout.

Security and reliability
Security is enforced across the platform using industry best practices. Passwords are hashed securely, sessions are stored server-side, cookies are protected in production, and all inputs are validated. Webhooks are verified using signature checks, and password reset flows use cryptographically secure, time-limited, single-use tokens.

Users are soft-deleted rather than removed entirely, preserving data integrity while preventing access.

Deployment and infrastructure
The platform is hosted on Replit with a custom domain and managed PostgreSQL database. Expo bundles are built and served statically, removing the need for a running Metro server in production. Mobile access is provided through Expo Go using QR-based deep linking, allowing real users to access the app without app store submission.

Database migrations and data backfills run automatically on startup to keep production environments in sync.

Why this project matters
This is a real production system serving paying members at a live venue. It demonstrates end-to-end automation, deep third-party integration, and complex business logic implemented cleanly and reliably. Multiple systems that typically operate in isolation have been unified into a single platform, reducing admin workload while improving the customer experience.

Most importantly, it shows the ability to design, build, and ship a complex system from concept to live deployment.