# SlipItIn Ein Echtzeit-Multiplayer-Partyspiel: Jeder Spieler erhält Phrasen-Karten und versucht, sie unbemerkt in die laufende Runde zu "slippen". Wer einen fremden Slip erkennt, kann ihn anfechten — bei einer falschen Beschuldigung wandert die Phrase allerdings zum Beschuldiger. ## Tech-Stack - **Client:** .NET MAUI (.NET 10) mit CommunityToolkit.Mvvm und SignalR-Client - **Server:** ASP.NET Core 10 Web API + SignalR, EF Core mit PostgreSQL - **Orchestrierung:** .NET Aspire (`SlipItIn.AppHost`) startet Server inklusive PostgreSQL-Container - **Shared:** Gemeinsame Modelle und DTOs in `SlipItIn.Shared` ## Voraussetzungen - .NET 10 SDK - Docker oder Podman (für den PostgreSQL-Container, den Aspire bereitstellt) - MAUI-Workload: `dotnet workload install maui` - Für den Server allein genügt die Aspire-Workload-Unterstützung des SDKs ## Ausführen ```powershell dotnet run --project SlipItIn.AppHost/SlipItIn.AppHost.csproj ``` Der AppHost startet PostgreSQL (Container), wendet EF-Migrationen automatisch an und seedet Testdaten. Die MAUI-App verbindet sich standardmäßig mit `https://localhost:7274` (Android-Emulator: `http://10.0.2.2:5234`). ## Konfiguration | Key | Zweck | | --- | --- | | `Jwt:Key` | Signaturschlüssel für JWT (mindestens 32 Zeichen). **Nicht committen** — via User-Secrets oder Umgebungsvariable setzen. In Development ist ein Fallback-Key hinterlegt; in Production bricht der Server ohne konfigurierten Key den Start ab. | | `Jwt:Issuer` / `Jwt:Audience` | Token-Aussteller bzw. -Empfänger (Defaults: `SlipItInServer` / `SlipItInClient`) | | `ConnectionStrings:postgresdb` | Wird lokal von Aspire injiziert; muss nicht manuell gesetzt werden | ## Projektstruktur - `SlipItIn/` — MAUI-Client (Views, ViewModels, Services, Offline-Queue) - `SlipItIn.Server/` — Web API, SignalR-Hub, EF Core, Migrations - `SlipItIn.Shared/` — Datenbank-Entitäten und SignalR-DTOs - `SlipItIn.AppHost/` — Aspire-Orchestrierung - `SlipItIn.ServiceDefaults/` — Geteilte Aspire-Service-Defaults - `openwiki/` — Generierte Dokumentation (wird automatisch aktualisiert, bitte nicht von Hand editieren) ## Build ```powershell dotnet build SlipItIn.slnx ``` ## Hinweise - Dokumentationssprache: Handgepflegte Dateien (diese README) sind Deutsch, die generierte OpenWiki-Dokumentation ist Englisch. - `.gitignore` enthält noch Einträge für `slipitIn.db` — ein Überbleibsel aus der ursprünglichen SQLite-Planung. Die Anwendung nutzt PostgreSQL.