Technische Dokumentation¶
Technische Dokumentation für Entwickler und fortgeschrittene Administratoren, die mit der Bifolk-Codebasis arbeiten.
Zielgruppe: Softwareentwickler, DevOps-Ingenieure, fortgeschrittene Administratoren
Architektur & Design¶
- Architekturübersicht - Systemdesign, App-Struktur und Patterns
- Datenbankmodelle - Vollständige Datenmodellreferenz mit Beziehungen
- Berechtigungssystem - Implementierung der rollenbasierten Zugriffskontrolle
- Übersetzung & i18n - Workflow für Mehrsprachigkeit
App-Referenz¶
Detaillierte technische Dokumentation für jede Django-App:
| App | Zweck | Wichtige Modelle |
|---|---|---|
| Home | Dashboard, PWA, gemeinsame Mixins | Keine (nur Views) |
| Users | Benutzerprofile, Authentifizierung | Profile |
| Organizations | Mandantenfähigkeit, RBAC | Organization, Membership, Invitation, Settings |
| Hives | Kerndomäne Imkerei | Hive, Queen, Inspection, Harvest, Operations |
| Breeding | Königinnenzuchtprogramme | QueenBreeding, ColonySplit |
| Warehouse | Inventar und Verkauf | InventoryItem, Transaction, Sale |
| SystemConfig | Konfigurierbare Auswahloptionen | ChoiceCategory, ConfigurableChoice |
| Notifications | In-App-Benachrichtigungen | Notification |
| DataExchange | Import/Export | ExportJob, ImportJob |
Technologie-Stack¶
Kern¶
- Framework: Django 6.x
- Sprache: Python 3.11+
- Datenbank: PostgreSQL 15+ (Produktion), SQLite 3 (Entwicklung)
- Frontend: Bootstrap 5, Crispy Forms, Bootstrap Icons
- Server: Gunicorn (Produktion), Django-Entwicklungsserver (Entwicklung)
- Containerisierung: Docker und Docker Compose
Wichtige Abhängigkeiten¶
django>= 6.0, < 7.0 - Web-Frameworkdjango-allauth- Authentifizierung (Login, Registrierung, E-Mail-Verifizierung)django-crispy-forms+crispy-bootstrap5- Formular-RenderingPillow- Bildverarbeitung (Profilfotos, Bienenstockfotos)psycopg2-binary- PostgreSQL-Adaptergunicorn- WSGI HTTP-Serverwhitenoise- Statische Dateibereitstellung
Architekturprinzipien¶
Mandantenfähiges Design¶
- Alle Datenmodelle haben einen
organization-Fremdschlüssel - Benutzer können mehreren Organisationen angehören
- Organisationsbasierte Abfragefilterung über
filter_by_user_organizations() - Middleware verwaltet den aktuellen Organisationskontext (
request.current_organization)
Berechtigungssystem¶
- 4-Rollen RBAC: Besitzer > Admin > Mitglied > Betrachter
- Zentralisierte Berechtigungsfunktionen in
organizations/utils.py - Methoden auf Modellebene:
user_can_view(),user_can_edit(),user_can_delete() - View-Mixins erzwingen Berechtigungen automatisch
- Template-Tags für bedingtes Rendering
Signalgesteuerte Automatisierung¶
- Benutzerregistrierung löst automatische Erstellung von Profil und Standard-Organisation aus
- Ernteerstellung kann automatisch HoneyBatch erstellen
- Gesundheitsstatusänderungen erstellen HealthStatusChange-Einträge
- Export-/Import-Abschluss löst Benachrichtigungen aus
Progressive Web App¶
- Service Worker mit Network-First- und Cache-First-Strategien
- IndexedDB-basierte Offline-Warteschlange
- Automatische Synchronisation bei Wiederherstellung der Verbindung
- Installierbar auf Mobilgeräten und Desktop
Entwicklungsumgebung¶
Voraussetzungen¶
- Docker Engine 20.10+
- Docker Compose 2.0+
- Git
- Python 3.11+ (für lokale Entwicklung)
Schnellstart¶
# Repository klonen
git clone <repo-url>
cd bifolk
# Entwicklungsumgebung einrichten
cd docker/compose-developement
cp .env.example .env
docker compose up
# Superuser erstellen
docker compose exec bifolk-app python manage.py createsuperuser
# Beispieldaten laden (optional)
docker compose exec bifolk-app python manage.py load_sample_data
Zugriff unter http://localhost:8000
Lokale Entwicklung (ohne Docker)¶
# Virtuelle Umgebung erstellen
python -m venv venv
source venv/bin/activate
# Abhängigkeiten installieren
pip install -r requirements.txt
# Migrationen ausführen
cd app
python manage.py migrate
# Superuser erstellen
python manage.py createsuperuser
# Entwicklungsserver starten
python manage.py runserver
Tests ausführen¶
# Alle Tests
cd app
DJANGO_SETTINGS_MODULE=bifolk.settings_test python manage.py test
# Einzelne App
DJANGO_SETTINGS_MODULE=bifolk.settings_test python manage.py test hives
# Mit paralleler Ausführung
DJANGO_SETTINGS_MODULE=bifolk.settings_test python manage.py test --parallel=4
Typprüfung¶
Konfigurationssystem¶
Bifolk verwendet ein dreistufiges Konfigurationssystem:
- Docker Secrets (höchste Priorität) - Sensible Daten in
/run/secrets/ - Umgebungsvariablen - Nicht-sensible Konfiguration in
.env - Standardwerte (niedrigste Priorität) - Sichere Standardwerte in
generate_config.py
Container-Start → docker-entrypoint.sh → generate_config.py
liest: Secrets → Umgebungsvariablen → Standardwerte
generiert: bifolk.json → Django settings.py
Siehe Konfiguration für Details.
URL-Routing-Übersicht¶
/ → Dashboard (Home-App)
/hives/ → Bienenstockverwaltung
/hives/queens/ → Königinnenverwaltung
/hives/inspections/ → Bienenstockkontrollen
/hives/operations/ → Imkereiarbeiten
/hives/harvest/ → Ernteverfolgung
/hives/batches/ → Honigchargen
/breeding/ → Zuchtprogramme
/warehouse/ → Inventar und Verkauf
/organizations/ → Organisationsverwaltung
/notifications/ → Benachrichtigungszentrale
/dataexchange/ → Import/Export
/system/ → Systemkonfiguration
/accounts/ → Authentifizierung (django-allauth)
/admin/ → Django-Admin-Oberfläche
/manifest.json → PWA-Manifest
/service-worker.js → PWA-Service-Worker
Verwandte Dokumentation¶
- Benutzerhandbuch - Für Imker und Endbenutzer
- Administratorhandbuch - Für Administratoren und Deployment
- Interne KI-Referenz:
docs/claude/- Detaillierte Modell- und App-Referenz