- Реализовать необходимые модели привычек.
- Реализовать точки входа для работы с фронтендом.
- Создайте приложение для работы с Telegram и рассылками напоминаний.
Привычка описывается как конкретное действие, которое можно уложить в одно предложение:
"я буду [ДЕЙСТВИЕ] в [ВРЕМЯ] в [МЕСТО]"
За каждую полезную привычку необходимо себя вознаграждать или сразу после делать приятную привычку.
Но при этом привычка не должна расходовать на выполнение больше 2 минут.
Исходя из этого получаем модель — Привычка.
- Пользователь — создатель привычки.
- Место — место, в котором необходимо выполнять привычку.
- Время — время, когда необходимо выполнять привычку.
- Действие — действие, которое представляет из себя привычка.
- Признак приятной привычки — привычка, которую можно привязать к выполнению полезной привычки.
- Связанная привычка — привычка, которая связана с другой привычкой, важно указывать для полезных привычек, но не для приятных.
- Периодичность (по умолчанию ежедневная) — периодичность выполнения привычки для напоминания в днях.
- Вознаграждение — чем пользователь должен себя вознаградить после выполнения.
- Время на выполнение — время, которое предположительно потратит пользователь на выполнение привычки.
- Признак публичности — привычки можно публиковать в общий доступ, чтобы другие пользователи могли брать в пример чужие привычки.
- Исключить одновременный выбор связанной привычки и указания вознаграждения.
- Время выполнения должно быть не больше 120 секунд.
- В связанные привычки могут попадать только привычки с признаком приятной привычки.
- У приятной привычки не может быть вознаграждения или связанной привычки.
- Нельзя выполнять привычку реже, чем 1 раз в 7 дней.
Для вывода списка привычек реализовать пагинацию с выводом по 5 привычек на страницу.
- Каждый пользователь имеет доступ только к своим привычкам по механизму CRUD.
- Пользователь может видеть список публичных привычек без возможности их как-то редактировать или удалять.
- Регистрация
- Авторизация
- Список привычек текущего пользователя с пагинацией
- Список публичных привычек
- Создание привычки
- Редактирование привычки
- Удаление привычки
Для полноценной работы сервиса необходим реализовать работу с отложенными задачами для напоминания о том, в какое время какие привычки необходимо выполнять.
Для этого потребуется интегрировать сервис с мессенджером Telegram, который будет заниматься рассылкой уведомлений.
Для проекта необходимо настроить CORS, чтобы фронтенд мог подключаться к проекту на развернутом сервере.
Для реализации экранов силами фронтенд-разработчиков необходимо настроить вывод документации. При необходимости эндпоинты, на которые документация не будет сгенерирована автоматически, описать вручную.
- Настроили CORS.
- Настроили интеграцию с Telegram.
- Реализовали пагинацию.
- Использовали переменные окружения.
- Все необходимые модели описаны или переопределены.
- Все необходимые точки входа реализовали.
- Настроили все необходимые валидаторы.
- Описанные права доступа заложены.
- Настроили отложенную задачу через Celery.
- Проект покрыли тестами как минимум на 80%.
- Код оформили в соответствии с лучшими практиками.
- Имеется список зависимостей.
- Результат проверки Flake8 равен 100%, при исключении миграций.
- Решение выложили на GitHub.