Getting started

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 .env

2. 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 --build

4. 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)

RoleEmailPassword
adminadmin@company.comadmin123
it_managermanager@company.comstaff123
it_staffit@company.comstaff123

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.