Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 7 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,6 @@ Backlog — сервис «списка хотелок» (backlog) для фил
> Добавляя ссылку на просмотр можно легко и быстро выбрать то, что подходит по настроению и перейти к просмотру. Если
> ссылка стала недоступна, то можно быстро найти по названию фильм и отредактировать.

## Текущий статус (TODO)

(Отметки соответствуют состоянию на момент создания README — обновляй чек-лист по мере прогресса.)

- [X] Поправить чтобы рейтинг был флоатом
- [X] Возможно, добавить ссылку на ресурс где можно посмотреть
- [X] Каждый фильм должен быть подписан кем был добавлен
- [X] Вывод фильмов, которые добавил текущий пользователь
- [X] Описать проект на GitHub
- [X] Написать тесты
- [X] Подготовить проект к выкладке на прод
- [X] Переделать Original Link на IMDB ID
- [X] Настроить логгинг


## Задумки на будущее
- [ ] Выпуск на публику: подтверждение email при регистрации
- [ ] Система уведомлений: пользователь может подписаться на уведомление когда выйдет новая серия сериала/фильма, администратор может добавлять эти уведомления
- [ ] Интеграция с API IMDB/KP

## Технологии

### Backend
Expand All @@ -50,7 +30,7 @@ Backlog — сервис «списка хотелок» (backlog) для фил

Контейнеризация: Docker (+ docker-compose)

## Установка (локально) — с uv (UV package manager)
## Локальная развёртка

1. Клонируйте репозиторий:

Expand All @@ -65,8 +45,6 @@ cd backend
uv install
```

(Команда установит зависимости, указанные в конфигурации проекта — `pyproject.toml`.)

3. Настройте переменные окружения:

- Скопируйте шаблон и заполните значения:
Expand All @@ -77,7 +55,7 @@ cp .env.template .env

- Пропишите параметры БД, секреты, настройки SMTP и т.д.

4. Примените миграции (через uv-run, если вы используете uv для запуска команд, иначе вызывайте alembic напрямую):
4. Примените миграции:

```bash
alembic upgrade head
Expand All @@ -97,16 +75,12 @@ npm install
npm run dev
```

## Быстрый запуск с Docker

Пример (при наличии docker-compose.yml и Dockerfile):
## Запуск Docker контейнеров

```bash
docker compose -f docker-compose.dev.yaml up --build -d
docker compose up --build -d
```

После сборки приложение доступно по адресу: http://localhost:8000

## API (общая информация)

- Базовый путь: `/api` (может быть `/`)
Expand Down Expand Up @@ -140,12 +114,14 @@ curl -X POST "http://localhost:8000/api/movies" \
- Защищённые эндпоинты требуют заголовок:
`Authorization: Bearer <access_token>`


## Брокер сообщений

- Запуск:

```bash
taskiq worker backlog_app.taskiq_broker:broker --fs-discover -tp "**/tasks" --no-configure-logging
```

## Тестирование

- Запуск тестов:
Expand Down
1 change: 1 addition & 0 deletions backend/.dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ target/

# Virtual environment
.env
config.local.yaml
.venv/
venv/

Expand Down
16 changes: 16 additions & 0 deletions backend/.env.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
BACKLOG__DB__CONNECTION__HOST=pg
BACKLOG__DB__CONNECTION__PORT=5432
BACKLOG__DB__CONNECTION__USERNAME=postgres
BACKLOG__DB__CONNECTION__PASSWORD=postgres
BACKLOG__DB__CONNECTION__NAME=backlog

BACKLOG__TASKIQ__RBMQ_HOST=rabbitmq
BACKLOG__TASKIQ__RBMQ_PORT=5672
BACKLOG__TASKIQ__RBMQ_USERNAME=guest
BACKLOG__TASKIQ__RBMQ_PASSWORD=guest

BACKLOG__ACCESS_TOKEN_DB__RESET_PASSWORD_TOKEN_SECRET=
BACKLOG__ACCESS_TOKEN_DB__VERIFICATION_TOKEN_SECRET=

BACKLOG__SUPERUSER__EMAIL=admin@site.com
BACKLOG__SUPERUSER__PASSWORD=admin
5 changes: 3 additions & 2 deletions backend/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM python:3.13-slim
FROM python:3.13

ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1
Expand All @@ -9,9 +9,10 @@ WORKDIR /app

COPY ./pyproject.toml ./
COPY ./uv.lock ./
COPY config.default.yaml ./
COPY ./backlog_app ./backlog_app

RUN uv sync
RUN uv sync --locked --no-install-project --no-dev

EXPOSE 8000
CMD ["sh", "-c", "cd backlog_app && uv run alembic upgrade head && cd .. && uv run fastapi run backlog_app/main.py --port 8000"]
20 changes: 14 additions & 6 deletions backend/backlog_app/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
)

BASE_DIR = Path(__file__).resolve().parent
ROOT_DIR = BASE_DIR.parent


class LoggingConfig(BaseModel):
Expand Down Expand Up @@ -56,21 +57,28 @@ class DataBase(BaseModel):


class TaskiqConfig(BaseModel):
url: AmqpDsn = "amqp://guest:guest@localhost:5672//"
rbmq_host: str
rbmq_port: int
rbmq_username: str
rbmq_password: str

@property
def url(self) -> str:
return f"amqp://{self.rbmq_username}:{self.rbmq_password}@{self.rbmq_host}:{self.rbmq_port}//"


class Settings(BaseSettings):
model_config = SettingsConfigDict(
case_sensitive=False,
env_file=(
BASE_DIR / ".env.template",
BASE_DIR / ".env",
ROOT_DIR / ".env.template",
ROOT_DIR / ".env",
),
env_prefix="BACKLOG__",
env_nested_delimiter="__",
yaml_file=(
BASE_DIR / "config.default.yaml",
BASE_DIR / "config.local.yaml",
ROOT_DIR / "config.default.yaml",
ROOT_DIR / "config.local.yaml",
),
yaml_config_section="backlog",
)
Expand Down Expand Up @@ -106,7 +114,7 @@ def settings_customise_sources(
)

db: DataBase
taskiq: TaskiqConfig = TaskiqConfig()
taskiq: TaskiqConfig
logging: LoggingConfig = LoggingConfig()
access_token_db: AccessToken
superuser: SuperUser
Expand Down
File renamed without changes.
1 change: 0 additions & 1 deletion backend/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ dependencies = [
"taskiq>=0.12.1",
"taskiq-aio-pika>=0.5.0",
"taskiq-fastapi>=0.4.0",
"taskiq-redis>=1.2.1",
"uvicorn>=0.40.0",
]

Expand Down
24 changes: 0 additions & 24 deletions backend/uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

54 changes: 0 additions & 54 deletions docker-compose.dev.yaml

This file was deleted.

Loading
Loading