← Back to case studies
Multi-tenant SaaS · Web · Full stack

White-label SaaS for virtual queues

People take a ticket from their phone and follow their position live. Each organization serves, prioritizes and measures its operation under its own brand.

Period
2026 · ~1 month
Team
Small
My role
Lead developer
Focus
60% front · 40% back

These projects are under a confidentiality agreement. Client names, code and screenshots are not shown; titles are descriptive.

Context

A new product built from scratch: a multi-tenant, white-label SaaS platform to manage virtual queues for any organization that serves the public.

Each organization has its own branches, services and staff, plus a branded experience for its customers. The product includes the public app to take a ticket, the service desk for staff, an admin panel for each organization and a back office for the platform operator.

Problem

Get rid of physical lines. People take a ticket from their phone, follow their position in real time and get notified when they are called.

The technical challenge had three parts: updating ticket positions and service panels in real time, isolating each organization's data, and modeling a hierarchical configuration (organization → branch → service) with different prioritization rules.

What I did

  • Bootstrapped the frontend and built the design system and component kit, with light/dark themes and configurable white-label branding.
  • Public flow: take a ticket, email code verification, live position, ticket recovery, rating and optional push notifications.
  • Service desk: call next, pause, transfer and reorder tickets with drag & drop, plus the public call screen.
  • Organization admin: branches with opening hours, services, staff, operational settings and hierarchical prioritization.
  • Platform back office: organizations, plans, accounts and audit logs.
  • Backend: JWT authentication, accounts and roles, auditing, the hierarchical configuration model and service operations (pause, transfer, reorder, async calling).
  • Spanish/English internationalization, dashboards with charts and a map of nearby branches.
  • Local infrastructure with Docker Compose, plus process documentation.

Decisions

  • Proposed Server-Sent Events instead of WebSockets for real-time updates: traffic is almost entirely server-to-client, and SSE is simpler to run.
  • Organized the frontend by feature and built the design system from day one.
  • Defined how the AI-DLC methodology (AI-assisted development) is applied in the project, from requirements to delivery.

Problems solved

  • Protecting access to tickets with email code verification, without requiring the public to sign up.
  • Keeping the customer view and the staff view in sync in real time.
  • Designing configuration inheritance across organization, branch and service.

Architecture

Monorepo with a SPA frontend and a monolithic Spring Boot REST API, using Server-Sent Events for real time and scheduled background jobs.

Stack

Frontend
  • React 19
  • TypeScript
  • Vite
  • TanStack Query
  • TanStack Router
  • Zustand
  • shadcn/ui
  • Tailwind CSS
  • i18next
  • Recharts
  • Leaflet
  • GSAP
  • OpenAPI client
Backend
  • Java 21
  • Spring Boot
  • Spring Security
  • Data JPA
  • Quartz
  • JWT
  • Flyway
  • Web Push
  • OpenAPI / Swagger
Databases
  • PostgreSQL
  • Redis
Infra & cloud
  • Docker Compose
  • Nginx
  • GitHub Actions
Testing
  • JUnit
  • Testcontainers
  • Vitest
  • Testing Library
  • Playwright

Tests

Backend unit and integration tests (JUnit, Testcontainers, property-based tests), frontend component tests (Vitest + Testing Library) and end-to-end tests with Playwright, all running in CI.

Outcome

Reached a working end-to-end MVP.

What I learned

Backend with Spring Boot and modern Java, real time with SSE, multi-tenant architecture, building a design system and AI-assisted development with AI-DLC.