Skip to content

Simple task manager web application written in Vue.js and FastAPI

License

Notifications You must be signed in to change notification settings

ivankarmanow/simple_task_manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание "Управление задачами"

Спроектировал и разработал реализацию Карманов И.О. в качестве тестового задания в компанию DMD. Использованные инструменты:

  • FastAPI
  • OpenAPI (Swagger UI)
  • SQLAlchemy
  • Poetry
  • Pytest
  • Vue.js 3
  • Bootstrap 5
  • Docker

Установка и запуск

Приложение можно легко запустить с помощью Docker. Для этого необходимо:

  1. Клонировать репозиторий
  2. В файле compose.yml поменять адрес сайта task-manager.karmanow.ru на ваш домен, либо IP-адрес, либо localhost для запуска на локальной машине
  3. После этого необходимо выполнить команду docker compose up -d и приложение соберётся в образы, которые будут совместно запущены в необходимых кофигурациях
  4. Последний шаг - развёртывание миграций. Для этого необходимо:
    • Открыть консоль внутри контейнера backend командой docker exec -w /backend/ -it backend bash
    • Установить текстовый редактор, к примеру nano командой apt update && apt install nano
    • Затем выполнить команду alembic init migrations для инициализации миграций
    • После этого отредактировать файл alembic.ini, вставив в поле sqlalchemy.url валидную строку доступа к БД, по умолчанию это будет postgresql+psycopg://ivan:secret123@postgres/test
    • Далее отредактировать файл migrations/env.py, в поле target_metadata вставить ссылку на объект metadata, по умолчанию
from app.db.sqlalchemy import Base
    
target_metadata = Base.metadata
  • Последним шагом станет создание миграции и её применение, для этого выполните команды
alembic revision -m "Initial" --autogenerate
alembic upgrade head

На этом процесс развёртывания приложения завершён, оно станет доступно на 80 порту вашего IP-адреса/домена/localhost'а

О проекте

Бэкенд данного проекта написан на фреймворке FastAPI, с использованием SQLAlchemy ORM и миграций Alembic. Для валидации входных и выходных данных использован фреймворк Pydantic. Я старался придерживаться хорошего стиля кода и архитектурных решений, таких как разделение приложения на слои и вынесение бизнес-логики в независимые компоненты.

Все эндпоинты API задокументированы с помощью OpenAPI, а также протестированы библиотекой pytest Тесты вы можете запустить командой docker exec -w /backend/app/ -it backend pytest, документацию к API можно посмотреть по ссылке http://localhost/api/docs.

В качестве фронтенд-части проекта (веб-интерфейс) используется приложение, написанное на Vue.js 3. Даннй фреймворк был абсолютно новым для меня, как и сама концепция реактивности, поэтому качество кода оставляет желать лучшего, однако я постарался разделить интерфейс на компоненты и организовать их взаимодействие в одном стиле. Для стилизации элементов интерфейса использован CSS-фреймворк Bootstrap 5.

Для развёртывания всего проекта целиком использованы возможности инструмента Docker, а также его чатси - Docker Compose. Благодаря этому проект относительно легко разворачивается на любом компьютере, как локально, так и на сервере.

About

Simple task manager web application written in Vue.js and FastAPI

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published