No results
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:
- API: http://localhost:3000
- Web: http://localhost:5173
- Expo: folgt der Terminalausgabe (Expo Go / Android Emulator)
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
- Issue anlegen in Forgejo (immer zuerst!)
- Branch erstellen:
git checkout -b <issue-nr>-kurzbeschreibung - Commits auf dem Branch
- Push + Pull Request öffnen
- Kein direktes Pushen auf
main
Troubleshooting
pnpm install schlägt fehl
→ corepack enable ausgeführt? Node-Version korrekt?
API startet nicht
→ PostgreSQL läuft? DATABASE_URL korrekt in .env?
Metro kann @mrrmlab/shared-types nicht auflösen
→ pnpm 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