Fügt für Windows den Startmodus `--no-storage` hinzu, der Token-, Benutzer-, Spiel-, Hand- und Queue-Daten nur im Speicher hält; passt die Registrierung in `MauiProgram.cs` an, setzt das Profil **Windows Machine** standardmäßig darauf, erweitert `LocalStorageService` um den deaktivierten Modus und dokumentiert den Start in der README.
62 lines
2.9 KiB
Markdown
62 lines
2.9 KiB
Markdown
# 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`).
|
|
|
|
Für Windows-Entwicklung kann die Client-App ohne persistente lokale Speicherung gestartet werden:
|
|
|
|
```powershell
|
|
dotnet run --project SlipItIn\SlipItIn.csproj -f net10.0-windows10.0.19041.0 -- --no-storage
|
|
```
|
|
|
|
In diesem Modus werden weder Token noch lokale Benutzer-, Spiel- oder Offline-Daten gelesen oder geschrieben. Die Sitzung bleibt nur im Arbeitsspeicher der laufenden App erhalten und geht beim Beenden verloren.
|
|
|
|
## 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.
|