Skip to content

Rychlý start

Požadavky

  • Docker a Docker Compose (doporučeno pro lokální vývoj)
  • nebo Node.js 20+ a PostgreSQL 16+

Spuštění s Docker Compose

Nejjednodušší způsob — spustí celý stack: PostgreSQL, Zitadel, Login UI, Admin panel a API.

bash
# Klonování repozitáře
git clone <repo-url>
cd atrea-user-api

# Spuštění celého stacku
docker compose up -d

# API je dostupné na
# http://localhost:3001
# Swagger UI: http://localhost:3001/api/docs
# Dokumentace: http://localhost:3001/docs/

Spuštění bez Dockeru

bash
# Instalace závislostí
npm install

# Konfigurace databáze (viz config/default.yaml)
# Potřebujete běžící PostgreSQL na localhost:5432

# Inicializace databáze
psql -U app atrea-user-db < sql/init.sql
psql -U app atrea-user-db < sql/data.sql

# Build TypeScriptu a spuštění
npm run build
npm start

# nebo development mód (watch + nodemon)
npm run dev

Ověření funkčnosti

bash
# Health check
curl http://localhost:3001/api/test

# Verze
curl http://localhost:3001/api/version

# Swagger UI — v prohlížeči
open http://localhost:3001/api/docs

# Dokumentace — v prohlížeči
open http://localhost:3001/docs/

První API volání — ověření oprávnění

Endpointy /check nevyžadují JWT token, pouze optional x-internal-api-key. Volání z backend aplikace:

bash
curl -X POST http://localhost:3001/api/check \
  -H "Content-Type: application/json" \
  -d '{
    "email": "uzivatel@firma.cz",
    "app": "moje-app",
    "permission": "documents.read"
  }'

# Odpověď
{ "success": true, "data": { "allowed": false } }

Zavolání chráněného endpointu

Pro endpointy vyžadující JWT token (např. /profile/me) potřebujete Bearer token od jednoho z podporovaných providerů:

bash
curl http://localhost:3001/api/profile/me \
  -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5..."

Skripty

SkriptPopis
npm run devVývojový mód (TypeScript watch + nodemon)
npm run buildBuild TypeScriptu do dist/
npm startBuild + spuštění produkčního serveru
npm run lintESLint kontrola
npm run lint:fixESLint autofix
npm run docs:devVitePress dev server pro dokumentaci
npm run docs:buildBuild dokumentace do docs/.vitepress/dist/
npm run docs:previewPreview buildu dokumentace

Struktura projektu

atrea-user-api/
├── src/
│   ├── index.ts              # Inicializace Express aplikace
│   ├── middleware/           # JWT verifikace, autorizace
│   ├── routes/               # API endpointy (14 routerů)
│   ├── services/             # Business logika (18 servisů)
│   ├── entities/             # TypeORM entity (17 tabulek)
│   └── utils/                # Pomocné třídy (ApiResponse, logger, ...)
├── config/
│   ├── default.yaml          # Výchozí konfigurace (dev)
│   ├── production.yaml       # Produkční přepisy
│   └── test.yaml             # Test prostředí
├── sql/
│   ├── init.sql              # DDL — vytvoření tabulek
│   ├── data.sql              # Seed data (brands)
│   └── drop.sql              # Smazání tabulek
├── docs/                     # Tato dokumentace (VitePress)
├── docker-compose.yml        # Lokální vývoj
├── docker-compose.production.yml  # Produkce
└── Dockerfile                # Node 20 Alpine build

Prostředí

Aplikace používá balíček config s YAML soubory v config/. Přepínání pomocí proměnné NODE_ENV:

bash
NODE_ENV=production npm start   # načte config/production.yaml
NODE_ENV=test npm start         # načte config/test.yaml
# default → config/default.yaml

Viz Konfigurace pro kompletní seznam nastavení.

Atrea User API — interní dokumentace