diff --git a/README.md b/README.md index e56dd4f..da8f7c8 100644 --- a/README.md +++ b/README.md @@ -1 +1,189 @@ -# JudoWebsurf +# JudoWeb + +Eine moderne Webanwendung für das Judoteam Stadtlohn - mit Vereinspräsentation und Verwaltungssystem. + +## Projektbeschreibung + +JudoWeb ist eine Full-Stack-Webanwendung, die zwei Hauptzwecke erfüllt: + +- **Öffentliche Vereinswebsite**: Präsentation des Judoclubs mit Informationen zu Judo, Vereinswerten (Respekt, Disziplin, Selbstbehauptung) und Veranstaltungen +- **Verwaltungssystem**: Benutzerverwaltung, Registrierung und Altersgruppenmanagement + +### Features + +- Responsive Homepage mit Bildkarussell (Würfe, Haltetechniken, Stabilitätstraining) +- Veranstaltungsübersicht (Nikolausturnier, Wettkämpfe, Kinoabende) +- Benutzerauthentifizierung mit Registrierungsschlüsseln +- Altersgruppenmanagement +- Dark/Light Theme-Umschaltung +- Mobile-optimiertes Design + +## Technologie-Stack + +### Backend +- **.NET 9.0** mit ASP.NET Core Web API +- **Entity Framework Core 9** - ORM +- **ASP.NET Core Identity** - Authentifizierung +- **Swagger/Swashbuckle** - API-Dokumentation + +### Frontend +- **Vue.js 3** mit TypeScript +- **Vite** - Build-Tool und Entwicklungsserver +- **Vuetify 3** - Material Design Komponenten +- **Vue Router** - Client-seitiges Routing + +### Datenbank +- **SQLite** (Entwicklung) +- **PostgreSQL** (Produktion) + +### Zusätzliche Services +- **Plunk** - E-Mail-Versand + +## Projektstruktur + +``` +JudoWeb/ +├── API/ # Backend (.NET) +│ ├── Controllers/ # API-Endpunkte +│ │ ├── AgeGroupController.cs +│ │ ├── AuthController.cs +│ │ └── RegistrationKeyController.cs +│ ├── Models/ +│ │ ├── Internal/ # Domain-Modelle +│ │ └── Outgoing/ # DTOs +│ ├── Database/ # EF Core Kontext +│ ├── Repository/ # Datenzugriff +│ ├── Services/ # Business-Logik +│ └── Migrations/ # Datenbank-Migrationen +│ +├── GUI/ # Frontend (Vue.js) +│ ├── src/ +│ │ ├── routes/ # Seiten-Komponenten +│ │ ├── components/ # Wiederverwendbare Komponenten +│ │ ├── plugins/ # Vue-Plugins +│ │ └── router/ # Router-Konfiguration +│ └── public/static/ # Statische Assets +│ +└── JudoWeb.sln # Visual Studio Solution +``` + +## Installation & Setup + +### Voraussetzungen + +- [.NET 9.0 SDK](https://dotnet.microsoft.com/download) +- [Node.js](https://nodejs.org/) (LTS-Version empfohlen) +- Optional: [Visual Studio 2022](https://visualstudio.microsoft.com/) oder [VS Code](https://code.visualstudio.com/) + +### Frontend einrichten + +```bash +cd GUI +npm install +``` + +### Backend einrichten + +```bash +cd API +dotnet restore +``` + +## Entwicklung starten + +### Frontend (mit Hot-Reload) + +```bash +cd GUI +npm run dev +``` + +Der Entwicklungsserver startet unter `http://localhost:5173` + +### Backend + +```bash +cd API +dotnet run +``` + +Die API ist verfügbar unter: +- HTTP: `http://localhost:5246` +- HTTPS: `https://localhost:7248` +- Swagger UI: `https://localhost:7248/swagger` + +## Verfügbare Scripts + +### Frontend (GUI/) + +| Befehl | Beschreibung | +|--------|--------------| +| `npm run dev` | Startet Entwicklungsserver | +| `npm run build` | Erstellt Produktions-Build | +| `npm run test:unit` | Führt Unit-Tests aus | +| `npm run type-check` | TypeScript-Typprüfung | +| `npm run format` | Code-Formatierung mit Prettier | + +### Backend (API/) + +| Befehl | Beschreibung | +|--------|--------------| +| `dotnet run` | Startet Entwicklungsserver | +| `dotnet build` | Kompiliert das Projekt | +| `dotnet publish -c Release` | Erstellt Produktions-Build | +| `dotnet ef database update` | Wendet Migrationen an | + +## Datenbank-Konfiguration + +Die Anwendung wählt automatisch die Datenbank basierend auf der Konfiguration: + +1. **PostgreSQL** (Produktion): Wenn `PostgresConnection` in `appsettings.json` oder als Umgebungsvariable gesetzt ist +2. **SQLite** (Entwicklung): Standardmäßig wird `app.db` verwendet + +Datenbank-Migrationen werden beim Anwendungsstart automatisch ausgeführt. + +### Beispiel PostgreSQL-Konfiguration + +```json +{ + "ConnectionStrings": { + "PostgresConnection": "Host=localhost;Database=judoweb;Username=user;Password=pass" + } +} +``` + +## API-Endpunkte + +| Endpunkt | Beschreibung | +|----------|--------------| +| `GET /api/ageGroups` | Alle Altersgruppen abrufen | +| `POST /api/ageGroups` | Neue Altersgruppe erstellen | +| `PUT /api/ageGroups/{id}` | Altersgruppe aktualisieren | +| `DELETE /api/ageGroups/{id}` | Altersgruppe löschen | +| `POST /api/account/register` | Benutzer registrieren | +| `POST /api/account/login` | Benutzer anmelden | +| `GET /api/registrationKey` | Registrierungsschlüssel abrufen | + +Vollständige API-Dokumentation ist über Swagger UI verfügbar. + +## Produktion + +### Frontend bauen + +```bash +cd GUI +npm run build +``` + +Das Build wird in `../wwwroot/` ausgegeben und vom Backend als statische Dateien serviert. + +### Backend publizieren + +```bash +cd API +dotnet publish -c Release -o ./publish +``` + +## Lizenz + +Dieses Projekt ist proprietär und gehört dem Judoteam Stadtlohn.