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
- React 19
- TypeScript
- Vite
- TanStack Query
- TanStack Router
- Zustand
- shadcn/ui
- Tailwind CSS
- i18next
- Recharts
- Leaflet
- GSAP
- OpenAPI client
- Java 21
- Spring Boot
- Spring Security
- Data JPA
- Quartz
- JWT
- Flyway
- Web Push
- OpenAPI / Swagger
- PostgreSQL
- Redis
- Docker Compose
- Nginx
- GitHub Actions
- 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.