Skip to content
/ app-template Public template

Шаблон приложения FastAPI + Vue.ts

License

Notifications You must be signed in to change notification settings

profcomff/app-template

Repository files navigation

Пример приложения

В этом репозитории представлен пример простейшего сервиса с использованием Python FastAPI приложения в качестве бэкэнда приложения, и Vue.js приложения в качестве фронтенда.

Большая часть команд и инструкций написаны для операционных систем Linux и MacOS.

Рекомендуемые пакеты для разработки

  • Git
  • Make
  • Docker
  • Docker Compose
  • Python 3.12
  • Node.js v18
  • VS Code

Инструкции

Получение кода на свой компьютер

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

  1. (Опционально) Если вы хотите далее опубликовать код на GitHub полезно сначала скопировать репозиторий к себе кнопкой Fork на GitHub. Кнопка доступна в правом верхнем углу страницы репозитория.
  2. Создайте папку в удобном вам расположении.
    • Удобно создать папку на рабочем столе с названием вашего приложения.
  3. Откройте приложение "Командная строка" или "Терминал", в зависимости от операционной системы.
  4. Прейдите в папку проекта командой cd /путь/к/папке.
    • Если вы пользователь windows и создали на рабочем столе папку my_app, то команда будет выглядеть так: cd %userprofile%/Desktop/my_app
    • Если вы пользователь linux или MacOS и создали на рабочем столе папку my_app, то команда будет выглядеть сделующим образом: cd ~/Desktop/my_app
  5. Склонируйте код репозитория к себе на ПК командой git clone https://github.com/profcomff/app-template.git . (точка в конце означает скачивание кода в текущую папку). Если вы выполнили пункт 1 используйте в команде ссылку из зеленой кнопки "Code" в правом верхнем углу вашего репозитория.
  6. Откройте код в удобной среде разработки. Рекомендуем использовать VSCode, который можно открыть из терминала командой code .

Сборка и запуск приложения для публикации

Сборка исходного кода в один пакет производится с помощью Docker. В этом случае создается независимый от операционной системы пакет, который можно без проблем разместить на любом сервере.

Выполните команду make для сборки приложения. После окончания выполнения этой команды будет создан новый Docker образ с названием my_app, который можно запустить командой make run

Разработка API на Python

Код приложения находится в папке backend. Подробную инструкцию можно найти в README.md.

Frontend разработка на Vue.js

Код приложения находится в папке frontend. Подробную инструкцию можно найти в README.md.

Написание документации

Код документации находится в папке docs. Подробную инструкцию можно найти в README.md.

Автосборка

Коммит в main запускает автоматическую сборку проекта средствами GitHub Actions. Настройки автосборки находятся в файле .github/workflows/build_and_publish.yml.

Тесты на Pull Request

При создании запроса на слияние, автоматически создаются проверки кода юниттестами и на стили. Следующие тесты будут запущены:

  • Проверки isort на верную сортировку импортов в папке backend
  • Проверки black на верный стиль написания кода в папке backend
  • Юнит тесты pytest из папки tests на код в папке backend
  • Проверки стилей eslint, prettier, stylelint на код в папке frontend

Настройки автотестов находятся в файле.github/workflows/checks.yml.

Публикация готового приложения

На данном этапе вам необходимо разместить приложение на каком-либо хостинге, поддерживающем протокол https.

Для этого подойдет любой VPS сервер, который вы можете найти в интернете. Мы рекомендуем использовать VPS сервера на операционной системе linux, для удобства размещения приложений и компонентов использовать Docker.

Чтобы получить SSL сертификаы для поддержки https можно использовать letsencrypt.com, предоставляющий SSL сертификаты бесплатно. Для удобства работы можно использовать веб сервер с встроенной поддержкой этих сертификатов, например Traefik или Caddy.

Шаблон приложения имеет уже готовые Dockerfile для сборки вашего приложения, файл docker-compose.production.yml с настройками развертывания приложения с Caddy Server и включенным https, а также базой данных PostgreSQL.