Getting started
1. Clone and prepare
Quick Start
This guide gets the system running in a development environment in a few minutes.
Requirement: Docker + Docker Compose. Nothing else to install.
1. Clone and prepare .env
git clone https://github.com/mahmutyum/ticket-system.git
cd ticket-system
cp .env.example .env2. Generate the required secrets
None have defaults — the backend won't boot if they're empty:
openssl rand -base64 48 # → JWT_SECRET
openssl rand -base64 48 # → JWT_REFRESH_SECRET (different from JWT_SECRET)
openssl rand -hex 32 # → CREDENTIALS_ENC_KEY (exactly 64 hex)Also set DB_PASSWORD and REDIS_PASSWORD; mirror both into DATABASE_URL / REDIS_URL with the same value.
CREDENTIALS_ENC_KEY is the key for the credential vault. If it is lost or changed, stored passwords cannot be decrypted and there is no rotation mechanism — keep this value somewhere safe.
3. Start
The schema is applied automatically:
docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build4. Load sample data
docker compose exec backend npx tsx prisma/seed.ts # base data
docker compose exec backend npm run db:seed:demo # 36 tickets, 24 tasks, vault, etc. (optional)UI at http://localhost:1111 · API docs at http://localhost:4000/docs
Sample logins (seed)
| Role | Password | |
|---|---|---|
| admin | admin@company.com | admin123 |
| it_manager | manager@company.com | staff123 |
| it_staff | it@company.com | staff123 |
Development only. Never run seed.ts against production — create the first admin manually there.
Next steps
- Head to Installation for production setup, Coolify/NPM, and env details.
- See the Usage page to learn how the system is used.