О ПРОЕКТЕ
Разрабатываем 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. Мониторинг & Логирование
Логировать все события (запросы, генерация, платежи, ошибки).
Иметь возможность отследить, что случилось с каждым видео и каждым платежом.
Ты создаешь полную, надежную систему, где все части (генерация, биллинг, асинхронность, обработка ошибок) работают вместе.
Не нужно писать с нуля. Нужно спроектировать правильно, а потом реализовать.