Dieses Projekt ist im Rahmen des Moduls Web Engineering II entstanden und umfasst die vollständige Umsetzung eines REST-Service-Backends für ein Studierendenbewerberportal.
Das Backend stellt eine JSON-basierte REST-API bereit, mit der User, Studiengänge und Studienbewerbungen verwaltet werden können.
Die Umsetzung erfolgte eigenständig und orientiert sich an gängigen Best Practices für REST-Services.
- Node.js
- TypeScript
- Express
- MongoDB (lokal)
- Mongoose
- JWT (JSON Web Tokens)
- bcrypt (Passwort-Hashing)
- Basic Authentication
Das Backend bildet die Server-Logik eines Studierendenbewerberportals ab:
- User
- Authentifizierung und Autorisierung
- Administrator- und Studierendenrollen
- DegreeCourse
- Verwaltung von Studiengängen
- DegreeCourseApplication
- Bewerbungen von Studierenden auf Studiengänge
- Validierung: keine Mehrfachbewerbungen für denselben Studiengang im selben Semester
Das Projekt folgt einer klaren Schichtenarchitektur:
- Routes
- HTTP-Handling (Requests / Responses)
- Statuscodes
- Authentifizierungs-Middleware
- Services
- Geschäftslogik
- Validierung
- Autorisierung
- Models
- Mongoose-Schemas
- Datenpersistenz
Die Trennung von Routen, Services und Datenzugriff ermöglicht:
- bessere Wartbarkeit
- klare Verantwortlichkeiten
- einfache Erweiterbarkeit
-
/api/publicUsers- CRUD-Operationen für User (ohne Authentifizierung)
- ausschließlich zu Test- und Lernzwecken
-
/api/users- geschützte User-Verwaltung
- Zugriff nur für authentifizierte Benutzer
- Administratorrechte erforderlich für Änderungen
-
/api/authenticate- Authentifizierung via Basic Auth
- Rückgabe eines JWT-Access-Tokens
-
/api/degreeCourses- CRUD-Operationen für Studiengänge
- Lesender Zugriff auch ohne Login möglich
-
/api/degreeCourseApplications- Verwaltung von Studienbewerbungen
- Rollenbasierte Zugriffskontrolle (Admin / Studierende)
- HTTPS-Unterstützung (selbstsigniertes Zertifikat)
- Passwort-Hashing mit Salt (bcrypt)
- JWT-basierte Authentifizierung
- Middleware zur Token-Validierung
- Rollenbasierte Autorisierung
- Administrator vs. normaler Benutzer
- Schutz sensibler Daten (keine Passwort-Rückgaben)
- Node.js
- MongoDB (lokal, Standard-Port)
npm install