# INSIGHT-Platform — Developer Briefing

> Dieses Dokument ist der Einstiegspunkt für jede neue Claude Code Session in diesem Repo.
> Lies es vollständig bevor du Code schreibst.

## Was ist dieses Repo?

Die **INSIGHT-Plattform** ist das Fundament aller INSIGHT-Dienste.
Sie stellt Authentifizierung, User-Verwaltung, Berechtigungssystem und die React-Shell bereit,
in die sich fachliche Apps (aus `INSIGHT-Apps`) einbinden.

## Struktur

```
packages/
├── core-service/     # NestJS: Auth, JWT, User, Settings, Expertenprofil, RBAC
└── frontend/         # React 18 + Vite: Shell, Login, Navigation, Admin-Bereich
```

## Abhängigkeiten zu anderen Repos

| Repo | Beziehung |
|------|-----------|
| `INSIGHT-Shared` | Lesen: module-interface.md, api-platform.md — Schreiben: api-platform.md nach Änderungen |
| `INSIGHT-Apps` | Apps registrieren sich via InsightModule-Contract in der Shell |
| `INSIGHT-Infra` | Stellt DBS01 (PostgreSQL + Redis) und APS01 (Docker) bereit |

## Confluence Dokumentation

- **Phase 2 — Plattform:** https://xinion.atlassian.net/wiki/x/oYKSEw
- **Berechtigungskonzept:** https://xinion.atlassian.net/wiki/x/FQCVEw
- **Projekt-Übersicht:** https://xinion.atlassian.net/wiki/spaces/ProjektINS/overview

## Tech Stack

- **Backend:** NestJS 10, TypeScript strict, Prisma ORM
- **Frontend:** React 18, Vite, TanStack Query, React Router
- **Datenbank:** PostgreSQL 16 (auf DBS01, via PgBouncer)
- **Cache:** Redis 7 (auf DBS01)
- **Auth:** JWT RS256, Refresh Token (HttpOnly Cookie), TOTP 2FA

## Sicherheitsregeln (nicht verhandelbar)

- Kein `any` in TypeScript — strict mode immer
- Kein `localStorage` für Tokens (Access: Memory, Refresh: HttpOnly Cookie)
- Globaler `ValidationPipe` (whitelist + forbidNonWhitelisted)
- `@Public()` explizit für öffentliche Routen
- Rollen immer via `@Roles()` + `RolesGuard` auf jedem Endpoint
- Kein raw SQL — ausschließlich Prisma

## RBAC-Modell

```
User
├── platformRole: PLATFORM_ADMIN | USER
└── moduleRoles: { crm: ADMIN | MANAGER | VIEWER, ... }
```

Platform Admin: User-Verwaltung, System-Einstellungen, Modul-Zuweisung
Module Admin: Berechtigungen innerhalb seines Moduls

## Deploy Key (dieses Repo)

```
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK2deXkhf9Ut9728mvxwl+MyFtbjoPRXNbTR2XjmDJVs deploy@INSIGHT-Platform
```

Privater Key: `.keys/deploy_platform_ed25519`

## Aktueller Status

- **Phase:** 2 — Plattform
- **Stand:** Konzeption (Berechtigungskonzept in Klärung)
- **Nächster Schritt:** Berechtigungskonzept finalisieren → Prisma Schema → Auth-Service
