122 lines
3.9 KiB
Markdown
122 lines
3.9 KiB
Markdown
**Sprache:** [English](README.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Español](README.es.md)
|
|
|
|
# EUSRR
|
|
|
|
EUSRR ist ein internes Unternehmensportal für Mitarbeiter, Anträge, Dokumente,
|
|
Beschaffung, Planung, Anwesenheit und Echtzeitkommunikation. Die aktuelle
|
|
Anwendung besteht aus einem Django/DRF-ASGI-Backend und einem Next.js-Frontend.
|
|
|
|
## Funktionen
|
|
|
|
- Mitarbeiterverzeichnis, Abteilungen, Positionen, Berechtigungen und optionale LDAP/AD-Synchronisierung;
|
|
- Anträge, Freigabeprozesse, Aufgaben und statusbezogene Benachrichtigungen;
|
|
- Dokumente, Anhänge, Kommentare und Bestätigungen;
|
|
- Beschaffung, Freigaberouten, Budgets und Inventar;
|
|
- Kalender, gemeinsame Ereignisse und Anwesenheitsanalyse über LogStorm;
|
|
- Chats, Reaktionen, Umfragen und Benachrichtigungen über eine authentifizierte WebSocket-Verbindung;
|
|
- Zustellung über WebSocket, E-Mail und Web Push.
|
|
|
|
## Stack
|
|
|
|
- Backend: Python 3.13, Django 5.2, Django REST Framework, Channels und Daphne.
|
|
- Daten und Jobs: PostgreSQL, Redis, Celery und Celery Beat.
|
|
- Frontend: Next.js 16, React 19, TypeScript, Tailwind CSS, TanStack Table und Recharts.
|
|
- Integrationen: LDAP/Active Directory, Web Push und LogStorm.
|
|
- Tests: pytest/pytest-django, Node Test Runner, ESLint und Next.js Production Build.
|
|
|
|
Die festgelegten Versionen stehen in [`backend/requirements.txt`](backend/requirements.txt)
|
|
und [`frontend/package.json`](frontend/package.json).
|
|
|
|
## Dokumentation und Verträge
|
|
|
|
- [Dokumentationsindex](docs/README.md)
|
|
- [HTTP API](docs/guides/API.md)
|
|
- [LDAP und Active Directory](docs/guides/LDAP.md)
|
|
- [WebSocket und Realtime](docs/guides/WEBSOCKET.md)
|
|
- [Benachrichtigungen](docs/guides/NOTIFICATIONS.md)
|
|
|
|
Bei laufendem Backend sind Swagger unter `/api/docs/`, ReDoc unter
|
|
`/api/redoc/`, OpenAPI unter `/api/schema/`, WebSocket-Dokumentation unter
|
|
`/api/ws/docs/` und AsyncAPI unter `/api/ws/schema/` auf Port 8000 erreichbar.
|
|
|
|
## Repository-Struktur
|
|
|
|
```text
|
|
backend/ Django-Apps, REST API, Celery Tasks, Migrationen und Backend-Tests
|
|
frontend/ Next.js-Anwendung und Frontend-Tests
|
|
docs/ Gepflegte Leitfäden zu API, Integrationen, Betrieb und Entwicklung
|
|
```
|
|
|
|
## Lokale Entwicklung
|
|
|
|
Erforderlich sind Python 3.13, Node.js 20 oder neuer, PostgreSQL und Redis.
|
|
`backend/docker-compose.yml` startet nur eine Samba-AD-Testumgebung und ist kein
|
|
vollständiger Application Stack.
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
Das Beispiel verwendet die Service-Hostnamen `db` und `redis`. Bei lokal
|
|
laufenden Diensten müssen `DB_HOST` und `REDIS_HOST` auf `127.0.0.1` geändert,
|
|
`DEBUG=True` gesetzt und gültige PostgreSQL-Zugangsdaten eingetragen werden.
|
|
LDAP ist im Beispiel deaktiviert.
|
|
|
|
Backend:
|
|
|
|
```bash
|
|
cd backend
|
|
python3.13 -m venv .venv
|
|
source .venv/bin/activate
|
|
python -m pip install -r requirements.txt
|
|
python manage.py migrate
|
|
daphne -b 0.0.0.0 -p 8000 eusrr_backend.asgi:application
|
|
```
|
|
|
|
Celery für asynchrone Benachrichtigungen und andere Hintergrundaufgaben:
|
|
|
|
```bash
|
|
cd backend
|
|
celery -A eusrr_backend worker -l info
|
|
celery -A eusrr_backend beat -l info
|
|
```
|
|
|
|
Frontend:
|
|
|
|
```bash
|
|
cd frontend
|
|
cp .env.example .env.local
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
Die Anwendung ist unter `http://localhost:3000` erreichbar. Next.js leitet
|
|
Browser-HTTP-Anfragen an `NEXT_PUBLIC_BACKEND_URL` weiter; Realtime verwendet
|
|
den Backend-Endpunkt `/ws/`.
|
|
|
|
## Prüfung
|
|
|
|
```bash
|
|
cd backend
|
|
pytest
|
|
python manage.py check
|
|
```
|
|
|
|
```bash
|
|
cd frontend
|
|
npm test
|
|
npm run lint
|
|
npm run build
|
|
```
|
|
|
|
## Sicherheit und Daten
|
|
|
|
Umgebungsdateien, lokale Datenbanken, Uploads, Zertifikate, generierte Builds und
|
|
Abhängigkeiten werden von Git ignoriert. Produktionsdaten und Secrets dürfen
|
|
nicht eingecheckt werden.
|
|
|
|
Legacy-Einstellungen enthalten noch LDAP- und VAPID-Fallbackwerte. Außerhalb
|
|
einer isolierten Entwicklungsumgebung müssen alle Zugangsdaten per Environment
|
|
Variable überschrieben und alle jemals im Quellcode gespeicherten Schlüssel
|
|
rotiert werden. Prüfen Sie außerdem firmenspezifische Domains, Branding und DNs.
|