- Rebranding: chessu → Michess (Header, Footer, Metadata, Session-Cookie) - Stockfish KI-Integration: 6 Schwierigkeitsgrade (Anfänger bis Meister) - Admin-Panel: Nutzerverwaltung, Sperren/Entsperren, Git-Pull-Update - Freundessystem: Anfragen, Freundesliste, Nutzersuche - DB-Schema: role, banned, friend_request, friendship Tabellen - Docker: NAS-optimiertes docker-compose.yml mit PostgreSQL Healthcheck - Stockfish binary via apk im Alpine-Image installiert - .env.example für einfaches Deployment - scripts/update.sh für manuelles NAS-Update - Brain.md + Plan.md als Projekt-Gedächtnis Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
4.2 KiB
4.2 KiB
Brain.md — Michess Project Memory
Dieses Dokument ist mein aktives Gedächtnis während der Entwicklung von Michess. Ich denke hier, notiere Entscheidungen, Probleme und Fortschritt.
Projektziel
Michess = Lichess-inspirierte Schachplattform, self-hosted auf einer NAS, in Docker, mit Stockfish-Engine.
Tech Stack (Entschieden)
| Schicht | Technologie | Grund |
|---|---|---|
| Frontend | Next.js 14 + React + Tailwind + daisyUI | Von chessu geerbt, modern, SSR-fähig |
| Backend | Node.js + Express + Socket.io | Von chessu geerbt, real-time-ready |
| Datenbank | PostgreSQL | Von chessu geerbt, solide |
| Auth | express-session + argon2 | Bereits vorhanden, sicher |
| Schach-Logik | chess.js | Bereits vorhanden |
| Schachbrett UI | react-chessboard | Bereits vorhanden |
| Stockfish | stockfish npm-Paket | Einfache Integration im Backend |
| Container | Docker Compose | NAS-Deployment |
| Package Manager | pnpm Workspaces | Monorepo-Setup |
Basis-Projekt
- Geclont von:
dotnize/chessu(MIT-Lizenz) - Warum: TypeScript, React/Next.js, Express, Socket.io, PostgreSQL, chess.js — perfekter Ausgangspunkt
- Was chessu schon hat:
- User-Accounts (name, email, password, wins/losses/draws)
- Session-Auth mit argon2-Passwort-Hashing
- Real-time Multiplayer via Socket.io
- Spiele mit PGN-Speicherung
- Public Games Liste
- Archiv (gespielte Partien)
- User-Profilseite
Was ich bauen muss (Delta zu chessu)
- Stockfish AI-Gegner — verschiedene Schwierigkeitsgrade (Level 1-8, ELO-basiert)
- Admin-Panel — Nutzerverwaltung, Git-Pull-Button, Statistiken
- Freundessystem — Freundschaftsanfragen, Freundesliste, Freunde herausfordern
- Branding — Alles auf "Michess" umbenennen
- Docker NAS-Deployment — docker-compose für NAS, Auto-Update-Script
- DB-Schema Erweiterungen — admin-Flag, friends-Tabelle, friend_requests-Tabelle
- E-Mail-basierte Registrierung — (email-Feld schon da, braucht UI-Flow: email → unique username wählen)
Architektur-Entscheidungen
Stockfish im Backend
- Stockfish läuft als Child-Process auf dem Server (NAS)
- Kommunikation über UCI-Protokoll
- Schwierigkeitsgrade via
Skill Level(0-20) undDepth - Pro aktiver AI-Partie: eigener Stockfish-Prozess (oder Pool)
Admin-Rolle
roleSpalte inuser-Tabelle (default: 'user', admin: 'admin')- Erster User mit email aus
ADMIN_EMAILenv var wird automatisch Admin - Admin-Middleware schützt
/v1/admin/*Routen
Friends-System
friends-Tabelle: user_id_1, user_id_2 (symmetrisch)friend_requests-Tabelle: from_id, to_id, status (pending/accepted/rejected)- Nutzer suchen via Username
Git-Auto-Update (Admin-Feature)
- Admin-Route:
POST /v1/admin/update - Führt
git pullim Container-Verzeichnis aus - Triggert danach Neustart (via restart-policy des Containers)
- Update-Script wird ins Docker-Image eingebaut
Docker NAS-Setup
docker-compose.ymlmit Services:michess-app+postgres- Watchtower oder einfaches update-script für automatische Updates
- Alle Credentials via
.env-Datei
Aktueller Status
- Basis-Projekt geclont (chessu)
- Brain.md erstellt
- Plan.md erstellt
- Git remote auf
git.mischlabs.degesetzt - Projekt auf "Michess" umbenannt
- DB-Schema erweitert (admin, friends, friend_requests)
- Stockfish integriert
- Admin-Panel gebaut
- Friends-System gebaut
- Docker NAS-Deployment finalisiert
- Alles committed & gepusht
Bekannte Probleme / Offene Fragen
- chessu's Dockerfile nutzt
CMD ["start"]— muss für Michess angepasst werden (Server + Client separat oder zusammen) - Stockfish binary muss im Docker-Image vorhanden sein (Alpine Linux:
apk add stockfishoder npm-Paket) - Admin-Git-Pull: funktioniert nur wenn Container read-write Zugriff auf sein eigenes Verzeichnis hat — besser: Host-Script via webhook triggern
Lessons Learned
(wird im Verlauf befüllt)
Nächste Schritte (immer aktuell)
- Git remote setzen → push
- Umbenennen chessu → Michess
- DB-Schema erweitern
- Stockfish backend einbauen
- Admin-Panel UI + Backend
- Friends-System
- Docker finalisieren
- Issues aus Git bearbeiten