Dateien
Hetzner-Backup/JOURNAL.md
2025-06-07 14:11:14 +02:00

8.5 KiB

v2-Docker Projekt Journal

Projektübersicht

Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker-basierter Architektur.

Technische Anforderungen


Aktueller Stand (2025-01-06)

Implementiert

  1. Docker-Infrastruktur

    • docker-compose.yaml mit 3 Services (PostgreSQL, Admin Panel, License Server)
    • Interne Bridge-Netzwerkkommunikation
    • Resource Limits konfiguriert (2 CPUs, 4GB RAM pro Service)
  2. PostgreSQL Datenbank

    • Tabellen: customers, licenses
    • Init-Script vorhanden
    • Persistente Datenspeicherung
  3. Admin Panel (Basis)

    • Flask-Anwendung mit Session-Management
    • Login-Funktionalität für 2 Admin-User
    • Lizenz-Erstellungsformular
    • Automatische Kundenerstellung
    • Läuft auf Port 443 mit selbstsigniertem SSL

Noch nicht implementiert

  1. License Server API

    • Nur Platzhalter-Container vorhanden
    • Keine API-Endpunkte
    • Keine Lizenzvalidierung
    • Kein Heartbeat/Session-Management
  2. Admin Panel Erweiterungen

    • Keine Lizenzübersicht
    • Keine Bearbeitungs-/Löschfunktionen
    • Keine Kundenverwaltung
    • Kein UTF-8 Support für deutsche Umlaute
  3. Internet-Zugriff

    • Kein Reverse Proxy
    • Keine gültigen SSL-Zertifikate
    • Subdomain-Routing nicht konfiguriert

Offene Aufgaben (Priorität)

