Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

Тестовое задание на позицию Fullstack разработчика (Python + React)

Вводные:

  1. Здесь представлен MVP проект файлообменника. Он позволяет загружать файлы, проверяет их на подозрительный контент и отправляет алерты;
  2. Репозиторий содержит в себе бэкенд и фронтенд части;
  3. В обоих частях присутствуют баги, неоптимизированный код, неудачные архитектурные решения.

Задачи:

  1. Проведите рефакторинг бэкенда, не ломая бизнес-логики: предложите свое видение архитектуры и реализуйте его;
  2. (Дополнительно) На бэкенде есть возможность неочевидной оптимизации - выполните ее;
  3. (Дополнительно) Разбейте логику фронтенда на слои;

Запуск проекта

Для запуска необходимы Docker и Docker Compose.

Перед запуском проверьте файл .env.dev в корне проекта:

POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=test
POSTGRES_HOST=backend-db
PGPORT=5432
CELERY_BROKER_URL=redis://backend-redis:6379/0

Соберите и запустите все сервисы:

docker compose -f docker-compose.dev.yml up --build -d

Примените миграции базы данных:

docker compose -f docker-compose.dev.yml exec backend alembic upgrade head

После запуска доступны:

Архитектура решения

Бэкенд организован как сервис file_service в стиле Clean Architecture и DDD:

  • domain/file — агрегат файла, алерт, статусы, инварианты и доменные правила;
  • application/file/commands и queries — отдельные обработчики use case;
  • application/common/interfaces — контракты хранилища и очереди;
  • infrastructure — конфигурация, SQLAlchemy, PostgreSQL, файловая система и Celery;
  • presentation/api — контроллеры, HTTP-схемы и обработчики ошибок;
  • presentation/main.py — создание и настройка FastAPI-приложения;
  • bootstrap/container.py — Dishka providers и регистрация command/query handlers.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages