Bildgenie.ai

Deutschsprachige SaaS-Plattform für KI-Bilder und Videos. Mein erstes echtes Software-Projekt, gebaut aus null Wissen heraus über mehr als ein Jahr. Aktuell im dauerhaften Wartungsmodus.

SaaS Flask React n8n Stripe MySQL AI
Bildgenie.ai Vorschau

Status

Bildgenie ist aktuell im dauerhaften Wartungsmodus. Ich entwickle nicht aktiv weiter, weil sich meine zeitlichen und persönlichen Prioritäten verschoben haben. Die Plattform läuft, der Code steht, alles ist abgesichert.

Wie ich da hingekommen bin

Ich habe Bildgenie mit null Wissen angefangen. Bei Code-Zeilen sind mir die Nackenhaare hochgegangen. Ich wusste nicht, wie ein Server aufgesetzt wird. Ich wusste nicht, wie man irgendwas live bringt. Ich wusste noch nicht mal, was Git oder GitHub ist.

Bildgenie war der Stein. Das Projekt, das mich wirklich geprägt hat. Code mit anderen Augen zu sehen.

Was ich auf dem Weg gelernt habe, hätte ich mir vorher nicht ausgedacht:

  • Git, schmerzhaft. Der Code war zwischendurch weg. Komplett. Ohne Git wäre das Projekt nach Tag drei tot gewesen.
  • Refactoring. Die Ordnerstruktur war ein Drama. Ein Refactoring ist mit das trockenste Stück IT-Arbeit, das man machen kann, und absolut notwendig. Du sorgst gleich für Struktur und Ordnung.
  • VPS-Hosting. Wo bringe ich den Code-Kram live? Antwort: ein VPS gibt es für ein paar Euro im Monat auf jeder größeren Plattform. Selbst aufsetzen, härten, absichern.
  • Datenbanken zerschießen. Einmal kurz vorm Beta-Test die Prod-DB gekillt. Solche Momente lernst du nur einmal.

Über ein Jahr Entwicklung später war der Punkt erreicht, an dem ich wirklich sagen konnte: das funktioniert. Ich habe quasi im Alleingang (mit Claude an meiner Seite) etwas gebaut, an dem Senior-Devs ein paar Wochen sitzen würden. Die Zeit war kein verschwendetes Investment. Im Gegenteil. Es war mit Abstand das beste Invest in Zeit, das ich je gemacht habe. Allein dieses Wissen, dieser Aufbau von Server-Strukturen, das Hochziehen und Zerschießen von Datenbanken, das war jede Stunde wert.

Bildgenie wird immer der Punkt sein, der mich in die IT gebracht hat. Dafür bin ich diesem Projekt unfassbar dankbar. Vielleicht geht es ja irgendwann mal komplett live, die Struktur ist da. Aber alleine werde ich das nicht schaffen, und es ist ein Giga-Projekt. Vielleicht nicht vom Code her, aber für mich persönlich und meine Entwicklung definitiv.

Die Technik dahinter

Was Bildgenie ist

Eine deutschsprachige SaaS-Plattform für KI-generierte Bilder und Videos. Statt ein weiteres “ChatGPT für Bilder” mit leerem Prompt-Feld zu sein, bündelt Bildgenie spezialisierte Generatoren für konkrete Anwendungsfälle: LinkedIn-Profilbilder, Produktfotos, Motivkalender, Werbevideos, Bildreparatur und so weiter. Jeder Generator hat eine eigene Oberfläche, eigene Eingabefelder und ein vorbereitetes Modell-Setup im Hintergrund.

Es ist kein Versuch, OpenAI Konkurrenz zu machen. Es ist ein Produkt-Layer über bestehenden KI-Modellen. Genau die Schicht, in der gerade das meiste Geld liegt.

Coins statt Abo

Das Geschäftsmodell ist bewusst kein Subscription-Druck. User kaufen Coin-Pakete, die sie nach Bedarf einsetzen. Eine Bildgenerierung kostet zwischen ~20 und ~120 Coins, ein Video je nach Länge und Qualität bis ins Vierstellige. Bezahlung läuft über Stripe.

Was das gut macht:

  • Kein Druck für Gelegenheitsnutzer, ein Abo zu rechtfertigen
  • Faire Skalierung: wer fünf Bilder im Monat will, zahlt nicht für fünfhundert
  • Klare Kostentransparenz vor jeder Generierung. Der Preis steht direkt am Button
  • Buchhalterisch sauber: jede Coin-Bewegung läuft über Datenbank-Transaktionen mit Audit-Trail, nicht über volatile Counter

Drei-Schichten-Architektur

Klassischer Drei-Schichten-Aufbau mit einem entscheidenden Twist.

