Skip to content

Releases: cojuwon/Praktikum-Softwareengineering-TU-Chemnitz

abgabe-v1.0

20 Feb 22:06
d8245d3

Choose a tag to compare

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

  1. Lade diesen Release als Source Code (zip) herunter
  2. 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.ps1

Mac / Linux:

bash start.sh

Option B: Manueller Start

  1. .env.example kopieren und als .env speichern:
    cp .env.example .env
  2. Wichtig: Passwörter in .env anpassen (für Deployment relevant, da sonst unsicher!)
  3. 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 down

Alle Daten (Datenbank) inklusive löschen:

docker compose down -v

Caution

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):

  1. Warten auf Datenbank – wartet, bis PostgreSQL erreichbar ist
  2. Migrationen anwendenpython manage.py migrate
  3. Gruppen einrichtenpython manage.py setup_groups (erstellt Berechtigungsgruppen: Admin, Erweiterung, Basis)
  4. Superuser erstellenpython manage.py setup_superuser (erstellt admin@adminuser.de mit generiertem Passwort, direkt aktiv)
  5. Statische Dateien sammelnpython manage.py collectstatic
  6. 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

06 Jan 23:05
a3750b7

Choose a tag to compare

MVP Pre-release
Pre-release

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:

🚀 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