A Dockerized monorepo ticketing system for selling QR tickets and validating entry at the gate.
- Server-rendered React frontend for event discovery, anonymous checkout, account history, and admin verification
- NestJS backend API
- PostgreSQL database
- QR code tickets that can be scanned once at the gate
cp .env.example .env
docker compose up --buildSet ADMIN_EMAILS in .env to a comma-separated list of admin email addresses. Users register and log in the same way; matching admin emails receive verifier access.
Then open:
- Web app: http://localhost:8088
- API health: http://localhost:3000/health
apps/
api/ NestJS API and PostgreSQL integration
web/ React + Vite frontend
infra/
postgres/ Database initialization scripts
- Create or view events.
- Buy a ticket anonymously, or log in first to attach the purchase to account history.
- The API creates a unique ticket code and QR code.
- Logged-in users can view ticket history.
- Logged-in admins use the verification app to scan QR codes at the gate.
- Valid unused tickets are marked as checked in. Duplicate scans are rejected.
npm run dev # run the full stack with Docker Compose
npm run build # build all workspaces locallyThe web app uses Vite SSR. Local web-only development runs the SSR dev server:
npm --workspace apps/web run devProduction preview renders routes through the Node SSR server:
npm --workspace apps/web run build
npm --workspace apps/web run preview