Vier Dienste in einem Compose-Stack, jeder mit einer klaren Aufgabe:
- api (FastAPI, Port 8000) — die Erkennung selbst: Bild- und Videoklassifikation, Zensieren, Batch, CLIP-Embeddings, Moderation, Pose, Szenenschnitt.
- auth (FastAPI, Port 8001) — alles rund um Mandanten: JWT-Login, API-Keys (Master und persönlich, nur gehasht gespeichert), Pläne, Nutzungsprotokoll, Webhooks.
- studio (Next.js 16 + Mantine 9, Port 3000) — Admin-Dashboard mit Upload-Oberfläche, Demo-Seite und zweisprachiger Oberfläche.
- db — PostgreSQL im Docker-Betrieb, SQLite lokal. Beide hinter derselben SQLAlchemy-Schicht, Schemaänderungen über Alembic.
Redis ist optional zuschaltbar und übernimmt dann dreistufiges Rate-Limiting und einen Ergebnis-Cache über den SHA-256 des Bildes.
Die Modelle sind austauschbar: NudeNet (640m) und EraX-YOLO11m laufen einzeln oder als Ensemble auf demselben Input. Überlappende Treffer werden über ein gemeinsames concept zusammengeführt; das Feld sources zeigt, welches Modell den Treffer stützt. Für kleinere Maschinen lässt sich die EraX-Modellgröße per Environment auf s oder n drehen, ohne am Code zu drehen.