Учебно-боевой проект по разработке сайта мастерской на Django + PostgreSQL + Django Templates + CSS + JS.
Проект ведётся в командном формате через GitHub Organization.
Наша цель — пройти реальный процесс командной разработки:
- задачи (Issues)
- ветки (Git)
- Pull Request
- Code Review
- CI и качество кода
- Python
- Django
- Django Templates (HTML)
- CSS
- JavaScript
- PostgreSQL
- Git + GitHub
- Ruff
- Pytest + Pytest-Django
- Pre-commit
- GitHub Actions CI
- uv
У нас есть 3 типа веток:
main— стабильная ветка проектаdev— общая ветка разработкиfeature/...,bug/...,chore/...— ваши рабочие ветки
- Берёте задачу из GitHub Project / Issues
- Обновляете локальную ветку
dev - Создаёте новую ветку от
dev - Делаете задачу
- Перед пушем запускаете локальные проверки
- Пушите ветку
- Создаёте Pull Request в
dev - После ревью и CI изменения попадают в
dev - Стабильные изменения из
devпериодически мержатся вmain
Нельзя пушить напрямую в main и dev.
Эти ветки защищены. Работаем только через отдельные ветки и Pull Request.
git clone <URL_репозитория>
cd workshop-websiteЕсли uv ещё не установлен — вот инструкция https://docs.astral.sh/uv/getting-started/installation/.
uv sync --all-groupsЭта команда:
- создаёт локальное окружение проекта;
- устанавливает основные зависимости;
- устанавливает dev-зависимости.
uv run pre-commit installПосле этого перед каждым коммитом Git будет автоматически запускать быстрые проверки.
uv run ruff check .
uv run ruff format .
uv run pytest
uv run python scripts/check.py
git checkout dev
git pull origin dev
git checkout -b feature/nazvanie-zadachi
Префиксы веток:
feature/— новая функциональностьbug/— исправление ошибкиchore/— технические задачи, настройка, инфраструктура
- Добавьте изменения
git add . - Сделайте commit
git commit -m "Add product card template"
Перед коммитом автоматически запустится pre-commit.
Если pre-commit исправит файлы, вам нужно сделать ещё раз:
git add .
git commit -m "..."
git push -u origin <имя_вашей_ветки>
Пример:
git push -u origin feature/product-card
После первого push можно будет использовать просто:
git push
- PR решает одну задачу
- Небольшой и понятный
- Есть хорошее описание
- Проходит scripts/check.py и CI
- Base branch:
dev
Проверь ветку и попробуй:
uv sync --all-groups
uv run pre-commit install
uv run python scripts/check.py
При возникновении ошибки — сохрани текст и обратись к тимлиду или преподавателю.
Разработчик
- берёт задачу
- делает ветку от dev
- делает работу
- создаёт PR
Reviewer
- проверяет код
- даёт правки
- аппрувит
QA
- проверяет поведение
- заводит баги при необходимости
- пушить напрямую в main
- пушить напрямую в dev
- работать без отдельной ветки
- создавать PR без локальной проверки
- игнорировать упавший CI
- менять чужую ветку без согласования
- смешивать несколько несвязанных задач в одном PR
git checkout dev
git pull origin dev
git checkout -b feature/my-taskuv sync --all-groups
uv run pre-commit installuv run python scripts/check.pygit add .
git commit -m "Your commit message"
git push -u origin feature/my-task- создаёте PR в
dev - ждёте
CI - проходите ревью
Наша задача — не просто “сделать сайт”, а научиться работать как команда разработки:
- аккуратно;
- предсказуемо;
- через задачи;
- через ветки;
- через review;
- через проверки качества.
Если процесс соблюдается, проект движется быстрее и стабильнее