Анталия Дом
- сайт агенства недвижимости. Бэкенд проекта представляет собой RESTful API, позволяющий регистрироваться новым пользователям, получать доступ к объектам недвижимости, добавлять объекты в избранное, оставлять заявку на подбор объекта недвижимости или заявку на понравившейся объект. Заявки отправляются по емейлу пользователю и администраторам. Помимо этого, бэкенд выдает некоторые статические страницы, например, информацию о команде проекта.
Для проекта написан ci/cd пайплайн с автоматической проверкой форматирования кода при открытии пул-реквестов, автоматическим тестированием при мерже в основую ветку разработки и деплоем на тестовый сервер. Дополнительно происходит автоматический деплой документации API при изменениях.
- Документация к проекту
- Как приступить к разработке?
- Несколько требований к проекту
- Использованные технологии
- Тестирование
- Авторы
- Клонировать репозиторий
git clone https://github.com/antaliadom-team/backend.git
- Перейти в папку с проектом
cd backend
- Создать и активировать виртуальное окружение
python -m venv .venv source env/bin/activate
- Установить зависимости
python -m pip install --upgrade pip pip install -r requirements.txt
- В папке backend cоздать файл .env по шаблону:
[email protected] EMAIL_HOST_PASSWORD=<Пароль спрашивайте в дискорде> SECRET_KEY=some-random-secret-django-key ALLOWED_HOSTS="127.0.0.1 localhost backend" DEBUG=True CORS_WHITELIST="http://localhost:3000 http://localhost:8080"
- Применить миграции
python manage.py migrate
- Опционально: В отдельном терминале запустить воркер celery (требуется также Redis)
celery -A antalia_project worker -l info -B
6.1. Для Windows у celery есть специальный костыль.
celery -A your-application worker -l info --pool=solo
- Перейти в ветку разраработки
git checkout dev
- Из ветки
dev
создать и перейти в ветку с названием вашей работыgit checkout -b feature/api
- Запушить изменения с коммитом "добавляет эндпоинт каталога"
- Радоваться что всё прошло успешно 🎉
- Оформляем код по PEP8
- Форматируем код black с настройкой
--line-length=79 --skip-string-normalization
, isort - Кавычки везде, где применимо одинарные
- Все классы и основные функции документируем хотя бы в 1 строку:
"""Модель юзеров"""
- Используем линтер flake8 (перед PR обязательно)
- Для именования запрещены транслит, сокращения, названия переменных, приложений, урлов и т.д. должны быть переведены на английский
- Константы выносим на уровень модуля, пишем заглавными буквами, если уместно, выносим в settings.py
- Код оформлен по принципам программирования DRY:droplet:(не повторяй сам себя) и KISS:kiss:(пиши проще и понятней)
- Проект содержит основую ветку
main
. Она предназначена для релизного состояния приложения - Ветка
dev
предназначена для слияния наших работ - Для того чтобы смержить изменения в ветку
dev
необходимо из этой ветки создать ветку с вашей работой и создать пул реквест - Название вашей рабочей ветки должно отражать вашу работу. Например
feature/api-users
илиfeature/models
- Коммиты пишем на русском языке. Начинается коммит с глагола, отвечающий на вопрос "что будет, если этот коммит слить с остальным кодом?" Например, "фиксит пермишины" или "добавляет тесты эндпоинта юзеров"
- Если пул реквест принят ветка в которой велась разработка удаляется
- Подробнее о git-flow
- Python 3.8
- Django 3.2.16
- Django Rest Framework
- Pytest
- FactoryBoy
- Celery
- Redis
- Docker