Echolot ist ein interaktives Social-Media-Spiel aus dem Software-Entwicklungspraktikum. Es macht Filterblasen und Empfehlungslogiken anhand eines simulierten Feeds sichtbar und wertet die Entscheidungen der Spieler:innen anschließend aus.
- Live-Demo: https://youssefkaabachi.github.io/echolot/
- Technologien: React, FastAPI, Python, SQLAlchemy und Llama 3 über Ollama
Die öffentliche Live-Demo läuft vollständig im Browser mit vorbereiteten Beispieldaten. Der vollständige Quellcode in diesem Repository enthält zusätzlich das produktive FastAPI-Backend, die Datenbanklogik und die lokale LLM-Anbindung.
code/
├── backend/ # Python FastAPI Backend
│ └── app/
│ ├── api/ # Controller-Schicht (API-Endpunkte, Routen & Request-Handling)
│ ├── core/ # Zentrale Konfigurationen (Datenbank-Setup, globale Variablen)
│ ├── data/ # Statische Spieldaten (z. B. Skripte zur Post-Initialisierung)
│ ├── models/ # Daten-Schicht (SQLAlchemy ORM-Datenbankmodelle)
│ ├── schemas/ # Validierungs-Schicht (Pydantic-Datenstrukturen & Enums)
│ ├── services/ # Anwendungs-Schicht (Spiellogik & LLM-Anbindung)
│ └── main.py # Haupteinstiegspunkt der FastAPI-Anwendung
│
├── frontend/ # React Frontend (Vite)
│ └── src/
│ ├── api/ # API-Clients für die Kommunikation mit dem Backend
│ ├── components/ # Wiederverwendbare React-UI-Komponenten
│ ├── logic/ # Clientseitige Berechnungen und Zustandssteuerungen
│ ├── pages/ # Hauptansichten/Seiten des Spiels (z. B. Feed, Evaluation)
│ ├── styles/ # CSS/Styling-Dateien
│ ├── App.jsx # Zentrale React-Hauptkomponente & Client-Routing
│ └── main.jsx # Einstiegspunkt für das DOM-Rendering
│
├── .gitignore # Schließt temporäre Dateien (z. B. .venv, node_modules) von Git aus
├── deploy.sh # Shell-Skript zur Automatisierung des Deployments (Build & Start)
└── README.md # Projektdokumentation und Installationsanleitung
- Virtual Environment einrichten
- Unten rechts auf "Python" klicken
- "add new interpreter" -> "Add local Interpreter" -> Python 3.14.0 auswählen
- PyCharm Terminal öffnen -> "pip install -r backend/requirements.txt"
- Im Terminal "pre-commit install"
- uvicorn backend.app.main:app --reload
- url auf /docs ändern
Für die Inhaltsanalyse der Posts nutzen wir das lokale Modell Llama 3 aus dem Framework Ollama. Dafür wird keine API-Credits oder eine Internetverbindung benötigt.
- Installation: Lokal die Ollama-Anwendung installieren ollama.com
- Modell einmalig laden: Das Modell mit folgendem Befehl im Terminal laden:
ollama run llama3(Am Besten vorher echolot.db Datei einmal löschen) Vom Code Ordner aus im Terminal ausführen: python3 -m backend.app.data.seed