Getting Started
Prerequisites
Setup
Clone the repository
bashgit clone https://github.com/niklas-jacobsen/licenseplate-checker.git cd licenseplate-checkerStart local services
bashdocker compose up -dThis starts a PostgreSQL 17 instance on port 5432 with default credentials (
postgres/admin, databasemydb).Configure environment
Backend (
apps/api/.env):bashcp apps/api/.env.example apps/api/.envVariable Description PORTServer port (default: 8080)DATABASE_URLPostgreSQL connection string (default in docker-compose.yml)JWT_SECRETSecret for signing JWT tokens ALLOWED_ORIGINSComma-separated frontend URLs for CORS API_BASE_URLBase URL of the API for Trigger.dev callbacks (default: http://localhost:8080)Frontend (
apps/web/.env.local):Variable Description NEXT_PUBLIC_BACKEND_URLBackend API URL (default: http://localhost:8080)For more info on environment variables, see Environment Variables
Install dependencies
bashbun installRun database migrations
bashbun db:migrateSet up Trigger.dev (required for workflow execution)
Create a free account at trigger.dev and create a new project. Then add the following to your
apps/api/.env:Variable Description TRIGGER_SECRET_KEYDev API key from your Trigger.dev dashboard ( tr_dev_...)TRIGGER_WEBHOOK_SECRETA secret string used to authenticate webhook callbacks (defaults to dev-webhook-secret)API_BASE_URLBase URL of your local API for Trigger.dev callbacks (default: http://localhost:8080)Start the Trigger.dev dev CLI in a separate terminal:
bashcd apps/api bunx trigger devThis connects your local machine to Trigger.dev's cloud, allowing it to discover tasks and send webhook callbacks to your local API.
Start development servers
bashbun turbo run devThis starts both the API (port 8080) and the frontend (port 3000) in parallel.
Project Structure
licenseplate-checker/
├── apps/
│ ├── api/ # Hono + Bun backend
│ ├── web/ # Next.js frontend
│ └── docs/ # VitePress documentation
├── packages/
│ └── shared/ # Shared validators, types, utilities
├── turbo.json # Turborepo task config
└── package.json # Workspace rootAvailable Scripts
| Command | Description |
|---|---|
bun dev | Start all apps in development mode |
bun build | Build all apps |
bun lint | Lint all packages with Biome |
bun format | Format all packages with Biome |
bun test | Run unit and integration tests |
bun typecheck | TypeScript type checking |