# Movie-DB Eine webbasierte Anwendung zur Verwaltung einer persönlichen Filmsammlung. ## Funktionsumfang (Features) * **Benutzer-System:** Vollständiges Registrierungs- und Login-System, sodass jeder Benutzer seine eigene, private Filmsammlung verwalten kann. * **Persönliche Filmlisten:** Jeder Benutzer sieht und durchsucht nur die Filme, die er selbst hinzugefügt hat. * **Filme hinzufügen:** Filme können manuell oder durch ein automatisiertes Scraping von IMDb hinzugefügt werden. * **Umfassende Suche:** Eine globale Suchleiste ermöglicht die gleichzeitige Suche nach Titel, Genre und Regisseur. * **Paginierung:** Die Filmliste ist in Seiten aufgeteilt, um auch bei großen Sammlungen übersichtlich zu bleiben. * **Sichere Verbindung:** Die Anwendung wird über HTTPS mit einem selbst-signierten SSL-Zertifikat bereitgestellt. * **Containerisierung:** Die gesamte Anwendung ist mit Docker und Docker Compose containerisiert, was die Bereitstellung vereinfacht. * **Automatisierte Bereitstellung:** Ein Ansible-Playbook automatisiert das Deployment der Anwendung. ## Voraussetzungen Stellen Sie sicher, dass die folgende Software auf Ihrem System installiert ist: * Python 3 * pip * Docker * Docker Compose * Ansible ## Inbetriebnahme Es gibt drei Möglichkeiten, die Anwendung zu starten. ### 1. Direkter Start mit Python Dies ist die klassische Methode für die lokale Entwicklung. 1. **Abhängigkeiten installieren:** ```bash pip install -r requirements.txt ``` 2. **Anwendung starten:** ```bash python3 main.py ``` 3. **Zugriff:** Öffnen Sie Ihren Browser und gehen Sie zu `https://localhost:5082`. Sie müssen eine Browser-Warnung aufgrund des selbst-signierten Zertifikats akzeptieren. ### 2. Start mit Docker Diese Methode kapselt die Anwendung in einem Container. 1. **Docker-Image erstellen:** ```bash docker build -t movie-db-app . ``` 2. **Docker-Container starten:** ```bash docker run -p 5082:5082 movie-db-app ``` 3. **Zugriff:** Öffnen Sie Ihren Browser und gehen Sie zu `https://localhost:5082`. ### 3. Start mit Ansible und Docker Compose (Empfohlen) Dies ist die automatisierte Methode, die einen sauberen Deployment-Prozess sicherstellt. 1. **Ansible Docker-Sammlung installieren (falls noch nicht geschehen):** ```bash ansible-galaxy collection install community.docker ``` 2. **Ansible-Playbook ausführen:** ```bash ansible-playbook start.yml ``` (Möglicherweise müssen Sie Ihr `sudo`-Passwort eingeben.) 3. **Zugriff:** Öffnen Sie Ihren Browser und gehen Sie zu `https://localhost:5082`. ## Projektstruktur Die wichtigsten Dateien und Ordner im Überblick: ``` . ├── Dockerfile ├── docker-compose.yml ├── main.py ├── moviedb_func.py ├── movie_db.db ├── README.md ├── requirements.txt ├── start.yml ├── cert.pem ├── key.pem └── templates/ ├── base.html ├── index.html ├── login.html └── register.html ``` * `main.py`: Die Hauptdatei der Flask-Anwendung. Sie enthält die Routen und die Anwendungslogik. * `moviedb_func.py`: Enthält die gesamte Geschäftslogik, Datenbankfunktionen und die `User`-Klasse. * `templates/`: Der Ordner für alle HTML-Templates. * `movie_db.db`: Die SQLite-Datenbankdatei. * `Dockerfile`: Die Bauanleitung für das Docker-Image der Anwendung. * `docker-compose.yml`: Definiert die Anwendung als Docker-Dienst für eine einfache Verwaltung. * `start.yml`: Das Ansible-Playbook für die automatisierte Bereitstellung. * `requirements.txt`: Liste der Python-Abhängigkeiten. * `cert.pem`, `key.pem`: Das selbst-signierte SSL-Zertifikat und der private Schlüssel. ## Benutzung 1. **Registrieren:** Erstellen Sie auf der Registrierungsseite einen neuen Benutzeraccount. 2. **Einloggen:** Melden Sie sich mit Ihren neuen Zugangsdaten an. 3. **Filme hinzufügen:** Nutzen Sie den "Film hinzufügen"-Button, um Filme entweder durch die IMDb-Suche oder manuell zu Ihrer Sammlung hinzuzufügen. 4. **Suchen:** Verwenden Sie die Suchleiste, um Ihre Sammlung nach Titeln, Genres oder Regisseuren zu durchsuchen. ## Mögliche zukünftige Erweiterungen * **Bearbeiten & Löschen:** Funktionen zum Bearbeiten und Löschen von bereits hinzugefügten Filmen. * **Detailseite:** Eine eigene Seite für jeden Film mit mehr Details (Schauspieler, Handlung, etc.). * **Sortieroptionen:** Die Möglichkeit, die Filmliste nach verschiedenen Kriterien zu sortieren.