This project aims to show capabilities of those marvellous people, known by their alies Halk, Flash, Superman and Catwoman
Productivity Pulse - проект, создающийся с целью повысить эффективность обучения людей. Он основывается на методе помодоро: позволяет запускать таймер на 25 минут, а после его окончания предупредит о необходимости перерыва. Однако это не все возможности проекта.
Продвинутые возможности таймера:
- Создание личного кабинета для сохранения прогресса
- Создание категорий, чтобы отслеживать время, проведенное за определенной задачей
- Достижения, мотивирующие пользователя продолжать работу
- Удобный формат вывода статистики за разные периоды
Также премиум пользователи будут иметь возможность запускать фоновую музыку
Productivity Pulse будет написан на Python3 с использованием фреймворка Django. Используемая база данных - SQLite.
Clock API — это API для управления часами, поддерживающий регистрацию пользователей и защищённые эндпоинты.
-
Клонируйте репозиторий и перейдите в папку проекта:
git clone <URL> cd <project_folder>
-
Создайте виртуальное окружение и активируйте его:
python -m venv venv source venv/bin/activate # На Windows используйте `venv\Scripts\activate`
-
Установите необходимые зависимости: Выполните следующую команду, чтобы установить основные зависимости, которые нужны для проекта.
pip install -r requirements.txt
-
Выполните миграции базы данных:
python manage.py makemigrations python manage.py migrate --run-syncdb
-
Запустите сервер:
python manage.py runserver
После запуска сервера документация API доступна по следующим URL-адресам:
- Swagger UI: http://localhost:8000/swagger/
- ReDoc: http://localhost:8000/redoc/
Swagger-документация предоставляет описание всех доступных эндпоинтов, включая методы, параметры и примеры ответов для каждого.
- Swagger UI — это интерфейс, где можно не только просматривать документацию, но и тестировать запросы к API, что упрощает разработку и отладку.
- ReDoc — это альтернативный формат документации, организованный в виде компактного дерева, удобного для навигации по большим API.
Чтобы экспортировать Swagger-схему в файл, используйте следующую команду:
python manage.py generateschema --format openapi > schema.yamlЭтот файл можно использовать для интеграции с другими инструментами API-документации или тестирования.
Для доступа к некоторым эндпоинтам необходима авторизация с использованием JWT-токенов. Чтобы получить доступ к защищённым ресурсам:
- Авторизация через Swagger UI:
- Перейдите в Swagger UI.
- Нажмите на кнопку Authorize.
- Введите ваше имя пользователя и пароль.
- Нажмите Authorize.
Теперь защищённые эндпоинты будут доступны для тестирования в Swagger UI.
Регистрация нового пользователя:
curl -X POST http://localhost:8000/clock/register/ -H "Content-Type: application/json" -d "{\"username\": \"testuser\", \"email\": \"testuser@example.com\", \"password\": \"testpassword\", \"date_of_birth\": \"1990-01-01\", \"country\": \"US\"}"- Django: Веб-фреймворк для построения API.
- Django REST Framework: Библиотека для создания RESTful API.
- drf-yasg: Библиотека для автоматической генерации Swagger-документации.
- djangorestframework-simplejwt: Пакет для авторизации с использованием JWT-токенов.
Данный backend предоставляет API для управления пользователями, ролями и функциональностью на основе ролей. Реализован функционал CRUD для сущностей, сложные выборки, а также управление доступом к различным операциям с использованием кастомных разрешений.
-
Регистрация пользователя:
POST /clock/register/
Создание нового пользователя. -
Логин:
POST /clock/token/
Получение токенов доступа и обновления. -
Обновление токенов:
POST /clock/token/refresh/
Обновление истекшего токена. -
Просмотр публичных профилей пользователей (поиск, фильтрация):
GET /api/users/
Фильтрация по имени, email, стране, признаку премиум.
-
Просмотр своих сообщений:
GET /chat/messages/<int:user_id>/
История переписки с конкретным пользователем. -
Отправка сообщений:
POST /chat/send/
Отправка личного сообщения другому пользователю. -
Обновление аватара:
POST /update-avatar/
Обновление фото профиля. -
Обновление email:
POST /update-email/
Смена email с подтверждением нового адреса.
-
Управление пользователями:
GET /api/users/<int:pk>/
Получение, обновление и удаление пользователей (черезGET,PUT,DELETE). -
Доступ к сложным фильтрациям пользователей:
GET /api/users/?is_premium=True
Фильтрация премиум-пользователей.
В этой части документа представлены шаги по развертыванию и запуску приложения Study Clock с использованием Docker и Docker Compose.
Перед началом убедитесь, что у вас установлены следующие инструменты:
- Docker - Скачать и установить Docker
- Docker Compose - Установить Docker Compose
Проект содержит следующие ключевые файлы:
Dockerfile.db- Конфигурация для контейнера PostgreSQL.Dockerfile.backend- Конфигурация для контейнера Python (Django backend).docker_compose.yml- Управление всеми сервисами через Docker Compose.requirements.txt- Список Python-зависимостей для backend-части.- Исходный код приложения - файлы Django.
Склонируйте проект на локальную машину:
git clone <repository-url>
cd <repository-folder>Выполните следующую команду, чтобы собрать и запустить все сервисы:
docker-compose up --buildЭта команда выполнит:
- Сборку сервиса
db(PostgreSQL) с использованиемDockerfile.db. - Сборку сервиса
backend(Django backend) с использованиемDockerfile.backend. - Загрузку и запуск образа Redis.
- Backend: Django-приложение будет доступно по адресу http://localhost:8000.
- База данных: PostgreSQL будет доступен на порту
5432. Для подключения используйте, например,pgAdminили CLIpsqlс такими настройками:- Хост:
localhost - Порт:
5432 - База данных:
db - Пользователь:
postgres - Пароль:
HomeWork
- Хост:
- Redis: Сервис Redis работает на порту
6379.
Для остановки всех запущенных сервисов нажмите Ctrl+C в терминале, где выполняется docker-compose up. Затем выполните команду:
docker-compose downЭта команда остановит все контейнеры и удалит созданные сети.
Данные PostgreSQL сохраняются в томе postgres_data. Это позволяет не терять данные при перезапуске контейнеров.
Если нужно очистить базу данных, выполните:
docker-compose down -vЧтобы посмотреть логи конкретного сервиса, выполните:
docker logs <имя_контейнера>Например:
docker logs study_clock_backendДля просмотра логов всех сервисов в реальном времени выполните:
docker-compose logs -fДля настройки приложения используются следующие переменные окружения:
POSTGRES_DB: Имя базы данных (db)POSTGRES_USER: Имя пользователя базы данных (postgres)POSTGRES_PASSWORD: Пароль пользователя базы данных (HomeWork)
DATABASE_HOST: Хост базы данных (db)DATABASE_PORT: Порт базы данных (5432)DATABASE_NAME: Имя базы данных (db)DATABASE_USER: Имя пользователя базы данных (postgres)DATABASE_PASSWORD: Пароль пользователя базы данных (HomeWork)REDIS_HOST: Хост сервиса Redis (redis)REDIS_PORT: Порт сервиса Redis (6379)
- Если какой-либо из портов (
5432,6379,8000) занят, измените настройки в секцииportsв файлеdocker_compose.yml, указав свободный порт.
- Убедитесь, что сервисы
dbиredisзапущены перед запускомbackend. Docker Compose автоматически учитывает зависимости через директивуdepends_on, но если проблема сохраняется, перезапустите сервисы:docker-compose restart db redis backend
- Если вы изменили
Dockerfileили добавили зависимости, пересоберите сервисы:docker-compose build
Теперь вы готовы развернуть и запустить приложение Study Clock.
Если у вас есть вопросы, вы можете связаться с нами по электронной почте: bus9ko@gmail.com.

