O PROJEKCIE
Opracowujemy platformę AI SaaS do generacji treści. Architektonicznie projekt stanowi "Wrapper" orkiestrator, łączący interfejs użytkownika z klastrem GPU (RunPod Serverless). Nie mamy zadania pisać infrastruktury od podstaw. Używamy gotowych szablonów.
Stos: Frontend na Next.js 14 + SupaStarter, Backend/DB na Supabase (PostgreSQL), Magazyn Cloudflare R2.
Nie potrzebujemy Fullstack developera, który „poprawi przycisk”. Potrzebujemy architekta, który zbuduje niezawodny Backend, zaprojektuje system kolejek i zapewni spójność danych podczas asynchronicznej generacji.
Termin: 8-10 tygodni
System działa w następujący sposób:
Użytkownik wysyła zapytanie o generację (tekst, parametry, model).
Backend przyjmuje zapytanie, sprawdza saldo, umieszcza zadanie w kolejce.
Asynchroniczny worker pobiera zadanie z kolejki i wysyła na RunPod.
RunPod generuje wideo 2-3 minuty i wysyła wynik z powrotem.
Backend zapisuje wideo w chmurze (R2), aktualizuje status i saldo.
Frontend widzi, że wideo jest gotowe, pokazuje je użytkownikowi.
Wszystko to musi działać niezawodnie: jeśli coś się zawali, system się odbuduje, pieniądze nie znikną, wideo nie zniknie.
CO TRZEBA ZROBIĆ
1. Zaprojektować Architektura
Narysować jak wszystko się porusza: od zapytania frontu do gotowego wideo.
Określić, gdzie dane są przechowywane, jak są aktualizowane.
Przemyśleć, co się stanie, jeśli RunPod się zawali, płatność zniknie, webhook przyjdzie dwa razy.
2. Zaprojektować Bazę Danych
Tabela users (saldo kredytów).
Tabela video_generations (wszystkie zamówienia wideo i ich statusy).
Tabela balance_ledger (dziennik wszystkich płatności i wydatków — do audytu).
Tabela payment_transactions (wszystkie zakupy kredytów).
Ograniczenia i indeksy, aby system się nie zepsuł przy błędach.
3. Określić wszystkie API Endpoints
Endpoints do generacji wideo (zapytanie i sprawdzenie statusu).
Endpoints do zarządzania saldem i płatnościami.
Endpoints do historii zamówień.
Endpoints do webhooków (powiadomienia od RunPod i systemu płatności).
4. Napisać FastAPI Backend
API dla frontendu (przyjmowanie zapytań, walidacja, zwracanie wyników).
Obsługiwacze dla webhooków (gdy RunPod mówi "wideo gotowe", gdy płatność mówi "pieniądze przyszły").
Logika do sprawdzania salda, rezerwacji kredytów, obciążania po sukcesie.
5. Skonfigurować Kolejkę (Redis/BullMQ)
Kiedy użytkownik uruchamia generację, zadanie trafia do kolejki.
Background worker pobiera zadania z kolejki i wysyła na RunPod.
Kolejka rozdziela obciążenie, aby nie przeciążać RunPod.
6. Napisać Background Worker
Worker nasłuchuje kolejki.
Pobiera zadanie, wysyła na RunPod z adresem URL zwrotnym.
Oczekuje na wynik przez webhook.
7. Skonfigurować Docker
Produkcja obrazu Docker z ComfyUI, wszystkimi modelami i kodem Python.
Optymalizować, aby kontener szybko startował na RunPod.
Używać Network Volume, aby ciężkie modele nie zajmowały miejsca w obrazie.
8. Integracja z RunPod
Skonfigurować, jak backend wysyła zadania do RunPod.
Ustawić adres URL zwrotny, aby RunPod mógł wysłać wynik z powrotem.
Obsłużyć błędy (jeśli RunPod się zawali, zadanie utknie, wynik zniknie).
9. Integracja z Cloudflare R2
10. Integracja z Systemem Płatności
Podłączyć Stripe / Krypto-gateway / oba.
Otrzymywać webhooki przy udanej płatności.
Aktualizować saldo użytkownika.
11. Obsługa Edge Cases & Failures
Jeśli RunPod się zawali w trakcie generacji — zwrócić pieniądze użytkownikowi.
Jeśli płatność przyszła dwa razy (duplikaty webhooków) — naliczyć tylko raz.
Jeśli użytkownik wyśle 10 zapytań jednocześnie i chce wydać 50 kredytów, a ma 30 — nie pozwolić mu wydać więcej.
Jeśli webhook zniknie w internecie — okresowo sprawdzać, co się dzieje z płatnością.
12. Monitorowanie & Logowanie
Logować wszystkie zdarzenia (zapytania, generacja, płatności, błędy).
Mieć możliwość śledzenia, co się stało z każdym wideo i każdą płatnością.
Tworzysz pełny, niezawodny system, w którym wszystkie części (generacja, billing, asynchroniczność, obsługa błędów) działają razem.
Nie trzeba pisać od podstaw. Trzeba zaprojektować poprawnie, a potem zrealizować.