[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336)](https://pycqa.github.io/isort/) [![linting: pylint](https://img.shields.io/badge/linting-pylint-yellowgreen)](https://github.com/pylint-dev/pylint) __________________________________________________________________________________________________________ # test_for_know_empt_repo, v 0.0.1 __test__ | | Исполнитель | Заказчик | |-----------|:----------------------------------------:|:----------------------------------------------:| | Сотрудник | raykov-mse | test1 | | Отдел | aurora | aurora | | Контакты | raykovmse@rshb.ru | test1@g.co | ----- # Шаблон FastAPI ## Описание Данное шаблон предоставляет проект, в котором приложение состоит из API и UI. При использовании данного типа проекта, Вы можете разрабатывать, как отдельные API сервисы, так и WEB приложения с интерфейсом. Для построения WEB интерфейса используется React. Далее описаны основные иснтрументы предустановленные данным шаблоном: ### Подготовка к разработке Для удобной настройки проекта под разработку. Перейдите в каталог setup и выполните слудеющие команды: ```bash cd setup chmod +x setup.sh ./setup.sh ``` По итогу успешного выполнения Вы получите сообщение следующего ```bash complete setup web application To start api, cd to api directory, and use venv, start run_server.py To start api, cd to web directory, and use command npm run start! Happy Hacking! :) ``` Далее просто запускайте проекты и приступайте к разработке ### Backend Исходный код API находится в каталоге api. После клонирования репозитория требуется создать виртуальное окружение и установить зависимости, это достигается следующими командами: ```bash cd api python -m venv ./.venv cp ./../setup/pip.conf ./.venv/pip.conf source ./.venv/bin/python pip install -r requirements.txt ``` Запуск приложения осуществляется через файл: run_server.py В качестве фреймворка ля api используется FastAPI. (Как понятно из названия шаблона) Подробнее ознакомится с возможностями Fast API вы можете в официальной документации: [Fast API документация](https://fastapi.tiangolo.com/) Вы можете дополнительно устанавливать библиотеки необходимые для разработки. Настоятельно не рекомендуется изменять базовые предустановки из файла requirements.txt Базовый шаблон предоставляет минимальный функционал по работе с данными. Далее описаны основные моменты влияющие на работу приложения. #### Основная структура проекта ```bash api ├── requirements.txt ├── run_server.py ├── src │ ├── app.py │ ├── __init__.py │ ├── settings │ │ ├── __init__.py │ │ ├── models.py │ │ └── settings.py └── web ``` Вы можете придерживатся любой структуры проекта, главное, чтобы у Вас присутствовал файл run_server.py. Который запускает web сервер uvicorn или gunicorn. Также обязательно Ваш сервер должен подниматся на определенном хосте и порте. Требуемый хост и порт передаются внутрь через переменные окружения SERVER_HOST, SERVER_PORT ```python uvicorn.run( app, host=settings.server.HOST, port=settings.server.PORT, lifespan="on" ) ``` #### Отказ от ui (react) Если внутри вашего приложения не требуется добавлять визуальный интерфейс, а Вам требуется исключительно разработать API, то в таком случае не стоит удалять директорию web находящуюся на уровне с директорией api. ТРебуется внести небольшие правки в конфигурацию приложения, в частности в файл: /api/src/app.py, удалив следующее содержимое. В таком случае Fast API сервис не будет обрабатывать статические файлы, от web приложения. ```python #Подключение собранного web приложения app.mount("/", StaticFiles(directory="web", html=True), name="web") ``` ### Frontend Исходный код UI находится в каталоге web. После клонирования репозитория требуется установить зависимости, это достигается следующими командами: ```bash cd web npm install ``` Запуск приложения осуществляется через файл команду: ```bash npm run start ``` В качестве фреймворка для ui используется React. Подробнее ознакомится с возможностями React вы можете в официальной документации: [React документация](https://react.dev/reference/react) Вы можете дополнительно устанавливать библиотеки необходимые для разработки. Настоятельно не рекомендуется изменять базовые предустановки из файла package.json Базовый шаблон предоставляет минимальный интерфейс по работе с данными. Далее описаны основные моменты влияющие на работу web приложения. #### Основная структура проекта ```bash web ├── biome.json ├── .npmrc ├── dist ├── package.json ├── postcss.config.cjs ├── public │ └── index.html ├── README.md ├── rsbuild.config.ts ├── src │ ├── App.tsx │ ├── config.ts │ ├── env.d.ts │ ├── index.css │ └── index.tsx ├── tailwind.config.js └── tsconfig.json ``` Вы можете придерживатся любой структуры проекта, внутри src. Но на верхнем уровне находятся файлы конфигурации и сборки их требуется изменять только в крайнем случае. Для сборки приложения используется [RSBuild](https://rsbuild.dev/) Для создания UI настоятельно рекомендуется использовать предустановленную библиотеку компонентови стилей: - tailwindcss - daisy-ui - react-daisy-ui - raisa-ui !!! Важно, если внутри web приложения Вы хотите обращатся к API данного проекта, используйте следующую конструкцию: ```javascript fetch(`${Config.API_URL}/api`, { headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, method: 'GET' }) ``` Речь идет об вызываемом эндпоинте ${Config.API_URL}/api, Обязательно используйте конструкцию данного вида т.к. при сборке приложения статический сайт обращается относительно api и вместо запросов вида http://localhost:8000/api должно быть так: /api