116 lines
2.6 KiB
Markdown
116 lines
2.6 KiB
Markdown
# 🏋️♂️ Trainings- und Anwesenheitsverwaltung API
|
|
|
|
Dies ist eine REST-API zur Verwaltung von Trainingseinheiten, Anwesenheiten und Geräteplänen für Sportabteilungen.
|
|
Die API basiert auf **Node.js**, **Express** und **PostgreSQL**.
|
|
|
|
## 🚀 Installation
|
|
|
|
1. **Repository klonen:**
|
|
|
|
```sh
|
|
git clone <REPO-URL>
|
|
cd trainings-api
|
|
```
|
|
|
|
2. **Abhängigkeiten installieren:**
|
|
|
|
```sh
|
|
npm install
|
|
```
|
|
|
|
3. **Datenbank konfigurieren:**
|
|
|
|
Datei .env aus .env_default erstellen und die PostgreSQL-Verbindungsdaten und Mailzugangsdaten hinterlegen:
|
|
```sh
|
|
cp .env_default .env
|
|
```
|
|
|
|
1. **Server starten**
|
|
|
|
```sh
|
|
npm start
|
|
```
|
|
|
|
## 📌 API-Endpunkte
|
|
|
|
### 🔐 Authentifizierung & Middleware
|
|
|
|
Alle Endpunkte sind durch JWT gesichert.
|
|
|
|
requireAuth → Benutzer muss eingeloggt sein.
|
|
requireAdmin → Benutzer benötigt Admin-Rechte.
|
|
|
|
### 📋 Mitgliederverwaltung
|
|
|
|
GET /member/:id?
|
|
📌 Gibt Mitgliederinformationen zurück
|
|
|
|
/member → Liste aller Mitglieder
|
|
/member/:id → Einzelnes Mitglied
|
|
PUT /member/:id?
|
|
📌 Fügt Mitglieder hinzu oder aktualisiert sie
|
|
|
|
Ohne id → Neues Mitglied
|
|
Mit id → Mitglied aktualisieren
|
|
DELETE /member/:id
|
|
📌 Löscht ein Mitglied (Admin erforderlich)
|
|
|
|
### 📅 Trainingsverwaltung
|
|
|
|
GET /:abteilung/trainings/:jahr?/:kw?
|
|
📌 Liefert Trainingsinformationen
|
|
|
|
/trainings → Alle Trainings einer Abteilung
|
|
/trainings/:jahr → Alle Trainings eines Jahres
|
|
/trainings/:jahr/:kw → Training einer bestimmten KW
|
|
POST /:abteilung/trainings/:jahr/:kw
|
|
📌 Erstellt ein neues Training mit Geräteplan
|
|
|
|
Wenn zwei Trainings dieselben Geräte hatten, wird hochgezählt.
|
|
Falls das letzte Gerät 10 war, geht es auf 1.
|
|
📋 Anwesenheitsverwaltung
|
|
GET /:abteilung/anwesend/:id
|
|
📌 Liefert Anwesenheiten für ein Training
|
|
|
|
POST /:abteilung/anwesend/:id
|
|
📌 Setzt Anwesenheiten
|
|
|
|
inriege → Alle Mitglieder, die anwesend sein könnten
|
|
anw → Mitglieder, die tatsächlich anwesend sind
|
|
✅ Automatische Korrekturen:
|
|
|
|
Falls Mitglied in anw ist, aber nicht in DB → Hinzufügen
|
|
Falls Mitglied in anw fehlt, aber in DB → Löschen
|
|
|
|
## 🛠 Technologie-Stack
|
|
|
|
Backend: Node.js, Express.js
|
|
Datenbank: PostgreSQL
|
|
Authentifizierung: JWT
|
|
|
|
## 🛠 Entwickler-Tools
|
|
|
|
### 📜 Linter & Formatierung
|
|
|
|
```sh
|
|
npm run lint
|
|
npm run format
|
|
```
|
|
|
|
### 📦 Abhängigkeiten aktualisieren
|
|
|
|
```sh
|
|
npm update
|
|
```
|
|
|
|
## 🏗 Zukünftige Erweiterungen
|
|
|
|
📊 Statistiken & Berichte
|
|
📱 Mobile App-Integration
|
|
📧 E-Mail-Benachrichtigungen
|
|
|
|
## 📬 Kontakt
|
|
|
|
mailto:admin@boergmann.it
|
|
💬 Falls du Fragen hast, erstelle ein Issue oder kontaktiere mich! 🚀
|