docs: add wiki page

2026-04-14 12:58:44 +02:00
parent 1d069e6bd6
commit 8a3fe4a436

70
Architektur.md Normal file

@@ -0,0 +1,70 @@
# Architektur
## Monorepo-Struktur
```
michess/
├── client/ # Next.js 14 Frontend
├── server/ # Express.js Backend
├── types/ # Gemeinsame TypeScript-Typen (@michess/types)
├── docker-compose.yml
├── Dockerfile
└── pnpm-workspace.yaml
```
## Client (`client/src/`)
```
app/ # Next.js App Router (Seiten)
├── page.tsx # Startseite
├── [code]/ # Aktive Partie
├── archive/[id]/ # Archivierte Partie (PGN-Viewer)
├── ai/ # KI-Partie
├── correspondence/ # Tagespartien
├── tournament/ # Turniere
├── friends/ # Freunde
├── user/[name]/ # Nutzerprofil
├── settings/ # Kontoeinstellungen
└── admin/ # Admin-Panel
components/ # Wiederverwendbare Komponenten
├── game/ # Spielbrett, Züge, Socket-Events
├── home/ # Startseite-Karten
├── Header.tsx # Navigation + Benachrichtigungsglocke
├── NotificationPanel.tsx # Benachrichtigungs-Dropdown
└── AuthModal.tsx # Login/Register/Gast-Modal
context/
├── session.ts # Nutzer-Session (global)
├── ContextProvider.tsx # Wrapper für alle Contexts
└── NotificationContext.tsx # Echtzeit-Benachrichtigungen
```
## Server (`server/src/`)
```
controllers/ # Business-Logik
db/
├── index.ts # DB-Verbindung + INIT_TABLES
└── models/ # Datenbankmodelle
middleware/
├── auth.ts # requireAuth, requireAdmin
└── session.ts # express-session
routes/ # Express-Router
socket/
├── index.ts # Socket.io-Verbindungen, Online-Tracking
├── game.socket.ts # Spielereignisse
└── state.ts # Gemeinsamer Socket-Zustand
server.ts # Einstiegspunkt
```
## Datenfluss
```
Browser ──HTTP──> Next.js (SSR/CSR)
──API──> Express /v1/...
──WS───> Socket.io (Echtzeit)
PostgreSQL (pg.Pool)
Stockfish (child_process)
```