Разработка API для системы управления баллами пользователей с возможностью:
- Регистрации/аутентификации
- Транзакций между пользователями
- Маркетплейса для обмена баллами
- Администрирования системы
/register- регистрация нового пользователя/login- аутентификация (JWT)/me- информация о текущем пользователе
- Регистрация через email/password
- Начальный баланс: 100 баллов
- Возможность назначения админов через TRUSTED_ADMIN_EMAILS
/leaderboard- топ-10 пользователей по балансу/marketplace/listings- доступные предложения/balance- проверка текущего баланса
/marketplace/create- создание предложения/marketplace/accept- принятие предложения
- Система транзакций при передаче баллов
- История операций сохраняется
- Докеризация приложения (docker-compose)
- Использование Postgres в качестве БД
- JWT-аутентификация
-
Auth Service:
- Регистрация/аутентификация
- JWT-токены
- Ролевая модель (user/admin)
-
User Service:
- Управление балансом
- Транзакции между пользователями
- Лидерборд
-
Marketplace Service:
- Создание/принятие предложений
- Валидация операций
-
Admin Service:
- Назначение админов
- Пополнение балансов
[Клиент] -> [API Gateway (FastAPI)] ├──> Auth Service ├──> User Service ├──> Marketplace Service └──> Admin Service └──> DB (PostgreSQL)
-
Безопасность vs Удобство:
- JWT без refresh-токенов
- Админские права через env-переменные
-
Производительность vs Консистентность:
- Нет кеширования запросов
- ACID-транзакции для операций с баллами
-
Масштабируемость:
- Монолитная архитектура
- Одна БД для всех сервисов
-
Аутентификация:
- OAuth2 вместо JWT
- Сессии вместо токенов
-
Архитектура:
- Микросервисы вместо монолита
- Отдельные БД для разных сервисов
-
Баланс:
- Криптовалютная модель вместо баллов
- Внешние платежные системы
- Как обрабатывать спорные транзакции?
- Нужна ли система отката операций?
- Как масштабировать маркетплейс при росте пользователей?
- Нужны ли push-уведомления о транзакциях?
| Компонент | Сложность | Приоритет |
|---|---|---|
| Auth | Средняя | Высокий |
| User Balance | Низкая | Критичный |
| Transactions | Высокая | Высокий |
| Marketplace | Средняя | Средний |
| Admin Panel | Низкая | Низкий |
Итог: MVP реализуем за 2-3 неде