bbb98a557f77fea0142fec7d817c0be36e127f1e
KoolTab Remote Tab Control
A production-quality remote tab control system for venues. Allows bar staff to manage and close tabs remotely from a web dashboard, with commands delivered to bar terminals via a sync API.
Architecture
- Monorepo managed with pnpm
- NestJS backend API with Prisma ORM (SQLite for dev, PostgreSQL-ready)
- Next.js dashboard with App Router, TanStack Query, and shadcn/ui
- Shared TypeScript types package
apps/
api/ # NestJS backend
dashboard/ # Next.js frontend
packages/
shared/ # Shared types & constants
scripts/
device-sync.ts # Device simulator
docs/
api.md # API documentation
architecture.md
architecture-decisions.md
local-development.md
testing.md
production.md
security.md
Requirements
- Node.js >= 18
- pnpm >= 8
Quick Start
# 1. Install dependencies
pnpm install
# 2. Generate Prisma client
cd apps/api
pnpm db:generate
# 3. Run migrations
pnpm db:migrate
# 4. Seed demo data
pnpm db:seed
cd ../..
# 5. Start both API and Dashboard in dev mode
pnpm dev
API runs on http://localhost:3001 Dashboard runs on http://localhost:3000 Swagger docs at http://localhost:3001/api/docs
Demo Credentials
| Role | Password | |
|---|---|---|
| Admin | admin@example.com | Admin123! |
| Viewer | viewer@example.com | Viewer123! |
Device Simulator
# Run a full demo (register, sync, ack)
cd scripts
npx ts-node device-sync.ts demo <venueId> <registrationCode>
# Or step by step:
npx ts-node device-sync.ts register <venueId> "Bar Terminal 1" ABC123
npx ts-node device-sync.ts sync <deviceId> <token>
npx ts-node device-sync.ts ack <deviceId> <token> <commandId> completed
Running Tests
# Unit tests
pnpm test
# E2E tests
pnpm test:e2e
Docker
docker compose up
Production Notes
See docs/production.md for production deployment and SQLite → PostgreSQL migration guide.
Languages
TypeScript
98.2%
JavaScript
0.6%
HTML
0.5%
Dockerfile
0.4%
CSS
0.3%