- List of contracts expiring soon and already expired
- **Security**
- Passwords hashed with **bcrypt** (`passlib[bcrypt]`)
- Optional encryption for management passwords using **Fernet** (`cryptography`)
- No private SSH keys are stored, only name/hint strings
- Jinja2 auto-escaping enabled; no untrusted HTML is rendered with `|safe`
- Management URLs are restricted to `http://` or `https://` (no `javascript:` links, etc.)
- **UI / UX**
- TailwindCSS via CDN for quick styling
- Dark mode is **enabled by default**
- Theme preference stored in `localStorage` and toggleable via a small button
- Responsive layout, works well on mobile
- PWA manifest and service worker for a simple offline-friendly experience
---
## Quick Start (Docker)
### 0. Environment
Kopiere `.env-example` nach `.env` und setze mindestens ein starkes `SESSION_SECRET`. Für lokale HTTP-Tests kannst du `SESSION_COOKIE_SECURE=0` setzen, in Produktion sollte es `1` bleiben. Optional kannst du einen `ENCRYPTION_KEY` (Fernet) hinterlegen, um Management-Passwörter zu speichern.