Инструкция
This commit is contained in:
271
README.md
Normal file
271
README.md
Normal file
@@ -0,0 +1,271 @@
|
|||||||
|
# 🚀 Python Project Template
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
Универсальный шаблон для создания Python-проектов с уже настроенной инфраструктурой разработки, тестирования и контейнеризации.
|
||||||
|
|
||||||
|
Этот репозиторий позволяет начать новый проект **за несколько минут**, не тратя время на настройку инструментов и окружения.
|
||||||
|
|
||||||
|
Шаблон задаёт единый стандарт для Python-проектов:
|
||||||
|
|
||||||
|
- одинаковая структура проекта
|
||||||
|
- единые инструменты разработки
|
||||||
|
- воспроизводимое окружение
|
||||||
|
- готовая инфраструктура для запуска и деплоя
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 📚 Содержание
|
||||||
|
|
||||||
|
- [Быстрый старт](#-быстрый-старт)
|
||||||
|
- [Что входит в шаблон](#-что-входит-в-шаблон)
|
||||||
|
- [Структура проекта](#-структура-проекта)
|
||||||
|
- [Docker](#-docker)
|
||||||
|
- [Контроль качества кода](#-контроль-качества-кода)
|
||||||
|
- [Тестирование](#-тестирование)
|
||||||
|
- [Миграции базы данных](#-миграции-базы-данных)
|
||||||
|
- [Локализация](#-локализация)
|
||||||
|
- [Changelog](#-changelog)
|
||||||
|
- [Workflow разработки](#-workflow-разработки)
|
||||||
|
- [Release процесс](#-release-процесс)
|
||||||
|
- [Для каких проектов подходит](#-для-каких-проектов-подходит)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# ⚡ Быстрый старт
|
||||||
|
|
||||||
|
Клонируйте репозиторий:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone <repository>
|
||||||
|
cd project
|
||||||
|
````
|
||||||
|
|
||||||
|
Установите зависимости:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
uv sync
|
||||||
|
```
|
||||||
|
|
||||||
|
Запустите приложение:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python main.py
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🐳 Docker
|
||||||
|
|
||||||
|
Собрать и запустить контейнер:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose up --build
|
||||||
|
```
|
||||||
|
|
||||||
|
Docker-конфигурация включает:
|
||||||
|
|
||||||
|
* production-ready `Dockerfile`
|
||||||
|
* multi-stage сборку
|
||||||
|
* оптимизацию размера образа
|
||||||
|
* запуск контейнера без root
|
||||||
|
* healthcheck контейнера
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# ✨ Что входит в шаблон
|
||||||
|
|
||||||
|
В репозитории уже настроены основные инструменты разработки.
|
||||||
|
|
||||||
|
## Контейнеризация
|
||||||
|
|
||||||
|
* Docker
|
||||||
|
* Docker Compose
|
||||||
|
* оптимизированная сборка контейнера
|
||||||
|
|
||||||
|
## Проверка кода
|
||||||
|
|
||||||
|
* Ruff — линтер и автоформатирование
|
||||||
|
* mypy — статическая типизация
|
||||||
|
* bandit — анализ безопасности
|
||||||
|
* detect-secrets — обнаружение секретов
|
||||||
|
|
||||||
|
## Автоматические проверки
|
||||||
|
|
||||||
|
* pre-commit
|
||||||
|
* проверки YAML и JSON
|
||||||
|
* контроль merge конфликтов
|
||||||
|
* обнаружение больших файлов
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🧹 Контроль качества кода
|
||||||
|
|
||||||
|
Перед каждым коммитом автоматически запускаются проверки:
|
||||||
|
|
||||||
|
* линтинг
|
||||||
|
* проверка типов
|
||||||
|
* анализ безопасности
|
||||||
|
* поиск секретов
|
||||||
|
* базовые проверки репозитория
|
||||||
|
|
||||||
|
Установка pre-commit:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pre-commit install
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🧪 Тестирование
|
||||||
|
|
||||||
|
В проекте используется **pytest**.
|
||||||
|
|
||||||
|
Особенности:
|
||||||
|
|
||||||
|
* строгая конфигурация
|
||||||
|
* поддержка asyncio
|
||||||
|
* контроль предупреждений
|
||||||
|
* удобный вывод ошибок
|
||||||
|
|
||||||
|
Тесты располагаются в каталоге:
|
||||||
|
|
||||||
|
```
|
||||||
|
tests/
|
||||||
|
```
|
||||||
|
|
||||||
|
Запуск тестов:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pytest
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🗄 Миграции базы данных
|
||||||
|
|
||||||
|
В проекте настроен **Alembic**.
|
||||||
|
|
||||||
|
Он используется для:
|
||||||
|
|
||||||
|
* управления миграциями базы данных
|
||||||
|
* отслеживания изменений схемы
|
||||||
|
* безопасного обновления структуры БД
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🌍 Локализация
|
||||||
|
|
||||||
|
Настроен **Babel** для поддержки переводов и интернационализации.
|
||||||
|
|
||||||
|
Это позволяет легко реализовать многоязычные приложения.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 📜 Changelog
|
||||||
|
|
||||||
|
Используется **git-cliff** для автоматической генерации `CHANGELOG`.
|
||||||
|
|
||||||
|
Changelog формируется на основе conventional commits.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 📁 Структура проекта
|
||||||
|
|
||||||
|
Рекомендуемая структура:
|
||||||
|
|
||||||
|
```
|
||||||
|
project/
|
||||||
|
│
|
||||||
|
├ src/
|
||||||
|
│ └ app/
|
||||||
|
│ └ main.py
|
||||||
|
│
|
||||||
|
├ tests/
|
||||||
|
│
|
||||||
|
├ migrations/
|
||||||
|
│
|
||||||
|
├ Dockerfile
|
||||||
|
├ docker-compose.yml
|
||||||
|
│
|
||||||
|
├ pyproject.toml
|
||||||
|
├ pytest.ini
|
||||||
|
│
|
||||||
|
└ README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🔧 Workflow разработки
|
||||||
|
|
||||||
|
Типичный рабочий процесс:
|
||||||
|
|
||||||
|
1. создать новую ветку
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git checkout -b feature/my-feature
|
||||||
|
```
|
||||||
|
|
||||||
|
2. внести изменения
|
||||||
|
|
||||||
|
3. выполнить проверки
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pre-commit run --all-files
|
||||||
|
pytest
|
||||||
|
```
|
||||||
|
|
||||||
|
4. сделать коммит
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git commit -m "feat: add new feature"
|
||||||
|
```
|
||||||
|
|
||||||
|
5. отправить изменения
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🚀 Release процесс
|
||||||
|
|
||||||
|
Релизы создаются с использованием **conventional commits**.
|
||||||
|
|
||||||
|
История изменений генерируется автоматически:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git cliff
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🧩 Для каких проектов подходит
|
||||||
|
|
||||||
|
Этот шаблон можно использовать для:
|
||||||
|
|
||||||
|
* backend сервисов
|
||||||
|
* API
|
||||||
|
* Telegram-ботов
|
||||||
|
* CLI инструментов
|
||||||
|
* микросервисов
|
||||||
|
* автоматизационных сервисов
|
||||||
|
|
||||||
|
Он не привязан к конкретному фреймворку и может использоваться как универсальная база для Python-разработки.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🎯 Цель шаблона
|
||||||
|
|
||||||
|
Этот репозиторий помогает:
|
||||||
|
|
||||||
|
* ускорить запуск новых проектов
|
||||||
|
* стандартизировать структуру кода
|
||||||
|
* упростить разработку и деплой
|
||||||
|
* внедрить единые инженерные практики
|
||||||
|
|
||||||
|
Это **фундамент для Python-проектов**, который избавляет от повторяющейся настройки инфраструктуры.
|
||||||
Reference in New Issue
Block a user