Backlog — сервис «списка хотелок» (backlog) для фильмов и сериалов. Позволяет сохранять фильмы и сериалы, добавлять ссылку на источник просмотра, быстро выбирать, что смотреть прямо сейчас.
Идея создать такой сервис пришла тогда, когда накопившиеся хотелки на просмотр стали забываться в голове, слишком много мест где можно посмотреть тот или иной фильм/сериал, сидишь и мучаешься в попытках вспомнить. Добавляя ссылку на просмотр можно легко и быстро выбрать то, что подходит по настроению и перейти к просмотру. Если ссылка стала недоступна, то можно быстро найти по названию фильм и отредактировать.
- Python 3.13+
- FastAPI
- SQLAlchemy
- Alembic (миграции)
- PostgreSQL
- taskiq (фоновые задачи)
- RabbitMQ
- Jinja2
- Vite + Vue
- NPM
Контейнеризация: Docker (+ docker-compose)
- Клонируйте репозиторий:
git clone https://github.com/Nottezz/Backlog.git
cd backend- Установите зависимости через uv:
uv install- Настройте переменные окружения:
- Скопируйте шаблон и заполните значения:
cp .env.template .env- Пропишите параметры БД, секреты, настройки SMTP и т.д.
- Примените миграции:
alembic upgrade head- Запустите приложение в режиме разработки:
fastapi dev- Запустите фронтенд (если есть отдельная папка frontend):
cd frontend
npm install
npm run devdocker compose up --build -d- Базовый путь:
/ - Документация OpenAPI:
- Swagger UI:
/docs - ReDoc:
/redoc
- Swagger UI:
Примеры endpoint-ов:
- GET /api/movies — получить список фильмов
- POST /api/movies — добавить фильм
- GET /api/movies/{id} — получить фильм по id
- PUT /api/movies/{id} — обновить фильм
- DELETE /api/movies/{id} — удалить фильм
Пример создания фильма (curl):
curl -X POST "http://localhost:8000/api/movies" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{
"title": "Inception",
"rating": 8.7,
"imdb_id": 1375666
}'- Защищённые эндпоинты требуют заголовок:
Authorization: Bearer <access_token>
- Локальный запуск:
taskiq worker backlog_app.taskiq_broker:broker --fs-discover -tp "**/tasks" --no-configure-logging- Запуск тестов:
uv run pytest- Запуск тестов с покрытием:
uv run pytest --cov=backlog_app- Форкни репозиторий
- Создай ветку:
feature/my-feature - Сделай изменения и добавь тесты
- Открой Pull Request: опиши цель изменений и план тестирования