Giter Club home page Giter Club logo

backend's Introduction

MVP CRM-системы для Амбассадоров Яндекс Практикума.

Посмотреть проект можно по ссылке

Оглавление

  1. О проекте
  2. Архив с кодом репозитория и скриншотами
  3. Документация
  4. Стек технологий
  5. Функционал
  6. Установка зависимостей
  7. Запуск
  8. Наполнение БД
  9. Telegram бот
  10. Тесты и покрытие
  11. Авторы проекта

О проекте

MVP CRM-системы для Амбассадоров Яндекс Практикума.

Архив с кодом репозитория и скриншотами

Диск

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

Документация сгенерирована автоматически при помощи drf-spectacular.

Swagger

Стек технологий

Python Django DRF Celery Redis PostgreSQL Gunicorn drf-spectacular django-channels

Swagger Docker DockerCompose Nginx Certbot GitHub GitHub Actions

Функционал

  1. Реализован базовый функционал CRM приложения.
  2. Настроена интеграция с Yandex Forms.
  3. Добавлена возможность наполнения бд через xlsx файл.
  4. Настроен websocket для push уведомлений.
  5. Подключен прототип telegram бота.
  6. Реализована рассылка через email и telegram.
  7. Для рассылки подкючен celery, также есть возможность отложенной отправки.

Помимо всего прочего для удобства ведения дальнейшей разработки мы использовали аннотацию типов и докстринги. Для поддержания работоспособности кода покрыли его тестами, использовав библиотеку pytest. Для удобства развертывания настроили docker compose и прикрутили CI/CD.

Установка зависимостей для полного разворачивания проекта

  1. Склонируйте репозиторий на локальную машину и перейдите в него:
git clone https://github.com/BittWizards/backend.git
cd backend
  1. Создайте .env файл:
touch .env
  1. Заполните по примеру своими значениями: скопируйте этот файл

  2. Установить docker

В терминале linux это можно сделать так:

  sudo apt update
  sudo apt install curl
  curl -fSL https://get.docker.com -o get-docker.sh
  sudo sh ./get-docker.sh
  sudo apt install docker-compose-plugin

Примечание. Для запуска на сервере достаточно настроить файл .env и запустить файл docker-compose.production.yml


Запуск

  1. Запустите контейнеры с проектом следующей командой (используйте флаг -d для запуска в фоновом режиме):
docker compose up

На сервере:

docker compose -f docker-compose.production.yml up

В терминале Linux могут потребоваться права суперпользователя:

sudo docker compose -f docker-compose.production.yml up
  1. Для доступа в админ-зону:

Логин: [email protected]

Пароль: admin

Наполнение БД

Для импорта начальных данных воспользуйтесь командой:

docker compose exec backend python manage.py xml_import

После запуска проект можно будет посмотреть по ссылке.

Посмотреть документацию: Swagger

Telegram bot

Реализован небольшой функционал чат бота. Добавлено веб приложение для бота.

Для прослушивания уведомлений от telegram api используется webhook.

Чтобы установить вебхук для вашего домена воспользуетесь следующей командой:

docker compose exec backend python manage.py telegram_webhook -s

Тесты и покрытие

Покрытие составляет 84 процента.

Процент покрытия

Запустите тесты в терминале из текущей папки:

docker compose exec backend run -m pytest

Авторы проекта

Оглавление

backend's People

Contributors

aleksey2299-1 avatar dartanyun avatar dependabot[bot] avatar klavad avatar pashpiter avatar pre-commit-ci[bot] avatar

Stargazers

 avatar

Forkers

pashpiter

backend's Issues

Merch

Описать модели, написать сериализаторы, views.
Добавить все в админку.
Для функций подключаем типизацию, где нужно используем gettext_lazy.
Можно порционно заливать pr.

Certbot

Настроить получение и обновление сертификатов внутри docker compose.

Content + promocodes

Описать модели, написать сериализаторы, views.
Добавить все в админку.
Для функций подключаем типизацию, где нужно используем gettext_lazy.
Можно порционно заливать pr.

Yandex OAuth

Пока не совсем ясно точно ли это нужно.
Задача: разобраться что должно быть реализовано на бэке для такого способа авторизация. Скооперировать с фронтендом и протестировать это дело.
Задача не сильно сложная, может быть сложно убедить фронт, что им это нужно.
Бэклог

Achievements

Прописать логику получения достижений в зависимости от выполненных условий.

Celery

Нужно настроить отправку отложенных рассылок и настроить celery beat, чтобы удалял отклоненные анкеты спустя N дней (тут я имею в виду, что мы раз в день находим все отклоненные анкеты у которых дата создания меньше текущей на N дней и удаляем их).
Готов выслушать ваши мысли по этому поводу.

Telegram bot

Настроить взаимодействие телеграм ботом.
Добавить возможность рассылки через него уведомлений.
Реализовать какой-нибудь user story для него.

Server

Сервер нам 100% нужен, и 90% что нам его никто не даст.
Задача состоит в поиске и настройке сервера, настроить nginx, подключить certbot.
Задача не сильно сложная, но может кто-то хотел, но никак не получалось этим заняться.
Может много времени занять сама настройка сервера.
Дэдлайн 02.03.

Ambassadors

Описать модели, написать сериализаторы, views.
Добавить все в админку.
Для функций подключаем типизацию, где нужно используем gettext_lazy.
Можно порционно заливать pr.

Yandex Forms

Без комментариев.
Задача: разобраться что это такое, как интегрировать, протестировать и определить какие задачи мы можем этим закрыть.
Задача достаточно плохо представлена мною, скорее всего потребуются еще данные.
Когда бы я хотел иметь представление что нам с этим делать - 28.02
Дэдлайн 03.03.

Pytest

Написать pytest'ы для всего приложения, coverage не ниже 90%.

Websocket

Хотят видеть уведомления в режиме live.
Прикрутить websocket к нашему приложению, настроить сигналы django для отправки данных на фронт при создании новой записи в бд и т.д. (смотря на какие события нам нужны уведомления).
Бэклог

Swagger

Стоит автодокументация, но все все мы понимаем что выглядеть она будет не презентабельно.
Задача состоит в описании примеров, ошибок, всего что превратит эту жабу в принцессу.
Работать предстоит с drf-spectacular.
Это задача получит высокий приоритет под конец. Пока что ее можно просто забронировать и заниматься понемногу.
Дедлайн 09.03 10:00. После этого времени этим уже займется не только лишь 1 человек.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.