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
- Frontend: Single Page Application
- Webserver zum Ausliefern des Frontends
- Backend über REST-Services und SQL-Datanbank
- Health Check, der die Services regelmäßig prüft und sie im Fehlerfall automatisiert neu startet.
Wichtigste Features
- Erstellen von Benutzern
- Anmeldung
- Dateien hochladen und speichern
- Dateien in Verzeichnissen organisieren
- Gespeicherte Dateien herunterladen
- Dateien/Verzeichnisse löschen
- Dateien/Verzeichnisse umbenennen
- Dateien ersetzen (aktuell noch nicht im Frontend implementiert)
Verwendete Technologien
Frontend
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
-
Webserver (September/Oktober 2024): Umsetzung des Webservers, der die Ressourcen des Frontends an den Client sendet
-
Benutzerverwaltungssystem (Oktober - Dezember 2024): Umsetzung des REST-Services zum Anmelden sowie Erstellen und Löschen von Benutzern mit Speicherung in SQLite-Datenbank
-
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.
-
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.
-
Erweiterte Datei-/Verzeichnisverwaltung (Juni/Juli 2025): Erweiterung des REST-Services um das Ersetzen von Dateien.
-
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.
-
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.
-
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
-
jhc (jCloud Health Check) (November - Dezember 2025): Ein Health-Check-Tool zur Überwachung von Services
Laufende Teilprojekte
-
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.)
-
jeb (jCloud Event Bus): Ein leichtgewichtiger Event Bus
Geplante Teilprojekte
-
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.