QueueLine
WIPSolo full-stack developer — product, design, and build
The problem
Thai restaurants and clinics still run queues on paper tickets and a staff member shouting numbers. Customers cannot leave without losing their place, staff have no record of who was called or who never showed, and walk-away rates are invisible to the owner.
What I built
- Designed and built the full stack: a NestJS API and a Next.js frontend covering the public queue-join page, the staff dashboard, and standalone TV display screens.
- Implemented realtime queue state with Socket.IO so the staff dashboard and every display screen stay in sync without polling.
- Integrated LINE push notifications — the channel Thai customers actually use — with per-merchant access tokens stored encrypted at rest.
- Made the notification path fail safe: a rotated or corrupt key degrades to "not configured" rather than throwing, token verification distinguishes a network failure from a genuinely bad token, and logging can never break the notification it is recording.
- Modelled returning customers via a CustomerProfile keyed on merchant plus LINE user, tracking visit counts and no-shows so owners can see who repeatedly abandons the queue.
- Added a NotificationLog audit trail of every push attempt, so "I never got the notification" is a question with an answer.
- Wrote the surrounding product work: a product spec with pricing tiers, a business plan, and a 90-day go-to-market playbook.
Outcome
- Feature-complete core loop: join a queue, get notified over LINE, be called, and be tracked as served or a no-show.
- Multi-tenant from the schema up — merchants, plans, and verticals are first-class, so onboarding a second business needs no code changes.
- Ships with the compliance surface a Thai SaaS needs: PDPA, privacy, and terms pages.
- Still pre-launch — the remaining work is billing and a paying-customer pilot, not core functionality.
Tech stack
- Frontend
- Next.jsReactTypeScriptsocket.io-client
- Backend
- NestJSPrismaPostgreSQLSocket.IOPassport (JWT)LINE Messaging API
- Tooling
- Docker Composebcryptclass-validator