Back to case studies
Web Application
Feb 20, 202415 min read

Urban Bar CRM - Hospitality Operations in One Interface

CRM, scheduling, loyalty, inventory signals, and analytics shaped by real venue operations.

Author
Viktor Stoimenovski

01Context

What this was

UBCRM started from operating a bar, not from guessing at hospitality software. Customer data, schedules, loyalty, and owner reporting were scattered across memory, notes, and disconnected tools. The product was built as a bachelor thesis around a simple idea: small venues deserve operational software without enterprise ERP weight.

02Problem

What was broken

Before

Bars often run POS, spreadsheets, DMs, and paper loyalty in parallel-no single operational source of truth.

What had to change

Peak service needs quick lookups, role-appropriate access, and staff coordination that does not break when the venue is busy.

  • 01Fragmented tooling and inconsistent loyalty
  • 02No unified view of customers, staff, inventory, and campaigns
  • 03Limited analytics for staffing, stock, and retention

The goal was a two-panel product: an admin/employee hub and a customer-facing loyalty experience-secure, real-time, and tablet-first.

03Solution

What I built

Next.js 14 and TypeScript for the product interface, with interactive sections where service workflows need fast feedback.

Supabase for Postgres, Auth, Realtime, Storage, and RLS so venue and role boundaries are enforced in the database.

Domain modules cover CRM profiles, bookings, staff schedules, inventory signals, loyalty rules, and owner analytics built around the pace of a real venue.

04Decisions

Key implementation decisions

  • 01

    Row-level security as the security backbone

    Staff vs customer vs venue isolation enforced in Postgres-not only in UI-to reduce bypass risk.

  • 02

    Denormalization for peak-hour reads

    Visit counts and last-visit stamps on customer rows to avoid heavy joins during service.

  • 03

    Realtime with resilient client hooks

    Channels reconnect cleanly; optimistic UI for bookings and loyalty where latency hurts UX.

  • 04

    Materialized analytics paths

    Hourly aggregates for dashboards to keep tablets responsive without scanning raw events every view.

05Impact

Operational impact

  • Owners replace multiple disconnected tools with one operational hub.
  • Staff recognize regulars faster with structured profiles and visit history.
  • Inventory and booking signals reduce stockouts and double-booking friction.
  • Customers engage through transparent loyalty instead of passive stamp cards.

06Results

Results

  • End-to-end thesis-grade system demonstrating ERP-like value at SMB complexity.
  • Real-time coordination patterns suitable for noisy, high-touch service floors.
  • Security model aligned to multi-tenant venue data.
  • Tablet-first UX with touch targets and flows tuned for on-floor use.

07Stack

Technology stack

Frontend
Next.js 14 (App Router), TypeScript, Tailwind CSS, shadcn/ui, Lucide React
Backend
Supabase (PostgreSQL, Auth, Realtime, Storage), RLS policies, Edge Functions
Quality
ESLint, Jest, React Testing Library
Hosting
Vercel + Supabase Cloud