# SeCu Backend Deno + Oak Backend für die SeCu Mitarbeiterverwaltung. ## Tech Stack - **Runtime:** Deno - **Framework:** Oak - **Database:** PostgreSQL - **Auth:** JWT + Argon2 ## Setup ### 1. Datenbank einrichten ```bash # PostgreSQL Container starten docker run -d \ --name secu-db \ -e POSTGRES_USER=secu \ -e POSTGRES_PASSWORD=SeCu2026!SecureDB \ -e POSTGRES_DB=secu \ -p 5434:5432 \ postgres:16 # Migrations ausführen psql -h localhost -p 5434 -U secu -d secu -f ../secu/db/migrations/001_initial_schema.sql psql -h localhost -p 5434 -U secu -d secu -f ../secu/db/migrations/002_seed_modules.sql ``` ### 2. Environment ```bash cp .env.example .env # JWT_SECRET ändern! ``` ### 3. Starten ```bash # Development (mit Watch) deno task dev # Production deno task start ``` ## API Endpoints ### Auth (`/api/auth`) | Method | Endpoint | Beschreibung | |--------|----------|--------------| | POST | /register | Registrierung (erster User = Chef) | | POST | /login | Login | | POST | /refresh | Token erneuern | | POST | /logout | Logout | | GET | /me | Aktueller User | | POST | /change-password | Passwort ändern | ### Users (`/api/users`) | Method | Endpoint | Beschreibung | Rolle | |--------|----------|--------------|-------| | GET | / | Alle User | Chef: alle, Disponent: eigene MA | | GET | /:id | User Details | - | | POST | / | User anlegen | Chef/Disponent | | PUT | /:id | User bearbeiten | - | | DELETE | /:id | User deaktivieren | Chef/Disponent | ### Orders (`/api/orders`) | Method | Endpoint | Beschreibung | Rolle | |--------|----------|--------------|-------| | GET | / | Alle Aufträge | MA: nur zugewiesene | | GET | /:id | Auftrag Details | - | | POST | / | Auftrag erstellen | Chef/Disponent | | PUT | /:id | Auftrag bearbeiten | Chef/Disponent | | DELETE | /:id | Auftrag löschen | Chef/Disponent | | POST | /:id/assign | MA zuweisen | Chef/Disponent | | DELETE | /:id/assign/:userId | Zuweisung entfernen | Chef/Disponent | | PUT | /:id/assignment | Bestätigen/Ablehnen | MA | ### Availability (`/api/availability`) | Method | Endpoint | Beschreibung | |--------|----------|--------------| | GET | / | Verfügbarkeiten | | GET | /calendar | Kalender-Übersicht | | POST | / | Verfügbarkeit melden | | POST | /bulk | Mehrere Tage | | DELETE | /:id | Eintrag löschen | ### Timesheets (`/api/timesheets`) | Method | Endpoint | Beschreibung | Rolle | |--------|----------|--------------|-------| | GET | / | Stundenzettel | MA: nur eigene | | GET | /:id | Details | - | | POST | / | Einreichen | Alle | | PUT | /:id | Bearbeiten | Nur pending + eigene | | POST | /:id/review | Genehmigen/Ablehnen | Chef/Disponent | | DELETE | /:id | Löschen | - | | GET | /summary/:userId | Zusammenfassung | Chef/Disponent | | POST | /upload | Foto hochladen | Alle | ### Modules (`/api/modules`) | Method | Endpoint | Beschreibung | Rolle | |--------|----------|--------------|-------| | GET | / | Alle Module | Alle | | GET | /org | Org-Konfiguration | Alle | | POST | /:id/toggle | Ein/Ausschalten | Chef | | PUT | /:id/config | Konfigurieren | Chef | | GET | /check/:name | Status prüfen | Alle | | GET | /developer/status | System-Status | Chef + Dev-Modul | | GET | /developer/logs | Audit-Logs | Chef + Dev-Modul | ## Rollen | Rolle | Kürzel | Berechtigungen | |-------|--------|----------------| | Chef | `chef` | Vollzugriff | | Disponent | `disponent` | MA verwalten, Aufträge, Stundenzettel | | Mitarbeiter | `mitarbeiter` | Eigene Aufträge/Verfügbarkeit/Stundenzettel | ## Port Standard: `8004` --- *SeCu Backend v1.0.0*