Entwicklung
Inhalt
ITSWEBER Play ist ein pnpm-Monorepo mit mehreren Apps und Paketen. Dieser Leitfaden beschreibt den Einstieg in die lokale Entwicklungsumgebung.
Voraussetzungen
| Werkzeug | Mindestversion | Hinweis |
|---|---|---|
| Node.js | 22 LTS | Empfohlen: aktuelle LTS-Version |
| pnpm | 9.x | Über Corepack installiert, nicht separat |
| Docker | 24+ | Docker Desktop oder Docker Engine |
| Docker Compose | v2 | Als Plugin (docker compose) |
| Git | 2.x |
pnpm-Hinweis
pnpm wird über Corepack verwaltet, das in Node.js 22 enthalten ist. Kein separater pnpm-Install nötig:
corepack enable
pnpm --version # Bestätigt die aktive Version
Auf Windows ist pnpm nach corepack enable direkt im PATH verfügbar. Alternativ kann pnpm explizit aufgerufen werden:
node "C:/Program Files/nodejs/node_modules/corepack/dist/pnpm.js" install
Setup
git clone https://github.com/ITSWEBER-OFFICIAL/itsweber-play
cd itsweber-play
corepack enable
pnpm install
cp .env.example .env
docker compose -f docker-compose.dev.yml up -d
pnpm dev
Nach dem Start sind die Dienste erreichbar unter:
- Web: http://localhost:3001
- API: http://localhost:3002
- Prisma Studio:
pnpm --filter @play/db exec prisma studio→ http://localhost:5555
Projekt-Struktur
| Verzeichnis | App/Paket | Technologie | Dev-Port |
|---|---|---|---|
apps/web |
Web-Frontend | Next.js 15 (App Router, RSC) | 3001 |
apps/api |
Backend-API | Fastify + tRPC + Better Auth | 3002 |
apps/worker |
Video-Worker | BullMQ + FFmpeg + yt-dlp | — (Hintergrund) |
apps/remotion |
Demo-Rendering | Remotion | 3003 |
packages/db |
Datenbank-Client | Prisma Schema + Client | — |
packages/theme |
Theme-System | 6-Ebenen-Token-System | — |
packages/shared |
Gemeinsame Typen | TypeScript Enums/Typen | — |
packages/storage |
Speicher-Client | MinIO-Client-Wrapper | — |
docker/all-in-one |
Docker-Image | Dockerfile + s6-overlay + Nginx | — |
Nützliche Befehle
pnpm dev
pnpm --filter @play/web dev
pnpm --filter @play/api dev
pnpm --filter @play/api exec tsc --noEmit
pnpm typecheck
pnpm --filter @play/db exec prisma studio
pnpm --filter @play/db exec prisma migrate dev --name beschreibung
pnpm --filter @play/db exec prisma generate
docker compose -f docker-compose.dev.yml logs -f
docker compose -f docker-compose.dev.yml down
pnpm test
pnpm lint
Commit-Konventionen
ITSWEBER Play verwendet Conventional Commits:
type(scope): betreff
Erlaubte Typen:
| Typ | Verwendung |
|---|---|
feat |
Neue Funktion |
fix |
Fehlerbehebung |
chore |
Wartung, Abhängigkeits-Updates, Build-Konfiguration |
docs |
Dokumentationsänderungen |
refactor |
Code-Umstrukturierung ohne Funktionsänderung |
test |
Tests hinzufügen oder anpassen |
perf |
Performance-Verbesserungen |
Scopes entsprechen den App-/Paket-Namen: web, api, worker, db, theme, shared, docker.
Beispiele:
feat(api): add yt-dlp import endpoint
fix(web): show correct upload progress on retry
chore(deps): update prisma to 6.2.1
docs(wiki): add German theming documentation
Beitragen
Beiträge sind willkommen. Bitte vor größeren Änderungen ein Issue eröffnen, um den Scope abzusprechen.
- Informationen zu PR-Richtlinien und Code-Standards:
CONTRIBUTING.mdim Repository-Root - Lizenz: AGPL-3.0 — alle Beiträge werden unter denselben Bedingungen lizenziert
- Attribution:
© Benjamin Weber · ITSWEBERbleibt unveränderlich
Scope-Einschränkungen:
- Keine privaten Informationen (IPs, interne Pfade, persönliche Daten) im öffentlichen Repository
- Kein Branding-Override in Code oder Dokumentation (Instanz-Branding erfolgt via
NEXT_PUBLIC_*-ENV)
Architektur-Hinweise
Wichtige Konventionen für Beitragende:
- Icons: Feather-Style SVGs über
<Icon name="..." />— keine Emoji, keine anderen Icon-Libraries - Fehler-UX: Validation-Errors immer als lesbarer Deutsch-Text im Toast; niemals rohe Zod-Objekte
- Prisma-Migrations: Ordnernamen
session_a_*/session_k_*nicht umbenennen — Tracking-Referenzen brechen sonst - s6-overlay-Reihenfolge:
postgres-init → postgres → migrate → minio → redis → api/worker/web → nginx - Vollständige Architekturdoku: Architektur
© Benjamin Weber · ITSWEBER — play.itsweber.net · GitHub