Gongomat Dokumentation
Entwicklungsumgebung für Gongomat einrichten
Diese Anleitung beschreibt Schritt für Schritt, wie Sie eine vollständige Entwicklungsumgebung für das Gongomat-Projekt einrichten.
Grundsätzlich wird empfohlen, Visual Studio 2022 zu verwenden, da es die beste Integration für .NET-Projekte bietet. Alternativ können Sie auch Visual Studio Code nutzen, wenn Sie eine plattformübergreifende Lösung bevorzugen. Das System sollte sowohl in einem Windows wie auch einem Unix Backend laufen.
Entwickelt kann das Projekt auf Windows, macOS und Linux werden. Einige Schritte, insbesondere die Installation von SQL Server, unterscheiden sich jedoch je nach Betriebssystem.
Die Entwicklung in einer Docker-Umgebung ist möglich, wird aber in dieser Anleitung nur spartanisch behandelt. Diese Form der Entwicklung ist auch nicht final getestet worden.
WICHTIG: Der Uhr-Client wird in einem separaten Projekt entwickelt. Für die diesbezügliche Entwicklungsumgebung konsultieren Sie bitte die README.md im Uhr-Client Repository (internauten/GongomatUhr).Inhaltsverzeichnis
- Systemvoraussetzungen
- Software installieren
- Projekt einrichten
- Datenbank konfigurieren
- Projekt starten
- Optionale Entwicklungstools
- Erste Schritte nach der Installation
- Fehlerbehebung
Systemvoraussetzungen
Minimale Anforderungen
- Betriebssystem: Windows 10/11, macOS, oder Linux
- RAM: Mindestens 8 GB (16 GB empfohlen)
- Festplattenspeicher: Mindestens 10 GB frei
- Prozessor: Dual-Core oder besser
Software installieren
1. .NET 8 SDK installieren
Das Projekt verwendet .NET 8, daher muss das entsprechende SDK installiert werden.
- Besuchen Sie: https://dotnet.microsoft.com/download/dotnet/8.0
- Laden Sie das .NET 8 SDK für Ihr Betriebssystem herunter
- Führen Sie die Installation aus
- Überprüfen Sie die Installation im Terminal/PowerShell:
dotnet --version
Die Ausgabe sollte eine Version 8.x.x anzeigen.
2. IDE installieren
Option A: Visual Studio 2022 (empfohlen für Windows)
- Laden Sie Visual Studio 2022 herunter: https://visualstudio.microsoft.com/downloads/
- Installieren Sie die Community Edition (kostenlos) oder höher
- Wählen Sie bei der Installation folgende Workloads aus:
- ✅ ASP.NET and web development
- ✅ .NET desktop development
- ✅ Data storage and processing
- ✅ Azure development (optional)
Hinweis: Visual Studio 2025/2026 ist aktuell noch nicht vollständig kompatibel - nutzen Sie Visual Studio 2022.
Option B: Visual Studio Code (plattformübergreifend)
- Laden Sie VS Code herunter: https://code.visualstudio.com/
- Installieren Sie folgende Extensions:
- C# Dev Kit (Microsoft)
- C# (Microsoft)
- .NET Install Tool (Microsoft)
- SQL Server (mssql) (Microsoft)
- NuGet Package Manager
- GitLens (optional)
- Prettier (empfohlen)
WICHTIG: Konfigurieren sie die IDE so dass sie neue Dateien mit UTF8 und LF als Zeichenende erstellt.Hinweis: VS Code akzeptiert .editorconfig, trotz gegenteiliger Behauptungen, nicht wirklich! Siehe dazu auch UTF8 Encoding
3. SQL Server installieren
Das Projekt verwendet SQL Server als Datenbank.
Windows
- Laden Sie SQL Server 2022 Express herunter: https://www.microsoft.com/de-de/sql-server/sql-server-downloads
- Installieren Sie die Express-Edition (kostenlos)
- Installieren Sie SQL Server Management Studio (SSMS) (optional, aber empfohlen): https://docs.microsoft.com/de-de/sql/ssms/download-sql-server-management-studio-ssms
macOS/Linux
- Installieren Sie SQL Server über Docker:
docker pull mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=YourStrong@Passw0rd" \
-p 1433:1433 --name sqlserver2022 \
-d mcr.microsoft.com/mssql/server:2022-latest
- Oder verwenden Sie Azure Data Studio: https://docs.microsoft.com/de-de/sql/azure-data-studio/download
4. Git installieren
- Laden Sie Git herunter: https://git-scm.com/downloads
- Installieren Sie Git mit den Standardeinstellungen
- Überprüfen Sie die Installation:
git --version
Projekt einrichten
1. Repository klonen
Öffnen Sie ein Terminal/PowerShell und navigieren Sie zum gewünschten Verzeichnis:
git clone -b GomgomatV2 https://github.com/internauten/Gongomat240206.git
cd Gongomat240206
2. NuGet-Pakete wiederherstellen
Stellen Sie alle benötigten NuGet-Pakete wieder her:
dotnet restore
Oder in Visual Studio:
- Rechtsklick auf die Solution → Restore NuGet Packages
3. Projektstruktur verstehen
Gongomat240206/
├── Gongomat/ # Hauptprojekt (Blazor Server)
│ ├── Components/ # Blazor-Komponenten
│ │ ├── Pages/ # Seiten (Routing)
│ │ ├── Api/ # Webservices (json)
│ │ └── Layout/ # Layout-Komponenten
│ ├── Data/ # Entity Framework DbContext & Models
│ ├── Hubs/ # SignalR Hubs
│ ├── Migrations/ # EF Core Migrationen
│ ├── wwwroot/ # Statische Dateien (CSS, JS, Sounds)
│ ├── appsettings.json # Konfiguration (produktiv)
│ ├── appsettings.Development.json # Konfiguration (lokal)
│ └── Program.cs # Anwendungseinstieg
└── README.md
Datenbank konfigurieren
1. Connection Strings einrichten
Das Projekt verwendet zwei Datenbanken:
- DefaultConnection: Für ASP.NET Identity (Benutzer, Rollen)
- GongomatConnection: Für Anwendungsdaten (Gongs, Patterns, etc.)
So kann für die Benutzeridentifikation und die Anwendungsdaten jeweils eine separate Datenbank verwendet werden. Momentan werden beide Entitäten in einer DB geführt.
Entwicklungsumgebung
Hinweis: Legen sie die Connection string, wenn möglich, immer in den user-secrets ab. So besteht keine Gefahr dass diese im Github mit Passwort erscheinen.
Wie unten je nach Art der DB anpasssen:
cd Gongomat
dotnet user-secrets init
dotnet user-secrets set "ConnectionStrings:DefaultConnection" "Server=YOURSERVERNAME;Database=GongomatIdentity;Trusted_Connection=True;MultipleActiveResultSets=true"
dotnet user-secrets set "ConnectionStrings:GongomatConnection" "Server=YOURSERVERNAME;Database=GongomatData;Trusted_Connection=True;MultipleActiveResultSets=true"
Bearbeiten Sie Gongomat/appsettings.Development.json:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=GongomatIdentity;Trusted_Connection=True;MultipleActiveResultSets=true",
"GongomatConnection": "Server=(localdb)\\mssqllocaldb;Database=GongomatData;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
Für SQL Server Express (statt LocalDB):
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost\\SQLEXPRESS;Database=GongomatIdentity;Trusted_Connection=True;TrustServerCertificate=True;MultipleActiveResultSets=true",
"GongomatConnection": "Server=localhost\\SQLEXPRESS;Database=GongomatData;Trusted_Connection=True;TrustServerCertificate=True;MultipleActiveResultSets=true"
}
}
Für Docker SQL Server (Linux/macOS):
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost,1433;Database=GongomatIdentity;User Id=sa;Password=YourStrong@Passw0rd;TrustServerCertificate=True;MultipleActiveResultSets=true",
"GongomatConnection": "Server=localhost,1433;Database=GongomatData;User Id=sa;Password=YourStrong@Passw0rd;TrustServerCertificate=True;MultipleActiveResultSets=true"
}
}
2. Entity Framework Core Tools installieren
Falls noch nicht installiert:
dotnet tool install --global dotnet-ef
Oder aktualisieren:
dotnet tool update --global dotnet-ef
Überprüfen:
dotnet ef
Möglicherweise braucht es noch folgenden Befehl:
cd Gongomat
dotnet tool restore
Tritt ein Fehler auf bei der Installation von dotnet-ef empfiehlt sich folgendes Vorgehen:
dotnet tool uninstall --global dotnet-ef
dotnet nuget locals all --clear
dotnet tool install --global dotnet-ef --version 8.0.14
dotnet tool restore
3. Datenbank-Migrationen ausführen
Hinweis: Dammit die Migration auch getestet wird sollte immer eine Kopie der produktiven DB für das Testsystem verwendet werden.
WICHTIG: Beim ersten Setup müssen Sie zuerst die Migrationen erstellen, bevor Sie sie ausführen können!
Das Projekt verwendet zwei DbContexts, daher müssen die Migrationen für beide ausgeführt werden: (beide werden momentan in einer DB abgelegt, können aber auch getrennt werden)
ApplicationDbContext (Identity)
cd Gongomat
dotnet ef database update --context ApplicationDbContext
GongomatContext (Anwendungsdaten)
dotnet ef database update --context GongomatContext
In Visual Studio über die Package Manager Console:
Update-Database -Context ApplicationDbContext
Update-Database -Context GongomatContext
Hinweis: Die bestehenden Migrationen im Ordner "Migrations/" gehören zum GongomatContext. Die Identity-Migrationen sollten in einem separaten Ordner "Migrations/Identity/" gespeichert werden.
4. Neue Migrationen erstellen (bei Bedarf)
Wenn Sie das Datenbankschema ändern:
# ApplicationDbContext (Identity-Tabellen)
dotnet ef migrations add MigrationName --context ApplicationDbContext --output-dir Migrations/Identity
# GongomatContext (Anwendungsdaten)
dotnet ef migrations add MigrationName --context GongomatContext --output-dir Migrations/Gongomat
In Visual Studio Package Manager Console:
# ApplicationDbContext
Add-Migration MigrationName -Context ApplicationDbContext -OutputDir Migrations\Identity
# GongomatContext
Add-Migration MigrationName -Context GongomatContext -OutputDir Migrations\Gongomat
Migration entfernen (falls Fehler):
dotnet ef migrations remove --context ApplicationDbContext
# oder
dotnet ef migrations remove --context GongomatContext
Tipp: Verwenden Sie immer den Parameter --output-dir bzw. -OutputDir, um die Migrationen der beiden Contexts zu trennen.
Projekt starten
Mit Visual Studio 2022
- Öffnen Sie die Solution-Datei:
Gongomat240206.sln - Warten Sie, bis alle NuGet-Pakete wiederhergestellt sind
- Setzen Sie
Gongomatals Startprojekt (Rechtsklick → Set as Startup Project) - Drücken Sie F5 oder klicken Sie auf Start
- Die Anwendung öffnet sich im Browser unter:
- HTTPS:
https://localhost:7125 - HTTP:
http://localhost:5226
- HTTPS:
Mit Visual Studio Code
- Öffnen Sie den Projektordner in VS Code
- Drücken Sie F5 oder gehen Sie zu Run and Debug
- Wählen Sie .NET Core Launch (web)
- Die Anwendung startet
Mit der Kommandozeile
cd Gongomat
dotnet run
Oder für Hot Reload (automatisches Neuladen bei Code-Änderungen):
dotnet watch run
Optionale Entwicklungstools
SQL Server Management Studio (SSMS)
Für die Verwaltung der SQL Server-Datenbanken:
- Download: https://docs.microsoft.com/de-de/sql/ssms/download-sql-server-management-studio-ssms
- Nützlich für Datenbankabfragen, Schema-Ansichten und Debugging
Azure Data Studio
Plattformübergreifende Alternative zu SSMS:
- Download: https://docs.microsoft.com/de-de/sql/azure-data-studio/download
- Funktioniert auf Windows, macOS und Linux
Postman oder Thunder Client
Für das Testen von API-Endpunkten:
- Postman: https://www.postman.com/downloads/
- Thunder Client (VS Code Extension): Leichtgewichtige Alternative
GitHub Desktop (optional)
Für einfachere Git-Verwaltung:
- Download: https://desktop.github.com/
Erste Schritte nach der Installation
Dies kann entfallen wenn auf einer Kopie der preoduktiven Daten gearbeitet wird.
1. Testbenutzer erstellen
Nach dem ersten Start müssen Sie einen Benutzer registrieren:
- Navigieren Sie zu
/Account/Register - Erstellen Sie einen Account
- Bestätigen Sie die E-Mail (in der Entwicklungsumgebung wird dies simuliert)
2. Rollen zuweisen (optional)
Falls Sie mit Berechtigungen arbeiten möchten, können Sie Rollen über die Datenbank zuweisen:
-- Beispiel: Admin Rolle einfügen
INSERT INTO AspNetRoles (Id, Name, NormalizedName, ConcurrencyStamp)
VALUES (NEWID(), 'Admin', 'ADMIN', NEWID());
-- Beispiel: Benutzer zur Admin-Rolle hinzufügen
INSERT INTO AspNetUserRoles (UserId, RoleId)
SELECT u.Id, r.Id
FROM AspNetUsers u, AspNetRoles r
WHERE u.Email = 'your@email.com' AND r.Name = 'Admin';
3. Tenat einfügen
INSERT INTO tenant (name)
VALUES ('DEKMEDUSZ');
3. Testdaten einfügen
Sie können Testdaten für Gongs, Patterns etc. über die Anwendungs-UI oder direkt in der Datenbank anlegen.
Fehlerbehebung
Problem: "Connection string not found"
Lösung: Stellen Sie sicher, dass appsettings.Development.json korrekt konfiguriert ist und die Connection Strings enthält.
Problem: Migrationen schlagen fehl
Lösung:
Überprüfen Sie die Connection Strings
Stellen Sie sicher, dass SQL Server läuft
Bei ApplicationDbContext: Stellen Sie sicher, dass die initiale Migration existiert:
# Prüfen Sie, ob Migrationen für ApplicationDbContext existieren dotnet ef migrations list --context ApplicationDbContext # Falls keine Migrationen vorhanden sind, erstellen Sie die initiale Migration: dotnet ef migrations add InitialIdentity --context ApplicationDbContext --output-dir Migrations/IdentityLöschen Sie die Datenbanken und führen Sie die Migrationen erneut aus:
dotnet ef database drop --context ApplicationDbContext --force
dotnet ef database drop --context GongomatContext --force
dotnet ef database update --context ApplicationDbContext
dotnet ef database update --context GongomatContext
Problem: "No migrations found" beim ApplicationDbContext
Symptom: Der Befehl dotnet ef database update --context ApplicationDbContext erstellt keine Tabellen.
Lösung: Es existiert keine Migration für den ApplicationDbContext. Erstellen Sie zuerst die initiale Migration:
cd Gongomat
dotnet ef migrations add InitialIdentity --context ApplicationDbContext --output-dir Migrations/Identity
dotnet ef database update --context ApplicationDbContext
Die bestehenden Migrationen im Ordner Migrations/ gehören zum GongomatContext, nicht zum ApplicationDbContext.
Problem: Port bereits belegt
Lösung: Ändern Sie die Ports in Gongomat/Properties/launchSettings.json:
"applicationUrl": "https://localhost:7126;http://localhost:5227"
Problem: NuGet-Pakete können nicht wiederhergestellt werden
Lösung:
- Löschen Sie den NuGet-Cache:
dotnet nuget locals all --clear - Stellen Sie die Pakete erneut wieder her:
dotnet restore
Problem: Blazor Hot Reload funktioniert nicht
Lösung: Verwenden Sie dotnet watch run statt dotnet run
Problem: SignalR-Verbindung schlägt fehl
Lösung:
- Überprüfen Sie die Firewall-Einstellungen
- Stellen Sie sicher, dass der Hub-Endpunkt korrekt konfiguriert ist
- Prüfen Sie die Browser-Konsole auf Fehler
Problem: Git Benutzer unklar
Lösung:
git config --global user.email "ihre@emailadresse.ch"
git config --global user.name "ihrgitbenutzername"
Problem: Windows-Zeilenenden (CRLF) in Docker Definition
Lösung:
sed -i 's/\r$//' .devcontainer/mssql/postCreateCommand.sh
sed -i 's/\r$//' .devcontainer/mssql/installSQLtools.sh
Problem: Unable to configure HTTPS endpoint
Lösung:
- Develope umstellen auf HTTP.
Problem: Failed to bind to address http://[::]:5226: address already in use.
Lösung:
ps aux | grep -E "dotnet.*Gongomat" | grep -v grep
Ausgabe Beispiel:
vscode 15298 0.3 0.7 274666112 119268 ? Sl 13:54 0:00 /usr/bin/dotnet /workspaces/Gongomat240206/Gongomat/bin/Debug/net8.0/Gongomat.dll
15298 ist die Prozess Id. Mit dieser wenden wir den kill force wie folgt an:
kill -9 15298
Unable to find fallback package folder (Container)
Beschreibung in CONTAINER_FIX.md
Weiterführende Ressourcen
- Blazor-Dokumentation: https://learn.microsoft.com/de-de/aspnet/core/blazor/
- Entity Framework Core: https://learn.microsoft.com/de-de/ef/core/
- SignalR: https://learn.microsoft.com/de-de/aspnet/core/signalr/
- ASP.NET Core Identity: https://learn.microsoft.com/de-de/aspnet/core/security/authentication/identity
Projekt-spezifische Besonderheiten
Gongsequenzen
Das Projekt verwendet ein spezielles Konzept der "Gongsequenzen" (siehe README.md):
- Gongpattern: Definition von Gong-Abfolgen mit Intervallen
- Pattern: Tagesablauf mit mehreren Gongpatterns
- Exam: Konkrete Prüfungstermine mit zugewiesenen Patterns
SignalR-Integration
Die Anwendung nutzt SignalR für Echtzeit-Kommunikation:
- ClientHub:
/clienthub- Für Gong-Benachrichtigungen - Clients können sich verbinden und Gongs in Echtzeit empfangen
Multi-Tenancy
Das System unterstützt mehrere Mandanten (Tenants):
- Jeder Tenant hat eigene Gongs, Patterns, Clients etc.
- Datenbanktrennung erfolgt über TenantId
Support
Bei Fragen oder Problemen:
- Prüfen Sie die vorhandene Dokumentation (README.md, GONG_MANAGEMENT.md)
- Schauen Sie in die GitHub Issues
- Erstellen Sie ein neues Issue mit detaillierten Informationen
Stand: November 2025
Projekt: Gongomat V2
Entwicklungsumgebung: .NET 8, Blazor Server, SQL Server
