TicketFlow - Queue & Appointment SaaS
Web AppIn Development — preparing for launch
I built TicketFlow because I saw the same problem everywhere — hospitals, clinics, and government offices where people wait in long disorganized queues with no system to manage them. TicketFlow lets organizations manage queues in real-time and book appointments with QR confirmation. One feature I'm really proud of is the homepage builder — instead of calling a developer every time the hospital wants to show something new to their customers, the organization admin can visually edit the customer-facing homepage with 19+ section types using drag-and-drop. No code needed. The platform supports multiple branches and counters, 5 user roles, and 65+ secured API endpoints. I've tested it deeply and it works as a professional system — I'm still developing it before I start selling.
Key Features
- Real-time queue management with call-next, skip, transfer, no-show operations and sound notifications
- Multi-step appointment booking wizard (service > date/time > review > QR confirmation)
- Multi-tenant architecture with Organization > Branch > Counter hierarchy and data isolation
- Role-based access control with 5 roles (Super Admin, Org Admin, Branch Admin, Staff, Customer)
- Drag-and-drop homepage builder with 19+ section types, per-section styling, gradients, and layout presets
- Template system with professional starter templates, save/load/activate, and variable substitution
- QR-based appointment confirmation and camera check-in at branches
- Large-screen real-time queue display board for branches
- RSA-2048 license management with domain binding
- 65+ REST API endpoints with consistent error handling and Zod schema validation
Tech Stack
Technical Details
Next.js 16 with App Router handles both the frontend and 65+ API routes. I chose PostgreSQL with Prisma because the data model is complex — 15+ related tables (organizations, branches, counters, services, queue tickets, appointments, users) in a 452-line schema. Authentication uses NextAuth.js with JWT and bcrypt. The UI is built with Shadcn/ui, Radix UI, and Tailwind CSS 4. The homepage builder uses Tiptap Editor for rich text with a drag-and-drop system I built using discriminated union types in TypeScript — each of the 19+ section types has its own Zod validation. QR codes handle appointment confirmations and check-in via camera scanning. Every API endpoint goes through middleware that checks authentication, license validity, and role permissions.
Challenges & Solutions
The multi-tenant architecture was the biggest design challenge — every query needs to be scoped to the right organization, branch, and counter while staying fast. I solved this with middleware-level tenant scoping and careful Prisma schema design. The homepage builder was complex because 19+ section types each need different configs, styling options, and validation — I used TypeScript discriminated unions with Zod schemas per section type to keep it type-safe. The real-time queue operations (call-next, skip, transfer) needed to stay consistent when multiple staff members are using it at the same time, which required optimistic UI updates with server reconciliation.
Role
Solo Developer & Product Owner
Duration
Ongoing
Status
In Development — preparing for launch