# 🏋️‍♂️ 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 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! 🚀