1 Lokale Entwicklung
mrrmlab Wiki edited this page 2026-05-02 18:03:36 +02:00

Lokale Entwicklung

Voraussetzungen

Tool Version Installation
Node.js 24+ nodejs.org / fnm / nvm
pnpm 9.15.0 corepack enable && corepack prepare pnpm@9.15.0 --activate
git beliebig OS-Paketmanager
PostgreSQL 16+ Docker (empfohlen) oder nativ

Setup

# 1. Repository klonen
git clone https://git.mrrm.de/admin-mrrm/mrrmlabapp.git
cd mrrmlabapp

# 2. pnpm aktivieren
corepack enable && corepack prepare pnpm@9.15.0 --activate

# 3. Alle Abhängigkeiten installieren
pnpm install

# 4. PostgreSQL starten (Docker)
docker compose -f apps/api/docker-compose.yml up -d
# User: mrrmlab | Passwort: mrrmlab | DB: mrrmlab | Port: 5432

# 5. .env-Dateien anlegen
cp apps/api/.env.example apps/api/.env
cp apps/web/.env.example apps/web/.env.local
# KC_*-Variablen leer lassen → Dev-Passthrough (kein Keycloak nötig)

# 6. Dev-Server starten
pnpm dev

Verfügbare URLs nach pnpm dev:

PostgreSQL ohne Docker (Termux)

pkg install postgresql
mkdir -p $PREFIX/var/lib/postgresql
initdb -U postgres $PREFIX/var/lib/postgresql
pg_ctl -D $PREFIX/var/lib/postgresql -l $PREFIX/var/log/postgresql.log start
psql -U postgres -c "CREATE USER mrrmlab WITH PASSWORD 'mrrmlab';"
psql -U postgres -c "CREATE DATABASE mrrmlab OWNER mrrmlab;"

Häufige Befehle

# Alles bauen
pnpm build

# Einzelne App/Package
pnpm -F @mrrmlab/api dev
pnpm -F @mrrmlab/web dev
pnpm -F @mrrmlab/mobile start

# Linting & Typen
pnpm lint
pnpm typecheck

# Tests
pnpm test

# Datenbank (API)
pnpm -F @mrrmlab/api db:generate    # Migrationen aus Schema generieren
pnpm -F @mrrmlab/api db:migrate     # Migrationen anwenden
pnpm -F @mrrmlab/api db:studio      # Web-UI für Datenbank

# Aufräumen
pnpm clean

Umgebungsvariablen

apps/api/.env

NODE_ENV=development
PORT=3000
DATABASE_URL=postgresql://mrrmlab:mrrmlab@localhost:5432/mrrmlab

# Keycloak — leer lassen für Dev-Passthrough
KC_ISSUER=
KC_JWKS_URI=
KC_AUDIENCE=

# OCR-Service URL — leer lassen wenn nicht genutzt
OCR_SERVICE_URL=

# CORS — kommagetrennte Origins
CORS_ORIGINS=http://localhost:5173

apps/web/.env.local

VITE_API_BASE_URL=http://localhost:3000
VITE_KC_ISSUER=
VITE_KC_CLIENT_ID=mrrmlab-web
VITE_KC_REDIRECT_URI=http://localhost:5173/auth/callback
VITE_KC_POST_LOGOUT_REDIRECT_URI=http://localhost:5173/

apps/mobile/.env.local

EXPO_PUBLIC_API_BASE_URL=http://localhost:3000
EXPO_PUBLIC_KC_ISSUER=
EXPO_PUBLIC_KC_CLIENT_ID=mrrmlab-mobile
EXPO_PUBLIC_KC_REDIRECT_URI=mrrmlab://auth/callback
EXPO_PUBLIC_KC_POST_LOGOUT_REDIRECT_URI=mrrmlab://

Git-Workflow

  1. Issue anlegen in Forgejo (immer zuerst!)
  2. Branch erstellen: git checkout -b <issue-nr>-kurzbeschreibung
  3. Commits auf dem Branch
  4. Push + Pull Request öffnen
  5. Kein direktes Pushen auf main

Troubleshooting

pnpm install schlägt fehlcorepack enable ausgeführt? Node-Version korrekt?

API startet nicht → PostgreSQL läuft? DATABASE_URL korrekt in .env?

Metro kann @mrrmlab/shared-types nicht auflösenpnpm exec turbo run build --filter=@mrrmlab/shared-types ausführen

Typecheck schlägt fehl mit "cannot find module"pnpm install erneut ausführen, dann pnpm build