Skip to content

Трекер полезных привычек с интеграцией Telegram'а

Notifications You must be signed in to change notification settings

alerono02/habits_tracker

Repository files navigation

Habits Tracker.


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

Запуск Django проекта через Run - "название проекта" или командой python manage.py runserver

Настройка DRF в Docker

Сборка без yaml файла

Сборка докер образа:

docker build -t my-python-app .

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

docker run my-python-app


Сборка с yaml файлом

Cоздание образа из Dockerfile:

docker-compose build

с запуском контейнера:

docker-compose up --build

с запуском конктейнера в фоновом режиме:

docker-compose up -d --build

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

docker-compose up


Описание:

Реализовать бэкенд SPA-приложения. Трекер и работа с полезными привычками.

Задачи проекта:

  • Добавьте необходимые модели привычек.
  • Реализуйте эндпоинты для работы с фронтендом.
  • Создайте приложение для работы с Telegram и рассылками напоминаний.

Технологии:

  • Python
  • Django
  • Django DRF
  • PostgreSQL
  • JWT
  • django_filters
  • Celery
  • Celery-Beat
  • Redis
  • CORS
  • Swagger
  • Unittest

Установка зависимостей:

pip install -r requirements.txt


Реализация:

Сущности(модели):

  • Habit - модель привычки
- Пользователь — создатель привычки.
- Место — место, в котором необходимо выполнять привычку.
- Время — время, когда необходимо выполнять привычку.
- Действие — действие, которое представляет 
из себя привычка.
- Признак приятной привычки — привычка, которую 
можно привязать к выполнению полезной привычки.
- Связанная привычка — привычка, которая связана 
с другой привычкой, важно указывать для полезных привычек, 
но не для приятных.
- Периодичность (по умолчанию ежедневная) — периодичность 
выполнения привычки для напоминания в днях.
- Вознаграждение — чем пользователь должен себя 
вознаградить после выполнения.
- Время на выполнение — время, которое предположительно 
потратит пользователь на выполнение привычки.
- Признак публичности — привычки можно публиковать 
в общий доступ, чтобы другие пользователи могли брать 
в пример чужие привычки.
  • User - модель пользователя

Валидация:

  • Исключить одновременный выбор связанной привычки и указания вознаграждения.
  • Время выполнения должно быть не больше 120 секунд.
  • В связанные привычки могут попадать только привычки с признаком приятной привычки.
  • У приятной привычки не может быть вознаграждения или связанной привычки.
  • Нельзя выполнять привычку реже, чем 1 раз в 7 дней.

Пагинация

Для вывода списка привычек реализовать пагинацию с выводом по 5 привычек на страницу.

Права доступа

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

Эндпоинты

  • Регистрация
  • Авторизация
  • Список привычек текущего пользователя с пагинацией
  • Список публичных привычек
  • Создание привычки
  • Редактирование привычки
  • Удаление привычки

Интеграция

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

Для этого потребуется интегрировать сервис с мессенджером Telegram, который будет заниматься рассылкой уведомлений.

Безопасность

Для проекта необходимо настроить CORS, чтобы фронтенд мог подключаться к проекту на развернутом сервере.

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

Для реализации экранов силами фронтенд-разработчиков необходимо настроить вывод документации. При необходимости эндпоинты, на которые документация не будет сгенерирована автоматически, описать вручную.

About

Трекер полезных привычек с интеграцией Telegram'а

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published