# Server README ## Übersicht Dieser Server ist eine Webanwendung, die mit Node.js und Express.js erstellt wurde. Er bietet eine API für Benutzerregistrierung und -anmeldung sowie eine geschützte Route für autorisierte Benutzer. Es sollen mehrere Abteilungen abgebildet werden, Mitglieder des Vereins können in mehreren Abteilungen Mitglied sein. Jede_r Übungsleiter_in hat Zugriff auf die eigene Abteilung und die dazugehörigen Mitglieder und deren Notfallkontakte. ## Zukünftige Funktionen ### Funtionen aus Version 1 - Anwesenheit - geleitete Spiele - Spielewiki - Riegenzuordnung ### Login für Mitglieder Mitglieder können ihre eigenen Daten bearbeiten und den eigenen Fortschritt anzeigen. ### Fortschrittsanzeige für Mitglieder Übungen, die in der Turnstunde geschafft wurden sollen angezeigt werden. So können zum einen Vertretungs-Helfer sehen, wie der Stand der Riege ist, zum anderen können die Kinder zuhause zeigen, was sie geschafft haben. ### installation Website mit Script zum erstellen der .env Datei sowie der Tabellen und eines Admin-Benutzers. ## Begriffe - Mitglied: Vereinsmitglied - Teilnehmer: Teilnehmer_in einer Abteilung. Kann Mitglied sein oder zur Probe Teilnehmen. - Abteilung: Sportstunde mit einem oder mehreren Trainingstagen. - Riege: Unterteilung einer Abteilung, wird von einem Helfer geleitet. - Helfer: Person, die Aufwärmen und Spiele leitet. - Riegenleiter: Helfer, der eine Riege leitet. - Leiter: Helfer, der eine Abteilung leitet (Übungsleiter_in) Eine Abteilung hat nur einen Leiter. ## Anforderungen - Node.js (Version 14 oder höher) - Express.js (Version 4 oder höher) - PostgreSQL-Datenbank (mit pg-Modul) ## Konfiguration - Die Datenbankverbindung wird über Umgebungsvariablen konfiguriert (siehe `.env`-Datei). - Der Server läuft standardmäßig auf Port 3000. ## API-Endpunkte - `/auth/register`: Registrierung eines neuen Benutzers - `/auth/login`: Anmeldung eines bestehenden Benutzers - `/auth/update`: Aktualisierung der Daten eines bestehenden Benutzers - `/members/all`: Alle Teilnehmer einer Abteilung ausgeben. Es muss eine Abteilungs-ID übergeben werden. Bei id = -1 werden alle Mitglieder zurückgegeben. - `/members/new`: Erstellung eines neuen Mitglieds ## Middleware - `authenticateToken`: Überprüft den JWT-Token in der Authorization-Header ## Datenbank - Die Datenbank wird mit dem pg-Modul verbunden. ## Starten des Servers Die Anwendung kann mit `npm start`, `node server/app.js` oder `nodemon server/app.js` gestartet werden.