Files
abdulive/README.md
T

82 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# abdulive-toolkit
Werkzeugkasten für den Twitch-Kanal **abdulive_**. Ein Monorepo mit mehreren
kleinen Diensten, die sich einen gemeinsamen Kern teilen: Twitch-Auth,
Helix-Client, EventSub/IRC-Ingest und eine SQLite-Datenbank.
TypeScript auf Node 24, **ohne Laufzeitabhängigkeiten und ohne Build-Schritt** —
Node führt die `.ts`-Dateien direkt aus, SQLite und WebSocket sind eingebaut.
Betrieb über Docker Compose.
Zielgröße des Kanals: ~5–30 gleichzeitige Zuschauer. Alles hier ist auf diese
Phase optimiert — nicht auf Skalierung, sondern auf **Wachstum und Bindung**.
## Die neun Tools
| # | Tool | Ordner | Zweck | Status |
|---|------|--------|-------|--------|
| 1 | Clip-to-Shorts | `apps/clipper` | Clips → 9:16 mit Untertiteln, Upload-fertig | geplant |
| 2 | Go-Live-Broadcaster | `apps/broadcaster` | Stream-Start → Discord/Bluesky/Instagram | geplant |
| 3 | Raid- & Netzwerk-Tool | `apps/raid-scout` | Raid-Ziele finden, Raid-Historie führen | geplant |
| 4 | Analytics-Dashboard | `apps/dashboard` | Viewer vs. Chat, Titel-Performance, Retention | geplant |
| 5 | VOD-Kapitel | `apps/vod-chapters` | Szenen-/Kategoriewechsel → Timestamps | geplant |
| 6 | Community-Gedächtnis | `apps/community` | Chatter-Profile, Begrüßungen, Overlay-Hinweise | geplant |
| 7 | Chat steuert Dinge | `apps/overlay-server` + `apps/overlay-web` | Overlay, Soundboard, Minigames, Umfragen | geplant |
| 8 | Punktesystem + Shop | `apps/loyalty` | Punkte mit echten Konsequenzen | geplant |
| 9 | Stream-Recap | `apps/recap` | Zusammenfassung nach Streamende in Discord | geplant |
Dazu der Dienst, der unter allen anderen liegt:
| — | **Ingest-Daemon** | `apps/ingest` | IRC + Helix → DB, Einrichtungsseite | **läuft** |
## Doku
- [`docs/00-overview.md`](docs/00-overview.md) — Was hier gebaut wird und warum
- [`docs/01-architecture.md`](docs/01-architecture.md) — Aufbau, Datenfluss, Prozesse
- [`docs/02-twitch-integration.md`](docs/02-twitch-integration.md) — Auth, Scopes, EventSub, Rate Limits
- [`docs/03-data-model.md`](docs/03-data-model.md) — Datenbankschema
- [`docs/04-roadmap.md`](docs/04-roadmap.md) — Reihenfolge und Meilensteine
- [`docs/05-setup.md`](docs/05-setup.md) — Lokal einrichten
- [`docs/06-hebel-analyse.md`](docs/06-hebel-analyse.md) — **Womit anfangen und warum**
- [`docs/07-mvp-plan.md`](docs/07-mvp-plan.md) — **MVP „Clip-Knopf": Umfang, Scheiben, Zeitplan**
- [`docs/handoff.md`](docs/handoff.md) — **Übergabe: Stand, Fallstricke, wo weitermachen**
- [`docs/offene-punkte.md`](docs/offene-punkte.md) — was noch fehlt
- [`docs/obs-layout.md`](docs/obs-layout.md) — die Layout-Vorgabe für OBS
- [`docs/projects/`](docs/projects/) — je ein Spec-Dokument pro Tool
- [`docs/decisions/`](docs/decisions/) — Architekturentscheidungen (ADRs)
## Schnellstart
Alles läuft in Docker — auf dem Rechner werden nur Docker Desktop und OBS
gebraucht, ffmpeg und whisper.cpp stecken im Image.
Siehe [`docs/05-setup.md`](docs/05-setup.md).
```powershell
Copy-Item config\config.example.yaml config\config.yaml
docker compose build
docker compose run --rm toolkit check-env
docker compose run --rm toolkit fetch-model
docker compose up -d
```
Dann **http://localhost:4792/setup** öffnen und die Twitch-Zugangsdaten
eintragen. Sie werden verschlüsselt im Docker-Volume abgelegt, nicht in einer
Datei im Projekt ([ADR-0005](docs/decisions/ADR-0005-zugangsdaten.md)).
## Aktueller Stand
Vier von sieben Scheiben des MVP „Clip-Knopf" sind gebaut: Container-Toolchain,
Einrichtung im Browser, Twitch-Auth, Datenbank, Chat-Aufnahme, OBS-Anbindung mit
`!clip`, 9:16-Render und Untertitel. 53 Tests grün.
Offen: die Abnahme der OBS-Anbindung an einem laufenden OBS, dann S5 —
Onboarding-Assistent und Sichtungsseite.
Details: [`docs/handoff.md`](docs/handoff.md)
## Tests
```powershell
docker run --rm -v "${PWD}:/app" -w /app node:24-bookworm-slim node --test "packages/**/*.test.ts" "apps/**/*.test.ts"
```