API CRM системы работы с амбассадорами для Команды реферального маркетинга Яндекс
Проект временно доступен по ссылкам:
- Интерактивная документация API: redoc и swagger
- Сайт администратора
развернуть
локально
-
Установить сервер баз данных PostgreSQL версии 16 и выше (документация)
-
Создать базу данных PostgreSQL
-
Создать и активировать виртуальное окружение:
py -3.11 -m venv venv (Windows) python3 -m venv venv (Linux, MacOS) source venv/Scripts/activate (Windows) source venv/bin/activate (Linux, MacOS)
-
Обновить pip:
python -m pip install --upgrade pip
-
Установить зависимости:
pip install -r requirements.txt
-
Скопировать файл
.env.example_local
и переименовать в.env
. Установить значения параметров в файле.env
. -
Выполнить миграции:
python manage.py makemigrations python manage.py migrate
-
Создать суперпользователя:
python manage.py createsuperuser
-
Импортировать в БД необходимые для работы данные:
python manage.py loaddata ../db_data/data.json
-
При необходимости импортировать в БД тестовые данные:
python manage.py loaddata ../db_data/test_data.json
а также создать папку
backend/media/
и скопировать в неё содержимое папкиdb_data/test_media/
-
Запустить проект:
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/...
локально в контейнерах
-
Установить Docker Engine и плагин Compose.
-
Скачать архив репозитория по ссылке и извлечь содержимое архива
-
Перейти в папку
compose_files/
cd <path_to_folder>/infra/compose_files
-
Выполнить:
docker compose -f docker-compose.build.dev.yml up -d
-
В БД будут загружены необходимые для работы проекта данные, а также данные суперпользователя:
email - su@su.su пароль - SuperUser
-
После запуска проект доступен по адресам:
-
сайт администратора
http://localhost/admin
-
Интерактивная документация API
http://localhost/api/redoc/v1/ http://localhost/api/swagger/v1/
на удалённом сервере
-
Скопировать на сервер следующие файлы:
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
-
Подключиться к серверу
ssh <username>@<server_ip>
-
Переименовать файл
.env.example_remote_prod
в.env
mv <path_to_file>/.env.example_remote_prod <path_to_file>/.env
-
Открыть файл
.env
и задать значения параметровnano <path_to_file>/.env
-
Установить Docker Engine и плагин Compose. Выполнить действия после установки Linux для Docker Engine.
-
Перейти в папку
ambassadors/compose_files/
cd <path_to_folder>/ambassadors/compose_files
-
Выполнить
-
для запуска сервера с тестовыми данными в БД:
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/...
описание и настройка
- при пуше в любую 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)
дизайнеры
Фортунатова Екатерина (ТГ @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)