Инструкция
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