diff --git a/Architektur.md b/Architektur.md new file mode 100644 index 0000000..7a10bb0 --- /dev/null +++ b/Architektur.md @@ -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) +```