jCloud

jCloud ist eine Webapplikation, die als Cloud-Speicherlösung funktioniert. Es ermöglicht Nutzern das Speichern von Dateien und die Organisation dieser mit Ordnern (virtuellen Verzeichnissen), ähnlich wie in einem Dateisystem.

URL zum Projekt: https://jcloud-services.ddns.net

Grundlegende Architektur

Wichtigste Features

Verwendete Technologien

Frontend

  • HTML5
  • CSS3
  • JavaScipt

Backend

  • Linux
  • Python
  • FastAPI, Uvicorn, Pydantic
  • Podman
  • Podman Compose
  • PostgreSQL
  • SQLite3
  • Python-Modul http.server
  • Pytest
  • u. a. die Python-Module os, urllib, hashlib, datetime, pickle, json, threading, re

Sonstige

  • Visual Studio Code zur Entwicklung
  • DeepL teilweise bei der Übersetzung verwendet

Teilprojekte

Abgeschlossene Teilprojekte

  1. Webserver (September/Oktober 2024): Umsetzung des Webservers, der die Ressourcen des Frontends an den Client sendet
  2. Benutzerverwaltungssystem (Oktober - Dezember 2024): Umsetzung des REST-Services zum Anmelden sowie Erstellen und Löschen von Benutzern mit Speicherung in SQLite-Datenbank
  3. Frontend (Januar - März 2025): Umsetzung der Single Page Application als grafischer Benutzeroberfläche für die Anmeldung und das Erstellen von Benutzern, des Dashboards und der Startseite.
  4. Datei-/Verzeichnisverwaltungssystem (April/Mai 2025): Erweiterung des REST-Services und des Frontends um das Hochladen, Herunterladen und Auflisten von Dateien und Verzeichnissen. Persistieren der Metadaten (IDs, Pfade, ...) sowie Dateien selbst in einem Verzeichnis im Dateisystem des Servers.
  5. Erweiterte Datei-/Verzeichnisverwaltung (Juni/Juli 2025): Erweiterung des REST-Services um das Ersetzen von Dateien.
  6. Erweiterte Datei-/Verzeichnisverwaltung (Juli 2025): Erweiterung des REST-Services um das Umbenennen von Dateien/Verzeichnissen und deren Löschung. Änderung der Struktur der Metadatendatenbank, sodass anstatt Pfaden nur der Elementname und die ID des übergeordneten Verzeichnisses gespeichert wird, was die Effizienz des Umbenennens und Verschiebens von Elementen erheblich erhöht. Migration der bestehenden Metadaten in die neue Struktur.
  7. Internationalisierung (August/September 2025): Erweiterung des Frontends um die Internationalisierung. Die unterstützten Sprachen sind Deutsch, Englisch und Italienisch. Bei Italienisch teilweise übersetzt mit DeepL.
  8. Speicherverbrauchsanzeige pro Nutzer (Oktober 2025): Erweiterung des REST-Services und des Frontends um das Speichern und Abfragen des belegten Speicherplatzes der Benutzer und das Anzeigen im Dashboard
  9. jhc (jCloud Health Check) (November - Dezember 2025): Ein Health-Check-Tool zur Überwachung von Services

Laufende Teilprojekte

  1. Microservice-Architektur: Umstrukturierung des Backends in Microservice-Architektur in Services für Benutzer, Dateien und Dashboard. Dazu
    • Modularisierung des Codes
    • Containerisierung mit Podman
    • Replikation mancher Daten für maximale Laufzeitunabhängigkeit und Effizienz der Services mit Hilfe von jeb (s. u.)
  2. jeb (jCloud Event Bus): Ein leichtgewichtiger Event Bus

Geplante Teilprojekte

  1. Erweiterung der Infrastruktur: Aufbau einer weiteren Raspberry Pi-Hardware und Einsatz von Kubernetes für die Orchestrierung der Container im Cluster
Hinweis: Einige der Teilprojektzeitpunkte sind geschätzt.