Frontend. React-SPA mit Tailwind. Alle Generator-Definitionen, also Felder, Preise, Validierung, Endpunkte, leben in einer einzigen Konfigurationsdatei. Klingt unspektakulär, ist aber das Rückgrat des Projekts: einen neuen Generator hinzufügen heißt, einen Eintrag in dieser Config zu ergänzen. Keine Komponenten kopieren, keine Preise an drei Stellen pflegen, kein Drift zwischen UI und Backend.

Backend. Flask, SQLAlchemy, MySQL, Redis. Klein und unaufgeregt. Das Backend macht bewusst nicht das, was die meisten erwarten: es generiert keine Bilder selbst. Es ist Orchestrator, Buchhalter und Wächter.

Orchestrierung. n8n-Webhooks als Zwischenschicht zwischen Backend und KI-Anbietern. Das ist der Punkt, der Bildgenie technisch wirklich stark macht und gleichzeitig der unauffälligste.

n8n als Zwischenschicht

Statt im Flask-Code direkt Requests an die KI-Anbieter zu schicken, geht jeder Generierungs-Auftrag erst an einen n8n-Workflow. Der Workflow nimmt das Payload entgegen, transformiert es ins Format des jeweiligen Anbieters (KIE.AI und Co.), wartet auf das Ergebnis oder gibt eine Task-ID zurück bei Long-Running-Jobs, und liefert das Resultat in einem für Bildgenie einheitlichen Format zurück.

Was das praktisch bedeutet:

  • Anbieter austauschbar. Wenn ein KI-Anbieter teurer wird, ausfällt oder ein neuer mit besseren Modellen erscheint, wird der n8n-Workflow umgebaut. Nicht das Backend. Kein Deployment, kein Code-Review, kein Risiko für den Live-Betrieb.
  • Prompt-Engineering an einem Ort. Die System-Prompts, Negative-Prompts und Modell-Parameter, die jeden Generator zu dem machen, was er ist, leben in n8n. Wer das Backend liest, sieht keinen einzigen Prompt, nur Webhook-URLs.
  • Schnellere Iteration. Ein Generator-Tweak braucht keinen Backend-Deploy. Workflow ändern, speichern, läuft.
  • Klare Verantwortungstrennung. Backend für Auth, Coins, Validierung, Logging. n8n für AI-Logik. Frontend für UX. Jede Schicht hat einen Job.

Sync vs. Async

Bilder gehen meist in Sekunden. Videos brauchen Minuten. Bildgenie behandelt beides unterschiedlich.

Sync-Pfad (z.B. einfache Bildgenerierung): Request rein, Bild raus, Coins werden im selben Moment gebucht.

Async-Pfad (z.B. Videos): Der Server gibt sofort eine Task-ID zurück. Das Frontend pollt diese Task-ID mit exponential backoff: kurze Intervalle am Anfang, größere Abstände später, definiertes Maximum. Während der Wartezeit kann der User die Seite refreshen oder den Tab schließen, der laufende Job ist lokal persistiert und wird bei Rückkehr wiedergefunden.

Das ist robust, weil der Browser nicht in einem Vier-Minuten-Request hängt, Network-Hiccups nicht zu verlorenen Generierungen führen und die KI-Anbieter nicht mit konstantem Polling geflutet werden.

Galerie lokal, mit Absicht

Generierte Bilder und Videos landen nicht auf dem Bildgenie-Server, sondern im IndexedDB des Browsers. Bewusste Architekturentscheidung mit mehreren Vorteilen:

  • Datensparsamkeit. Bildgenie speichert keine User-Generierungen langfristig. Was im Browser des Users liegt, gehört dem User.
  • DSGVO-freundlich. Keine Frage nach Löschfristen für Inhalte, die nie zentral gespeichert wurden.
  • Kosten. Kein S3-Bucket, der mit jedem aktiven User wächst.
  • Performance. Galerie öffnet instant, kein Server-Roundtrip.

Trade-off: wer den Browser wechselt, verliert seine lokale Galerie. Für eine Plattform, bei der das Resultat ohnehin meist sofort runtergeladen oder weiterverwendet wird, ist das ein akzeptabler Kompromiss. Für Power-User wäre eine optionale Cloud-Sync später ein klarer Premium-Hebel.

Drei Prinzipien, die das Setup zusammenhalten

Was die Wartung trotz Komplexität schlank hält:

  1. Single Source of Truth überall. Preise, Generator-Definitionen, Webhook-URLs, Umgebungs-Variablen, jeweils genau eine Quelle. Kein Mehraufwand bei Änderungen.
  2. Externe Services für alles, was nicht Kerngeschäft ist. Stripe macht Payments. Sentry macht Error-Monitoring. n8n macht Orchestrierung. KI-Anbieter machen KI. Bildgenie selbst macht Auth, Coin-Buchhaltung und UI. Und tut das gut.
  3. Bewusste Schlichtheit. Kein Microservice-Wahnsinn, kein Kubernetes, kein eigenes Modell-Hosting. Eine Flask-App, eine MySQL-DB, ein Redis. Was du nicht hast, kann nicht kaputtgehen.