🔴 Hoch

  1. UTF-8 Support für deutsche Sonderzeichen (äöüß)
  2. Reverse Proxy Setup (Nginx/Traefik) für Subdomain-Routing
  3. SSL-Zertifikate (Let's Encrypt) für beide Subdomains
  4. License Server API implementieren
    • /api/version - Versionscheck
    • /api/validate - Lizenzvalidierung
    • /api/heartbeat - Session-Management
  5. Admin Panel: Lizenzübersicht

🟡 Mittel

  1. Admin Panel: Lizenz bearbeiten/löschen
  2. Admin Panel: Kundenverwaltung
  3. Session-Tracking (nur eine aktive Session pro Lizenz)
  4. Logging-System für Audit-Trail

🟢 Niedrig

  1. Email-Benachrichtigungen
  2. JWT-Authentifizierung für API
  3. Backup-Strategie
  4. VPS-Migrationsdokumentation

Bekannte Probleme

  1. PostgreSQL Volume-Pfad wurde von absolutem Windows-Pfad auf Docker Volume geändert
  2. Duplizierte .env Datei in templates/ Ordner
  3. Credentials im Klartext in .env Dateien
  4. Selbstsignierte SSL-Zertifikate verursachen Browser-Warnungen

Nächste Schritte

  1. UTF-8 Support implementieren
  2. Reverse Proxy mit SSL einrichten
  3. Admin Panel Funktionalität erweitern
  4. License Server API entwickeln

Änderungsprotokoll

2025-01-06 - Journal erstellt

  • Initialer Projektstand dokumentiert
  • Aufgabenliste priorisiert
  • Technische Anforderungen festgehalten

2025-01-06 - UTF-8 Support implementiert

  • Flask App Konfiguration für UTF-8 hinzugefügt (JSON_AS_ASCII=False)
  • PostgreSQL Verbindung mit UTF-8 client_encoding
  • HTML Forms mit accept-charset="UTF-8"
  • Dockerfile mit deutschen Locale-Einstellungen (de_DE.UTF-8)
  • PostgreSQL Container mit UTF-8 Initialisierung
  • init.sql mit SET client_encoding = 'UTF8'

Geänderte Dateien:

  • v2_adminpanel/app.py
  • v2_adminpanel/templates/index.html
  • v2_adminpanel/init.sql
  • v2_adminpanel/Dockerfile
  • v2/docker-compose.yaml

Nächster Test:

  • Container neu bauen und starten
  • Kundennamen mit Umlauten testen (z.B. "Müller GmbH", "Björn Schäfer")
  • Email mit Umlauten testen

2025-01-06 - Lizenzübersicht implementiert

  • Neue Route /licenses für Lizenzübersicht
  • SQL-Query mit JOIN zwischen licenses und customers
  • Status-Berechnung (aktiv, läuft bald ab, abgelaufen)
  • Farbcodierung für verschiedene Status
  • Navigation zwischen Lizenz erstellen und Übersicht

Neue Features:

  • Anzeige aller Lizenzen mit Kundeninformationen
  • Status-Anzeige basierend auf Ablaufdatum
  • Unterscheidung zwischen Voll- und Testversion
  • Responsive Tabelle mit Bootstrap
  • Link von Dashboard zur Übersicht und zurück

Geänderte/Neue Dateien:

  • v2_adminpanel/app.py (neue Route hinzugefügt)
  • v2_adminpanel/templates/licenses.html (neu erstellt)
  • v2_adminpanel/templates/index.html (Navigation ergänzt)

Nächster Test:

  • Container neu starten
  • Mehrere Lizenzen mit verschiedenen Ablaufdaten erstellen
  • Lizenzübersicht unter /licenses aufrufen

2025-01-06 - Lizenz bearbeiten/löschen implementiert

  • Neue Routen für Bearbeiten und Löschen von Lizenzen
  • Bearbeitungsformular mit vorausgefüllten Werten
  • Aktiv/Inaktiv-Status kann geändert werden
  • Lösch-Bestätigung per JavaScript confirm()
  • Kunde kann nicht geändert werden (nur Lizenzdetails)

Neue Features:

  • /license/edit/<id> - Bearbeitungsformular
  • /license/delete/<id> - Lizenz löschen (POST)
  • Aktionen-Spalte in der Lizenzübersicht
  • Buttons für Bearbeiten und Löschen
  • Checkbox für Aktiv-Status

Geänderte/Neue Dateien:

  • v2_adminpanel/app.py (edit_license und delete_license Routen)
  • v2_adminpanel/templates/licenses.html (Aktionen-Spalte hinzugefügt)
  • v2_adminpanel/templates/edit_license.html (neu erstellt)

Sicherheit:

  • Login-Required für alle Aktionen
  • POST-only für Löschvorgänge
  • Bestätigungsdialog vor dem Löschen

2025-01-06 - Kundenverwaltung implementiert

  • Komplette CRUD-Funktionalität für Kunden
  • Übersicht zeigt Anzahl aktiver/gesamter Lizenzen pro Kunde
  • Kunden können nur gelöscht werden, wenn sie keine Lizenzen haben
  • Bearbeitungsseite zeigt alle Lizenzen des Kunden

Neue Features:

  • /customers - Kundenübersicht mit Statistiken
  • /customer/edit/<id> - Kunde bearbeiten (Name, E-Mail)
  • /customer/delete/<id> - Kunde löschen (nur ohne Lizenzen)
  • Navigation zwischen allen drei Hauptbereichen
  • Anzeige der Kundenlizenzen beim Bearbeiten

Geänderte/Neue Dateien:

  • v2_adminpanel/app.py (customers, edit_customer, delete_customer Routen)
  • v2_adminpanel/templates/customers.html (neu erstellt)
  • v2_adminpanel/templates/edit_customer.html (neu erstellt)
  • v2_adminpanel/templates/index.html (Navigation erweitert)
  • v2_adminpanel/templates/licenses.html (Navigation erweitert)

Besonderheiten:

  • Lösch-Button ist deaktiviert, wenn Kunde Lizenzen hat
  • Aktive Lizenzen werden separat gezählt (nicht abgelaufen + aktiv)
  • UTF-8 Support für Kundennamen mit Umlauten

2025-01-06 - Dashboard mit Statistiken implementiert

  • Übersichtliches Dashboard als neue Startseite
  • Statistik-Karten mit wichtigen Kennzahlen
  • Listen für bald ablaufende und zuletzt erstellte Lizenzen
  • Routing angepasst: Dashboard (/) und Lizenz erstellen (/create)

Neue Features:

  • Statistik-Karten: Kunden, Lizenzen gesamt, Aktive, Ablaufende
  • Aufteilung nach Lizenztypen (Vollversion/Testversion)
  • Aufteilung nach Status (Aktiv/Abgelaufen)
  • Top 10 bald ablaufende Lizenzen mit Restlaufzeit
  • Letzte 5 erstellte Lizenzen mit Status
  • Hover-Effekt auf Statistik-Karten
  • Einheitliche Navigation mit Dashboard-Link

Geänderte/Neue Dateien:

  • v2_adminpanel/app.py (dashboard() komplett überarbeitet, create_license() Route)
  • v2_adminpanel/templates/dashboard.html (neu erstellt)
  • v2_adminpanel/templates/index.html (Navigation erweitert)
  • v2_adminpanel/templates/licenses.html (Navigation angepasst)
  • v2_adminpanel/templates/customers.html (Navigation angepasst)

Dashboard-Inhalte:

  • 4 Hauptstatistiken als Karten
  • Lizenztyp-Verteilung
  • Status-Verteilung
  • Warnung für bald ablaufende Lizenzen
  • Übersicht der neuesten Aktivitäten

2025-01-06 - Suchfunktion implementiert

  • Volltextsuche für Lizenzen und Kunden
  • Case-insensitive Suche mit LIKE-Operator
  • Suchergebnisse mit Hervorhebung des Suchbegriffs
  • Suche zurücksetzen Button

Neue Features:

  • Lizenzsuche: Sucht in Lizenzschlüssel, Kundenname und E-Mail
  • Kundensuche: Sucht in Kundenname und E-Mail
  • Suchformular mit autofocus für schnelle Eingabe
  • Anzeige des aktiven Suchbegriffs
  • Unterschiedliche Meldungen für leere Ergebnisse

Geänderte Dateien:

  • v2_adminpanel/app.py (licenses() und customers() mit Suchlogik erweitert)
  • v2_adminpanel/templates/licenses.html (Suchformular hinzugefügt)
  • v2_adminpanel/templates/customers.html (Suchformular hinzugefügt)

Technische Details:

  • GET-Parameter für Suche
  • SQL LIKE mit LOWER() für Case-Insensitive Suche
  • Wildcards (%) für Teilstring-Suche
  • UTF-8 kompatibel für deutsche Umlaute