Skip to content

antaliadom-team/backend

Repository files navigation

ci workflow codecov Django DRF


AntalyaDom


Бэкэнд проекта "Анталия Дом"

Анталия Дом - сайт агенства недвижимости. Бэкенд проекта представляет собой RESTful API, позволяющий регистрироваться новым пользователям, получать доступ к объектам недвижимости, добавлять объекты в избранное, оставлять заявку на подбор объекта недвижимости или заявку на понравившейся объект. Заявки отправляются по емейлу пользователю и администраторам. Помимо этого, бэкенд выдает некоторые статические страницы, например, информацию о команде проекта.

Для проекта написан ci/cd пайплайн с автоматической проверкой форматирования кода при открытии пул-реквестов, автоматическим тестированием при мерже в основую ветку разработки и деплоем на тестовый сервер. Дополнительно происходит автоматический деплой документации API при изменениях.

Содержание

Документация к проекту

⬆️ Наверх

Как приступить к разработке?

  1. Клонировать репозиторий git clone https://github.com/antaliadom-team/backend.git
  2. Перейти в папку с проектом cd backend
  3. Создать и активировать виртуальное окружение
    python -m venv .venv
    source env/bin/activate
    
  4. Установить зависимости
    python -m pip install --upgrade pip
    pip install -r requirements.txt
    
  5. В папке backend cоздать файл .env по шаблону:
    EMAIL_HOST_USER=antalyadom@telfia.com
    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"
    
  6. Применить миграции
    python manage.py migrate
    
  7. Опционально: В отдельном терминале запустить воркер celery (требуется также Redis)
    celery -A antalia_project worker -l info -B
    

6.1. Для Windows у celery есть специальный костыль.

celery -A your-application worker -l info --pool=solo
  1. Перейти в ветку разраработки git checkout dev
  2. Из ветки dev создать и перейти в ветку с названием вашей работы git checkout -b feature/api
  3. Запушить изменения с коммитом "добавляет эндпоинт каталога"
  4. Радоваться что всё прошло успешно 🎉

⬆️ Наверх

Несколько требований к проекту

  • Оформляем код по PEP8
  • Форматируем код black с настройкой --line-length=79 --skip-string-normalization, isort
  • Кавычки везде, где применимо одинарные
  • Все классы и основные функции документируем хотя бы в 1 строку: """Модель юзеров"""
  • Используем линтер flake8 (перед PR обязательно)
  • Для именования запрещены транслит, сокращения, названия переменных, приложений, урлов и т.д. должны быть переведены на английский
  • Константы выносим на уровень модуля, пишем заглавными буквами, если уместно, выносим в settings.py
  • Код оформлен по принципам программирования DRY:droplet:(не повторяй сам себя) и KISS:kiss:(пиши проще и понятней)

⬆️ Наверх

Пару слов о том как работать с git

  • Проект содержит основую ветку 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

Авторы:

⬆️ Наверх