Clone
1
Architektur
MrDiderot edited this page 2026-04-14 12:58:44 +02:00

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)