О ПРОЕКТЕ
Розробляємо AI SaaS-платформу для генерації контенту. Архітектурно проект представляє собою "Wrapper" оркестратор, що зв'язує користувацький інтерфейс з GPU-кластером (RunPod Serverless). У нас немає завдання писати інфраструктуру з нуля. Ми використовуємо готові шаблони.
Стек: Frontend на Next.js 14 + SupaStarter, Backend/DB на Supabase (PostgreSQL), Сховище Cloudflare R2.
Нам не потрібен Fullstack-розробник, який «підправить кнопку». Нам потрібен архітектор, який побудує надійний Backend, спроектує систему черг і забезпечить консистентність даних при асинхронній генерації.
Термін: 8-10 тижнів
Система працює так:
Користувач надсилає запит на генерацію (текст, параметри, модель).
Бекенд приймає запит, перевіряє баланс, ставить задачу в чергу.
Асинхронний worker бере задачу з черги і надсилає на RunPod.
RunPod генерує відео 2-3 хвилини і надсилає результат назад.
Бекенд зберігає відео в хмарному сховищі (R2), оновлює статус і баланс.
Фронтенд бачить, що відео готове, показує його користувачу.
Все це повинно працювати надійно: якщо щось впаде, система відновиться, гроші не загубляться, відео не загубиться.
ЧТО НУЖНО СДЕЛАТЬ
1. Спроектувати Архітектуру
Намалювати як все рухається: від запиту фронта до готового відео.
Визначити, де дані зберігаються, як вони оновлюються.
Продумати, що буде якщо RunPod впаде, платіж загубиться, вебхук прийде двічі.
2. Спроектувати Базу Даних
Таблиця users (баланс кредитів).
Таблиця video_generations (всі замовлення відео і їх статуси).
Таблиця balance_ledger (журнал всіх платежів і витрат — для аудиту).
Таблиця payment_transactions (всі покупки кредитів).
Constraints і індекси, щоб система не поламалася при помилках.
3. Визначити всі API Endpoints
Endpoints для генерації відео (запит і перевірка статусу).
Endpoints для управління балансом і платежами.
Endpoints для історії замовлень.
Endpoints для вебхуків (сповіщення від RunPod і платіжної системи).
4. Написати FastAPI Backend
API для фронтенда (прийом запитів, валідація, повернення результатів).
Обробники для вебхуків (коли RunPod говорить "відео готове", коли платіжка говорить "гроші прийшли").
Логіка для перевірки балансу, резервування кредитів, списання після успіху.
5. Налаштувати Чергу (Redis/BullMQ)
Коли користувач запускає генерацію, задача йде в чергу.
Background worker бере задачі з черги і надсилає на RunPod.
Черга розподіляє навантаження, щоб не перевантажувати RunPod.
6. Написати Background Worker
7. Налаштувати Docker
Production Docker-образ з ComfyUI, всіма моделями і Python кодом.
Оптимізувати, щоб контейнер швидко стартував на RunPod.
Використовувати Network Volume, щоб важкі моделі не займали місце в образі.
8. Інтеграція з RunPod
Налаштувати, як бекенд надсилає задачі на RunPod.
Встановити callback URL, щоб RunPod міг надіслати результат назад.
Обробити помилки (якщо RunPod впав, задача зависла, результат загубиться).
9. Інтеграція з Cloudflare R2
10. Інтеграція з Платіжною Системою
11. Обробка Edge Cases & Failures
Якщо RunPod впаде посередині генерації — повернути гроші юзеру.
Якщо платіж прийшов двічі (дублікати вебхуків) — зарахувати тільки один раз.
Якщо юзер надішле 10 запитів одночасно і хоче витратити 50 кредитів, а у нього 30 — не дати йому більше витратити.
Якщо вебхук загубиться в інтернеті — періодично перевіряти, що з платежем.
12. Моніторинг & Логування
Логувати всі події (запити, генерація, платежі, помилки).
Мати можливість відстежити, що сталося з кожним відео і кожним платежем.
Ти створюєш повну, надійну систему, де всі частини (генерація, білінг, асинхронність, обробка помилок) працюють разом.
Не потрібно писати з нуля. Потрібно спроектувати правильно, а потім реалізувати.