Monorepo & Workflows¶
Das Repo ist ein Bun-Workspace. Die Pakete unter apps/* und packages/* sind in der Root-package.json registriert und referenzieren sich gegenseitig über workspace:*. Gemeinsame Abhängigkeitsversionen werden zentral über den Bun-Catalog in der Root-package.json gepflegt, damit alle Pakete dieselben Versionen nutzen.
Voraussetzungen¶
- Nix mit aktivierten Flakes
- Bun (wird auch von
nix developbereitgestellt) - Docker für die lokale Infrastruktur
NixOS
Auf NixOS solltest du Cypress, die Prisma-CLI und MkDocs innerhalb von nix develop ausführen – sonst fehlen statisch gelinkte Abhängigkeiten.
Erstes Setup¶
nix develop # Toolchain-Shell betreten
bun install # Workspace-Abhängigkeiten installieren
cp .env.example .env # Konfiguration anlegen
bun run dev:infra:up # Postgres, Keycloak, Mailpit, Geocoder starten
bun run db:generate # Prisma-Client erzeugen
bun run db:migrate:deploy
Anschließend die beiden Apps in getrennten Terminals starten:
Lokale Dev-Infrastruktur¶
bun run dev:infra:up startet den Docker-Stack aus docker-compose.dev.yml:
| Dienst | Adresse | Hinweis |
|---|---|---|
| PostgreSQL | localhost:5435 |
Login txride / txride |
| Keycloak | http://localhost:8180 |
Admin admin / admin, Realm txride, User dev / dev |
| Mailpit (UI) | http://localhost:8035 |
abgefangene Test-Mails |
| Mailpit (SMTP) | localhost:1035 |
|
| Nominatim | http://localhost:8085 |
OSM-Daten Sachsen |
| Photon | http://localhost:2322 |
Deutschland-Index, erster Start lädt ~5 GB |
Den Fortschritt der Geocoder beobachten:
bun run dev:geocoders:watch # Status alle 10 s
bun run dev:photon:logs # Live-Logs des Photon-Downloads
bun run smoke:geocoders # wartet, bis beide APIs antworten
Häufige Befehle¶
| Befehl | Zweck |
|---|---|
bun run dev |
Vite-Dev-Server (Web) |
bun run dev:api |
Hono/oRPC-API-Server |
bun run dev:worker |
pg-boss-Worker für Benachrichtigungen |
bun run storybook |
Storybook für die UI-Komponenten |
bun run db:generate |
Prisma-Client generieren |
bun run db:migrate |
Migration in der Entwicklung erstellen/anwenden |
bun run db:migrate:deploy |
Migrationen anwenden (CI/Prod) |
bun run build |
Produktions-Build der Web-App |
bun run typecheck |
TypeScript-Check über das ganze Repo |
bun run test |
Bun-Unit-Tests |
bun run ci:local |
Typecheck + Tests + Build + Doku-Build |
Pakete gemeinsam nutzen¶
Workspace-Pakete werden über ihren @txride/*-Namen importiert – Bun löst sie ohne Build-Schritt auf:
Der Vertrag (packages/contract) ist client-sicher und die gemeinsame Quelle der Wahrheit zwischen API, Web-App und CLI: Er definiert mit oRPC und Zod, welche Prozeduren es gibt und welche Typen sie erwarten und zurückgeben.