Auch verfügbar in: 🇬🇧 English

Entwicklung

Inhalt

🇬🇧 English Version


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:


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.md im Repository-Root
  • Lizenz: AGPL-3.0 — alle Beiträge werden unter denselben Bedingungen lizenziert
  • Attribution: © Benjamin Weber · ITSWEBER bleibt 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