A Turborepo monorepo containing the backend API for an event ticketing system. This repository is designed for frontend take-home assessments where candidates build a frontend against the provided backend API.
This monorepo contains a complete backend API implementation for an event ticketing system. The API manages providers, plans, options, add-ons, and estimates with dynamic configuration capabilities.
apps/api- Event Ticketing Backend API- Built with Hono and Node.js
- SQLite database with Drizzle ORM
- Zod validation and OpenAPI documentation
- Swagger UI for interactive API exploration
- Comprehensive test suite (unit + integration tests)
design-doc.md- Backend API/DB design guide and specificationfe-interview-brief.md- Frontend take-home assessment brief
- Node.js >= 18
- npm >= 10.9.2
npm installStart the API server:
npm run devOr start a specific app:
npm run dev --filter=apiThe API will be available at http://localhost:3002.
- Swagger UI:
http://localhost:3002/ui- Interactive API documentation - OpenAPI JSON:
http://localhost:3002/doc- Raw OpenAPI 3.0 specification
From the root directory:
npm run dev- Start all apps in development modenpm run build- Build all apps and packagesnpm run lint- Run ESLint on all packagesnpm run check-types- Type check all packagesnpm run test- Run all testsnpm run format- Format code with Prettier
See apps/api/README.md for detailed API documentation and scripts.
take-home/
├── apps/
│ └── api/ # Event Ticketing Backend API
│ ├── src/
│ │ ├── db/ # Database schema, migrations, seeding
│ │ ├── domain/ # Business logic (pricing, validation)
│ │ ├── routes/ # API route handlers
│ │ └── *.test.ts # Test files
│ └── drizzle/ # Database migrations
├── design-doc.md # Backend design specification
├── fe-interview-brief.md # Frontend assessment brief
└── turbo.json # Turborepo configuration
The Event Ticketing API provides endpoints for:
- Providers - List event providers (venues)
- Plans - List plans for a provider with options and add-ons
- Estimates - Create, update, and finalize event estimates
- Dynamic plan options (seating types, food packages, date flexibility)
- Add-ons (AV equipment, photography, VIP hosting)
- Validation and blocker management
- Approval workflow support
- Dynamic Configuration - Plans expose business-level options without UI schema
- Server-Side Pricing - All pricing calculations handled by the backend
- Validation - Comprehensive validation with blocking reasons
- Approval Workflows - Support for plans requiring manager approval
- OpenAPI Documentation - Auto-generated from Zod schemas
The API includes comprehensive test coverage:
- Unit Tests - Domain logic (pricing, validation)
- Integration Tests - Full API endpoint testing
Run tests:
npm run testSee apps/api/README.md for detailed testing instructions.
The API uses SQLite with automatic migrations and seeding:
- Database file:
apps/api/.data/dev.db(created automatically) - Migrations run automatically on server startup
- Seed data includes 3 providers, 5 plans with varied options/add-ons
- Runtime: Node.js
- Framework: Hono
- Database: SQLite with Drizzle ORM
- Validation: Zod v4
- API Docs: OpenAPI 3.0 + Swagger UI
- Testing: Vitest
- Monorepo: Turborepo
This backend is ready to use for frontend development. See fe-interview-brief.md for the assessment requirements.
The API is fully documented and can be explored via Swagger UI at http://localhost:3002/ui once the server is running.