A comprehensive, production-ready queueing system for multi-lane service environments. Built with Next.js 15, TypeScript, Tailwind CSS, shadcn/ui, and MySQL (Prisma ORM).
- Admin: Full dashboard access, manage users and lanes
- User (Cashier/Staff): Queue operations for assigned lanes (Next, Call, Buzz, Serve)
- Display: Real-time display of all active lanes and queue status
- Reservation: Customer-facing interface to get queue numbers and wait times
- Admin Dashboard: Manage lanes, users, assignments, and view live stats
- Queue Operations: Advance, call, buzz, and serve queue numbers (per lane, per day, with daily reset)
- Reservation System: Customers select a lane, get a queue number, and see estimated wait
- Display System: Shows all active lanes, current/next numbers, and queue status in real time
- Role-based Authentication: Custom, secure, no third-party providers
- Daily Reset: Queue numbers and stats are always based on today’s operations only
- Responsive UI: Built with shadcn/ui and Tailwind CSS for a modern, accessible experience
- Physical Ticket Printing: Print queue tickets for customers (if printer is connected)
- Real-Time Updates: All interfaces update automatically for live queue status
- Frontend: Next.js 15 (App Router), TypeScript, Tailwind CSS, shadcn/ui
- Backend: Next.js API routes, Prisma ORM
- Database: MySQL
- Authentication: Custom JWT-based
- Node.js 18+
- MySQL
git clone <repo-url>
cd queue
npm install
Copy .env.example
to .env
and update DB credentials and secrets.
npm run db:generate
npm run db:push
npm run db:seed
npm run dev
npm run build
npm run build:production
- Admin: admin / admin123
- Cashier 1: c1 / 123
- Cashier 2: c2 / 123
- Regular Lane: General queue for all customers
- PWD Lane: Priority for PWDs and Senior Citizens
src/
app/
admin/ # Admin dashboard
user/ # Cashier interface
display/ # Display screens
reservation/ # Customer reservation
api/ # API routes
components/
ui/ # shadcn/ui components
lib/ # Auth, Prisma, utils
prisma/ # Prisma schema & migrations
public/ # Static assets
scripts/ # Seed and utility scripts
POST /api/auth/login
— LoginPOST /api/auth/logout
— LogoutGET /api/lanes
— List all lanes (today's stats)GET /api/queue/reservation
— Lane status for reservation (today only)POST /api/queue/reservation
— Get a new queue numberPOST /api/queue/operations
— Queue actions (Next, Call, Buzz, Serve)GET /api/users/assigned-lanes
— Lanes assigned to current user (today only)
npm run dev
— Start dev servernpm run build
— Build for productionnpm run build:production
— Create deployable packagenpm run db:generate
— Generate Prisma clientnpm run db:push
— Push schema to DBnpm run db:seed
— Seed DB with demo data
- User: System users (admin, cashier, etc.)
- Lane: Service lanes (regular, PWD, etc.)
- LaneUser: Assignment of users to lanes
- QueueItem: Queue entries (per lane, per day)
- Run
npm run build:production
(seeproduction/
folder) - Copy
production/
to your server - Run
deploy.bat
as Administrator
MIT
If you find this project useful, consider supporting me:
Your support keeps this project alive and maintained!
For questions or support, open an issue in this repository.