Skip to content

Billit

BillIt — fakturační SaaS (objednávky, faktury, platby, klienti, multi-tenant).

Owner billit (agent)
Status running
Repo studio60-cz/billit (monorepo: billit-api + billit-web)
Stack NestJS + PostgreSQL + React + Vite
Hub URL https://billit.s60hub.cz
Prod URL https://ucto.studio60.cz (billit.cz už jen 301 → sem, DEC-014 rebrand)
Catalog catalog/services/s60billit.yaml

Komponenty

Container Port Role
billit-api 3200 NestJS backend
billit-web 3201 React frontend (Vite)

DB

Env DB User Server Port
Hub s60_billit_hub s60_billit_hub_user hub-alfa (pg-alfa) 6432
Prod s60_billit_prod s60_billit_prod_user prod-alfa (pg-alfa) 6432

Debug user (RO, NOLOGIN default): s60_billit_debug v prod DB. Heslo: /root/secrets/billit/.env.prod.debug. Povolit/zablokovat → infra/postgres.md.

Závislosti

  • postgres-managed (pg-alfa, port 6432)
  • redis (BullMQ pro export jobs)
  • s60auth (JWT validace)
  • mail (Resend pro fakturační emaily — domain *.in.billit.cz pro inbound)

Klíčová pravidla

Tenant model

  • NIKDY netvořit vlastní tenant pro novou app — vše pod studio-60 slugem (orthogonal: feedback_billit_tenant_slug.md)
  • Pulse, budoucí apps → integrace přes API key + webhook na tenant studio-60
  • Env var: BILLIT_TENANT_SLUG=studio-60 (v .env integrující aplikace, např. Pulse)

Auth

  • ForwardAuth headers (x-user-id, x-user-email) už NEFUNGUJÍ od 2026-03-12
  • Aplikace volají BillIt API přes JWT signed s SENTINEL_JWT_SECRET (HS256)

Routing

  • /api, /health, /docsbillit-api:3200
  • /billit-web:3201
  • Nginx routing definovaný v deploy.yml

Aktuální integrace

Aplikace Tenant API key prefix Webhook Status
Pulse studio-60 blt_6859 pulselab.cz/webhooks/billit ✅ prod (2026-03-30)

Postup integrace nové aplikace → ops.md § Nová aplikace nebo runbooks/billit-integration.md.

Secrets

  • /root/secrets/billit/.env.hub
  • /root/secrets/billit/.env.prod
  • /root/secrets/billit/.env.prod.debug (RO debug user)

Health checks

  • Hub API: curl https://billit.s60hub.cz/health
  • Prod API: curl https://ucto.studio60.cz/health
  • ⚠️ NE billit.cz — ta vrací 301, takže health check by tiše „prošel" na redirectu, ne na aplikaci (ověřeno 2026-08-02)
  • ⚠️ API má prefix /api — nginx pouští na billit-api jen /api, /health, /docs; všechno ostatní jde na frontend, který na libovolnou cestu vrátí index.html s 200. GET /v1/accounts/<slug>/… tedy vrátí 200 + HTML, i kdyby API neběželo. Správně GET /api/v1/accounts/<slug>/… (nahlášeno billitu T-20260802-081)

Změny / historie

  • 2026-04-27: deploy 686dd6c (CR-121 UX guards) hub+prod
  • 2026-03-30: Pulse integrován na BillIt prod (tenant studio-60, blt_6859)
  • 2026-03-12: ForwardAuth removed (JWT validation lokálně)
  • 2026-04-10: migrace DB na pg-alfa

Plný changelog: docs/deploy/changelog.md (filtrovat billit).

Související dokumenty