Releases: cojuwon/Praktikum-Softwareengineering-TU-Chemnitz
abgabe-v1.0
BelliS – Beratungs-, Erfassungs- und Leitstelleninformationssystem
Eine webbasierte Fachberatungssoftware zur Dokumentation und statistischen Auswertung von Beratungsfällen im Bereich geschlechtsspezifischer Gewalt.
Technologie-Stack: Django (Backend/API) · Next.js (Frontend) · PostgreSQL (Datenbank) · Docker
Voraussetzungen
- Docker Desktop (inkl. Docker Compose) muss installiert und gestartet sein.
📥 Release herunterladen
- Lade diesen Release als Source Code (zip) herunter
- Entpacke das Archiv in einen beliebigen Ordner
🚀 Projekt starten
Option A: Automatischer Start (Empfohlen)
Die mitgelieferten Startskripte übernehmen das komplette Setup:
- Erstellen automatisch die
.env-Datei mit sicheren, zufallsgenerierten Passwörtern - Bauen und starten alle Docker-Container
Windows (PowerShell):
.\start.ps1Mac / Linux:
bash start.shOption B: Manueller Start
.env.examplekopieren und als.envspeichern:cp .env.example .env
- Wichtig: Passwörter in
.envanpassen (für Deployment relevant, da sonst unsicher!) - Container bauen und starten:
docker compose up -d --build
Für zukünftige Neustarts ohne Neubau: docker compose up -d
🌐 Zugriff auf die Anwendung
Nach dem Start sind folgende Dienste erreichbar:
| Dienst | URL |
|---|---|
| Frontend (Weboberfläche) | http://localhost:3000 |
| Backend (REST-API) | http://localhost:8000 |
| API-Dokumentation (Swagger) | http://localhost:8000/api/docs/ |
🔐 Erster Login & Admin-Zugang
Beim ersten Start wird automatisch ein Admin-Benutzer angelegt (sofort aktiv, kein Freigabe-Schritt nötig).
Login-Daten abrufen
Das Admin-Passwort wird aus Sicherheitsgründen zufällig generiert und in den Container-Logs ausgegeben:
docker compose logs api | grep "Generiertes Passwort"Windows PowerShell:
docker compose logs api | Select-String "Generiertes Passwort"Login-Daten:
- E-Mail:
admin@adminuser.de - Passwort: (siehe Ausgabe oben)
Warning
Bitte nach dem ersten Login das Passwort in den Benutzereinstellungen ändern!
Weitere Benutzer anlegen
- Admin-Panel: Sidebar → Benutzerverwaltung → „Neuer Benutzer"
- Selbstregistrierung: Neue Benutzer können sich über die Login-Seite registrieren. Die Registrierung muss anschließend von einem Admin freigegeben werden.
Verfügbare Rollen:
| Rolle | Beschreibung |
|---|---|
| Basis | Standardzugriff auf Fälle und Anfragen |
| Erweiterung | Erweiterte Rechte inkl. Statistiken |
| Admin | Vollzugriff inkl. Benutzerverwaltung und Systemeinstellungen |
🛑 Projekt stoppen
docker compose downAlle Daten (Datenbank) inklusive löschen:
docker compose down -vCaution
docker compose down -v löscht alle Fälle, Benutzer und das Admin-Passwort unwiderruflich. Beim nächsten Start wird ein neues Setup durchgeführt.
🔧 Technische Details
Architektur
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Frontend │────▶│ Backend │────▶│ PostgreSQL │
│ (Next.js) │ │ (Django) │ │ (DB) │
│ Port 3000 │ │ Port 8000 │ │ Port 5432 │
└─────────────┘ └─────────────┘ └─────────────┘
Alle drei Services laufen als Docker-Container und kommunizieren über ein internes Docker-Netzwerk (webnet).
Was passiert beim ersten Start?
Der Backend-Container führt folgende Schritte automatisch aus (siehe backend/dockerfile):
- Warten auf Datenbank – wartet, bis PostgreSQL erreichbar ist
- Migrationen anwenden –
python manage.py migrate - Gruppen einrichten –
python manage.py setup_groups(erstellt Berechtigungsgruppen: Admin, Erweiterung, Basis) - Superuser erstellen –
python manage.py setup_superuser(erstelltadmin@adminuser.demit generiertem Passwort, direkt aktiv) - Statische Dateien sammeln –
python manage.py collectstatic - Gunicorn starten – Production-WSGI-Server auf Port 8000
Hinweis: Eingabefelder (Formular-Konfiguration) für Anfragen und Fälle werden automatisch beim ersten Zugriff auf die jeweilige Seite initialisiert.
Custom Management Commands
| Command | Beschreibung |
|---|---|
setup_groups |
Erstellt die Berechtigungsgruppen (Admin, Erweiterung, Basis) mit den zugehörigen Django-Permissions |
setup_superuser |
Erstellt den initialen Admin-User mit zufälligem Passwort (idempotent, überspringt wenn bereits vorhanden) |
init_eingabefelder |
Initialisiert manuell die Formularfelder für Anfragen und Fälle (geschieht auch automatisch beim ersten Zugriff) |
cleanup_trash |
Löscht Elemente im Papierkorb, die älter als die konfigurierte Aufbewahrungsfrist sind |
create_test_data |
Erstellt Testdaten für die Entwicklungsumgebung |
seed_presets |
Erstellt vordefinierte Statistik-Presets |
Umgebungsvariablen (.env)
| Variable | Beschreibung | Standardwert |
|---|---|---|
POSTGRES_DB |
Name der Datenbank | bellis_db |
POSTGRES_USER |
Datenbank-Benutzer | bellis_user |
POSTGRES_PASSWORD |
Datenbank-Passwort | (wird automatisch generiert) |
SECRET_KEY |
Django Secret Key | (wird automatisch generiert) |
DEBUG |
Django Debug-Modus | True |
DB_HOST |
Datenbank-Host (intern) | db |
DB_PORT |
Datenbank-Port | 5432 |
DJANGO_INTERNAL_HOST |
Interne Django-URL für Next.js SSR | http://api:8000 |
What's Changed
- Create models api experiments by @cojuwon in #8
- Create models api experiments by @cojuwon in #10
- Backend main by @cojuwon in #11
- Frontend main by @hascheu in #12
- Proxy API routes to backend and update fetch logic by @cojuwon in #13
- Added Permissions feature by @cojuwon in #98
- Refactor serializers and tests structure, update Anfrage model by @cojuwon in #99
- Implement authentication framework and role-based API by @cojuwon in #100
- Redesigned Frontend, with a few backend adjustments by @cojuwon in #108
- Backend main auf dev main mergen by @cojuwon in #109
- Merge development_main into main by @cojuwon in #110
- New Frontent Design for Anfrage and Fall - preparing Statistik Backend for later frontend implementation by @cojuwon in #111
- Implementing Statistik Modul in Backend in preperation for frontend by @cojuwon in #112
- Support dynamic form fields and preset API by @cojuwon in #113
- Remove Gelöscht status from Fall, add status field to Anfrage by @Copilot in #135
- Implement StatistikService with real data aggregation by @Copilot in #133
- Connect preset management to Django backend and add save button by @Copilot in #134
- New development main by @cojuwon in #137
- Merge Development Branch into Main Branch by @eriside in #143
New Contributors
Full Changelog: MVP...Abgabe
MVP
Installationsanleitung (Release)
Willkommen! Dieses Paket enthält die Docker-Container für die Anwendung.
📋 Voraussetzungen
Stellen Sie sicher, dass folgende Software auf Ihrem System installiert ist:
- Docker Desktop (oder Docker Engine + Docker Compose Plugin)
🚀 Installation & Start
1. Vorbereitung
Entpacken Sie das ZIP-Archiv in einen Ordner Ihrer Wahl.
2. Konfiguration
Erstellen Sie eine .env Datei im selben Ordner. Sie können dafür die beiliegende Vorlage verwenden:
- Windows (PowerShell):
Copy-Item .env.example .env - Mac/Linux:
cp .env.example .env
Öffnen Sie die .env Datei danach und passen Sie bei Bedarf die Passwörter an.
3. Docker Images laden
Damit die Anwendung ohne erneutes Bauen (Build) läuft, müssen die beiliegenden Images in Ihre lokale Docker-Umgebung geladen werden.
Führen Sie folgende Befehle in Ihrem Terminal (im Ordner dieses Pakets) aus:
docker load -i db.tar
docker load -i backend.tar
docker load -i frontend.tar
4. Anwendung starten
Starten Sie die Container mit Docker Compose:
docker compose up -d
Warten Sie einen Moment, bis die Datenbank und die Server hochgefahren sind.
🌐 Zugriff
Sobald die Container laufen, erreichen Sie die Anwendung unter:
- Frontend (Benutzeroberfläche): [http://localhost:3000]
- Email: admin@test.de
- Passwort: admin123
🛑 Anwendung stoppen
Um die Anwendung zu beenden und die Container zu entfernen:
docker compose down
Um zusätzlich die Datenbank-Volumes (gespeicherte Daten) zu löschen:
docker compose down -v