Skip to content

annaputilovskaya/NotificationService

Repository files navigation

Сервис уведомлений

Задача:

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

  • Email
  • SMS
  • Telegram

Нужно обеспечить надежную доставку - если один способ не сработал, попробовать другой.


Технический требования:

  • Язык программирования:
    • Python 3.12
  • Фреймворк:
    • Django Rest Framework
  • ORM:
    • Django ORM
  • Хранение данных:
    • PostgreSQL 17
  • Очереди сообщений:
    • Celery + RabbitMQ

Запуск проекта:

  • Клонируйте проект:

    git clone https://github.com/annaputilovskaya/NotificationService.git
  • Создайте файл .env в корне проекта по образцу (Файл .env.example) и заполните его данными.

    Команда для Unix-подобных систем для копирования файла:

    cp .env.example .env
  • Убедитесь, что на Вашем устройстве установлен Docker.

    Проверка версии Docker:

    docker --version

    Если докер не установлен, осуществите его установку по инструкции с официального сайта

  • Осуществите сборку образов и запуск контейнеров:

    docker compose up -d --build

Структура базы данных:

image

Функционал и бизнес-логика

  1. Пользователи:
    • Регистрация с email и паролем
    • Получение токена для авторизация
    • ОБновление токена авторизации
image
  1. Получатели
    • Создание получателя
    • Просмотр получателя
    • Просмотр списка получателей
    • Изменение получтаеля
    • Удаление получателя
image
  1. Уведомления
    • Создание уведомления
    • Просмотр уведомления
    • Просмотр списка уведомлений
image

При создания уведомления создается задача по отправке уведомления. Происходит выбор стратегии отпраки уведомления в следующем порядке:

  • Email
  • Telegram
  • SMS

В случае, если первая стратегия не сработала, переходим ко второй, далее к третьей. Если ни одна страегия отправки для каких-либо получателей не сработала, повторяем попытку отправки для этих получателей через определенный временной интервал.


Сервис подходит для отправки разовых уведомлений. Если нужны повторяющиеся уведомления, возможна доработка.

В проекте настроено логирование отправки уведомлений с отправкой логов в консоль и с сохранением в файл.

Проведено ручное тестирование проекта с помощью Postman.

Автоматизированное тестирование не проводилось.

Для более подробной информации об API ознакомьтесь с интерактивной документацией.

Если проект запущен на localhost, пройдите по ссылке

About

Service on DRF for sending notifications by email, telegram and SMS with delivery guarantee.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published