Skip to content

hackathon-ambassadors-yandex-pr/ambassadors_backend

Repository files navigation

CRM Yandex Ambassadors API

Python Django Django REST Framework PostgreSQL Docker Nginx drf-spectacular simple-jwt

Оглавление

Описание

API CRM системы работы с амбассадорами для Команды реферального маркетинга Яндекс

Проект временно доступен по ссылкам:

Технологии

развернуть

Python 3.11

Django 4.2

Django REST Framework 3.14.0

DRF-Spectacular 0.27.1

Simple JWT 5.3.1

PostgreSQL 16

⬆️В начало

Запуск

локально
  1. Установить сервер баз данных PostgreSQL версии 16 и выше (документация)

  2. Создать базу данных PostgreSQL

  3. Создать и активировать виртуальное окружение:

    py -3.11 -m venv venv (Windows)
    python3 -m venv venv (Linux, MacOS)
    
    source venv/Scripts/activate (Windows)
    source venv/bin/activate (Linux, MacOS)
  4. Обновить pip:

    python -m pip install --upgrade pip
  5. Установить зависимости:

    pip install -r requirements.txt
  6. Скопировать файл .env.example_local и переименовать в .env. Установить значения параметров в файле .env.

  7. Выполнить миграции:

    python manage.py makemigrations
    
    python manage.py migrate
  8. Создать суперпользователя:

    python manage.py createsuperuser
  9. Импортировать в БД необходимые для работы данные:

    python manage.py loaddata ../db_data/data.json
  10. При необходимости импортировать в БД тестовые данные:

    python manage.py loaddata ../db_data/test_data.json

    а также создать папку backend/media/ и скопировать в неё содержимое папки db_data/test_media/

  11. Запустить проект:

    python manage.py runserver 8008

После запуска проект доступен по адресам:

  • сайт администратора

    http://127.0.0.1:8008/admin/
  • статическая документация API

    http://127.0.0.1:8008/api/redoc/v1/
    
    http://127.0.0.1:8008/api/swagger/v1/
  • динамическая документация API (генерируется библиотекой drf-spectacular, доступна при DEBUG=True):

    http://127.0.0.1:8008/api/dynamic_doc/v1/download/
    
    http://127.0.0.1:8008/api/redoc/v1/dynamic/
    
    http://127.0.0.1:8008/api/swagger/v1/dynamic/
  • CRM Yandex Ambassadors API

    http://127.0.0.1:8008/api/v1/...

⬆️В начало

локально в контейнерах
  1. Установить Docker Engine и плагин Compose.

  2. Скачать архив репозитория по ссылке и извлечь содержимое архива

  3. Перейти в папку compose_files/

    cd <path_to_folder>/infra/compose_files
  4. Выполнить:

    docker compose -f docker-compose.build.dev.yml up -d
  5. В БД будут загружены необходимые для работы проекта данные, а также данные суперпользователя:

    email - su@su.su
    пароль - SuperUser
    
  6. После запуска проект доступен по адресам:

  • сайт администратора

    http://localhost/admin
  • Интерактивная документация API

    http://localhost/api/redoc/v1/
    
    http://localhost/api/swagger/v1/

⬆️В начало

на удалённом сервере
  1. Скопировать на сервер следующие файлы:

    scp -r <path_to_folder>/compose_files <username>@<server_pub_ip>:/<path_to_folder>/ambassadors
    scp <path_to_file>/nginx.conf <username>@<server_pub_ip>:/<path_to_folder>/ambassadors
    scp <path_to_file>/.env.example_remote_prod <username>@<server_pub_ip>:/<path_to_folder>/ambassadors
  2. Подключиться к серверу

    ssh <username>@<server_ip>
  3. Переименовать файл .env.example_remote_prod в .env

    mv <path_to_file>/.env.example_remote_prod <path_to_file>/.env
  4. Открыть файл .env и задать значения параметров

    nano <path_to_file>/.env
  5. Установить Docker Engine и плагин Compose. Выполнить действия после установки Linux для Docker Engine.

  6. Перейти в папку ambassadors/compose_files/

    cd <path_to_folder>/ambassadors/compose_files
  7. Выполнить

    • для запуска сервера с тестовыми данными в БД:

      docker compose -f docker-compose.dev.yml up -d
    • для запуска сервера без тестовых данных в БД:

      docker compose -f docker-compose.prod.yml up -d

После запуска проект доступен по адресам:

  • сайт администратора (данные суперпользователя согласно соответствующим значениям в файле .env)

    http://<server_ip>/admin
  • Интерактивная документация API:

    http://<server_ip>/api/redoc/v1/
    
    http://<server_ip>/api/swagger/v1/
  • CRM Yandex Ambassadors API

    http://<server_ip>/api/v1/...

⬆️В начало

CI/CD

описание и настройка
  • при пуше в любую Git ветку запускаются тесты
  • при мёрдже PR в ветки develop или release/ проект запускается на удалённом сервере с импортированными в БД необходимыми для работы данными и тестовыми данными
  • при мёрдже PR в ветку main проект запускается на удалённом сервере с импортированными в БД необходимыми для работы данными

Для корректной работы CI/CD необходимо создать секретные переменные репозитория (Repository secrets):

DOCKER_USERNAME=<docker_username>
DOCKER_PASSWORD=<docker_password>

SERVER_HOST=<server_pub_ip>
SERVER_USER=<username>

SSH_KEY=<--BEGIN OPENSSH PRIVATE KEY--...--END OPENSSH PRIVATE KEY--> # cat ~/.ssh/id_rsa
SSH_PASSPHRASE=<ssh key passphrase>

⬆️В начало

Команда проекта

Product manager – Багинский Константин (ТГ @kvbaginskii)

Project manager – Тарабуткина Юлиана (ТГ @Juliana_jull)

системные аналитики

Сканави Павел (ТГ @Reds_on_tour) - Lead

Краснов Дмитрий (ТГ @DmAKrasnov)

Павлюченко Елена (ТГ @elprianik)

бизнес-аналитики

Павлова Мария (ТГ @MariaPavlova111) - Lead

Бублик Михаил (ТГ @Boymit)

дизайнеры

Фортунатова Екатерина (ТГ @by42naa) - Lead

Торженова Юлия (ТГ @Yuliya_Torzhenova]

Агафонова Светлана (ТГ @agafonova_ss)

backend

Лашков Павел (ТГ @hutjinator, GitHub hutji) - Lead

Жуков Борис (ТГ @sabjbrus, GitHub SabjBrus)

Лысогор Олег (ТГ @tg_user_Oleg, GitHub NotMainCode)

Ефимова Екатерина (ТГ @KatKlejton, GitHub MrKlejton)

frontend

Журавлев Андрей (ТГ @Andre2296, GitHub AndreiZhura) - Lead

Типсин Дмитрий (ТГ @Chia_Rio_Ru, GitHub TIPDMR)

Манаев Денис (ТГ @manaewd, GitHub Manaewd)

⬆️В начало

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •