No description
Find a file
nocci 56f98e3597 🌐 i18n(app): relocate locale middleware for improved organization
- move add_locale_to_request middleware above session middleware
- enhance code readability and maintainability by organizing middleware setup
2025-12-06 14:03:56 +00:00
app 🌐 i18n(app): relocate locale middleware for improved organization 2025-12-06 14:03:56 +00:00
.env-example 🔧 chore(env): update database path in environment files 2025-12-06 12:08:20 +00:00
.gitignore 🔧 chore(repo): restructure project file hierarchy 2025-12-06 11:56:16 +00:00
docker-compose.yml 🔧 chore(docker): update docker-compose for encryption key 2025-12-06 13:43:10 +00:00
Dockerfile 🔧 chore(env): update database path in environment files 2025-12-06 12:08:20 +00:00
README.md 🔧 chore(env): update database path in environment files 2025-12-06 12:08:20 +00:00
requirements.txt 📦 build(requirements): update dependencies versions 2025-12-06 13:26:58 +00:00

FleetLedger

Self-hosted Übersicht für gemietete Server (VPS, Dedizierte, Storage, Managed). Mehrnutzerfähig, Dark-Mode-first und PWA-ready.

Features

  • Server-CRUD pro Benutzer, Soft-Delete/Archiv
  • Dashboard (Kosten, ablaufende Verträge) + Admin-Gesamtübersicht
  • Map-Ansicht pro Nutzer auf Basis der Location-Namen (Leaflet)
  • Optional verschlüsselte Speicherung von Management-Passwörtern (Fernet)
  • Session-Auth mit CSRF-Schutz, Admin-Rolle
  • PWA: Manifest, Service Worker, installierbar

Stack

  • FastAPI, SQLModel, Jinja2
  • SQLite (Standard), Passlib (bcrypt), Cryptography (Fernet)
  • Tailwind via CDN, Leaflet für Karte
  • Uvicorn als ASGI-Server

Schnellstart mit Docker

  1. Repository klonen
    git clone https://example.com/your/fleetledger.git
    cd fleetledger
    
  2. Umgebung setzen
    cp .env-example .env
    # SESSION_SECRET in .env auf einen starken, einzigartigen Wert setzen
    
  3. Starten
    docker-compose up --build
    
    Die SQLite-DB liegt in ./data/ (Bind-Mount in den Container unter /app/data/fleetledger.db).

Lokale Entwicklung (ohne Docker)

  • Voraussetzungen: Python 3.12, virtualenv empfohlen.
  • Setup:
    python -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
    cp .env-example .env
    export SESSION_SECRET="ein_langer_random_wert"
    export SESSION_COOKIE_SECURE=0  # nur lokal ohne HTTPS
    uvicorn app.main:app --reload --port 8000
    

Umgebungsvariablen

  • SESSION_SECRET (erforderlich): Langer, zufälliger String für die Session-Signierung.
  • SESSION_COOKIE_SECURE (default 1): Auf 0 nur für lokale HTTP-Tests setzen, sonst 1 (HTTPS).
  • DATABASE_PATH (default /app/data/fleetledger.db im Docker-Image): Pfad zur SQLite-Datei. Lokal z. B. ./data/fleetledger.db.
  • ENCRYPTION_KEY (optional): Fernet-Key für verschlüsselte Management-Passwörter. Leer lassen, wenn keine Speicherung gewünscht ist.

Sicherheitshinweise

  • Immer einen starken SESSION_SECRET verwenden; im Docker-Setup wird der Start verweigert, wenn ein Platzhalter genutzt wird.
  • Produktiv hinter HTTPS betreiben (SESSION_COOKIE_SECURE=1).
  • Management-Passwörter nur mit gesetztem ENCRYPTION_KEY speichern; ohne Key werden sie nicht persistiert.
  • CSRF-Schutz ist aktiv für Form-POSTs; Browser-Service-Worker cached Assets versioniert.

Datenhaltung

  • SQLite speichert die Daten in einer Datei (DATABASE_PATH). In Docker wird ./data/ aus dem Host eingebunden.
  • Backups: Einfach die SQLite-Datei in ./data/ sichern, während der Dienst gestoppt ist.