Tech Stack

Pride’s technology platform choices and strategic technology architecture.

Current Systems

Core revenue and operations:

  • Square POS: Point of sale, payments, tabs
  • TryBooking: Event ticketing, 8 years of customer data
  • Xero: Accounting, payroll, superannuation
  • Deputy: Staff rostering and time tracking
  • PinTuna: Loyalty and membership programme

Communication and collaboration:

Infrastructure:

  • Optus NBN: Business broadband (single point of failure)
  • Westpac Bank: Primary banking
  • CCTV System: Liquor licensing compliance (record-only)
  • VCPG Security: External security services

Architecture for Intelligence Dashboard

Decision: Next.js 16 + Supabase + Railway

Framework: Next.js 16 (App Router, React Server Components, Server Actions, React 19)

Database & Auth: Supabase (PostgreSQL, built-in Google OAuth, Row Level Security, file storage, real-time subscriptions)

Hosting: Railway (app server) + Supabase Cloud (database, auth, storage)

ORM: Prisma (type-safe database access, migrations, schema management)

Styling: Tailwind CSS v4 + shadcn/ui (copy-paste component system with Radix UI accessibility primitives)

Charts: Recharts v3 (CSS custom property theming via style prop)

Animation: Motion (Framer Motion) for component-level micro-interactions; Next.js 16 View Transitions API for route-level page transitions

Design tokens: tokens.css semantic token system with @theme inline integration for Tailwind v4

Background jobs: Railway cron jobs (scheduled data pulls, AI research)

AI: Anthropic API (email triage, event discovery, regulatory monitoring)

Why This Stack?

  • Bundled platform: Supabase provides auth, database, storage, and real-time in one SDK (eliminates 4 separate services)
  • Google OAuth: Built into Supabase auth; team already uses Google Workspace
  • Row Level Security: Data access rules live in database, not scattered across API routes
  • Claude Code quality: Next.js code from Claude Code works first-time more often; largest training data volume
  • Cost efficiency: $10–30/month (Railway $5–15 + Supabase free tier + Anthropic API $5–15)
  • Ecosystem: Massive community and pre-built components
  • Developer experience: Server Actions simplify form handling; no client/server boundary confusion

Options Considered and Rejected

SvelteKit + Supabase: Better developer ergonomics but Claude Code produces less reliable Svelte code; smaller ecosystem; hiring risk

Remix + Supabase: Better form handling (loaders/actions pattern) but smaller community; less Remix-specific training data in Claude Code; smaller component library

Next.js + Neon + Vercel: Vercel’s free tier restricts commercial use; still need 3+ additional services (Clerk auth, S3 storage, Pusher real-time)

Integration Architecture

API integrations (Priority order):

  1. Square (OAuth): Daily data pull via Node.js SDK; 50 req/sec rate limit generous
  2. TryBooking (API key): Events, bookings, contacts; CSV fallback
  3. Gmail (Service account): Domain-wide delegation; shadow email approach to meet@ triage
  4. Xero (OAuth): Daily P&L summary, bank balances, reconciliation status
  5. Deputy (OAuth or API key): Daily roster pull, timesheet data

Data flow architecture:

  • Phase 1: Connect Square, TryBooking, Xero (daily pipeline)
  • Phase 2: Resolve Deputy→Xero payroll bridge; add TryBooking attendance scanning
  • Phase 3: Unify customer data across TryBooking and PinTuna
  • Phase 4: Add social media and regulatory monitoring

Security Model

  • No API keys in client code: All external API calls server-side (Server Actions or API routes)
  • OAuth tokens in Supabase vault: Encrypted at rest
  • Row Level Security on all tables: Database-layer access enforcement
  • Domain-restricted Google OAuth: Only @prideofourfootscray.bar and @exudegroup.com
  • Gmail service account: Mat’s credentials never touch the app
  • HTTPS everywhere: Railway provides SSL by default
  • Environment variables: All secrets stored in env vars, never committed
  • HR data access control: Warnings, medical certificates visible only to Admin role

Database Schema

Key areas:

  • Users & Roles (Supabase Auth + app-level roles table)
  • Square Data (orders, payments, line_items, locations)
  • TryBooking Data (events, bookings, contacts, ticket_tiers)
  • Venue Operations (staff, warnings, incidents, complaints, performance_notes, leave, banned_guests)
  • Event Discovery (suggestions, sources, pipeline_status)
  • Regulatory Alerts (alerts, sources, statuses, consultation_deadlines)
  • Grant Alerts (grants, eligibility_assessments, pipeline_status)
  • Email Triage (email_threads, ai_responses, send_status)
  • Financial (xero_snapshots, cash_positions, reconciliation_status)
  • File Storage (Supabase Storage with metadata table)

Row Level Security: Every table has RLS policies tied to user role. Admin sees everything. Operations sees ops-relevant data. Events sees event-relevant data. HR-sensitive data (warnings, medical certs) restricted to Admin only.

Cost Estimate

ServicePlanCost
RailwayHobby ($5 credit included)$5–15
SupabaseFree tier (500MB database, 1GB storage, 50k auth requests)$0
Anthropic APISonnet + Haiku usage$5–15
Total$10–30/month

Supabase free tier covers initial needs for 4 users. If database exceeds 500MB, Pro tier is $25/month.

Future Considerations

  • Supabase free tier limits: Monitor database size as historical data grows
  • Background job complexity: Railway cron simple but limited. If complexity grows, consider Inngest or BullMQ
  • WebSocket support: If real-time features expand, evaluate Fly.io vs Railway
  • Claude chat integration: Architecture supports generating context documents for Claude via iframe, OAuth, or API

Stack Optimisation Assessment (April 2026)

Per Melbourne Venue Tech Stack Research.

The current stack is broadly sound — no platform needs replacing. Gaps identified in inventory/COGS (nothing in place), loyalty (PinTuna eliminated), email marketing, and AI feature activation.

GapToolMonthly Cost
Inventory/COGSLoaded~$150–300
LoyaltySquare Loyalty$49–99
Email marketingMailchimp Standard + Brevo SMS~$160 + SMS
Financial reportingFathom (Xero add-on)$65
AI marketingChatGPT/Claude + Canva Pro~$54
Website chatbotTidio~$24

Free Activations (Priority 1)

  1. Square AI (conversational BI, launched AU March 2026)
  2. Xero JAX (AI financial assistant, included in subscription)
  3. Deputy AI scheduling (demand forecasting, already included)

See Tech Stack Optimisation for detailed recommendations and action sequence.