No description
  • TypeScript 99.3%
  • Dockerfile 0.7%
Find a file
2024-06-27 21:16:37 +03:00
prisma fix createAt date error. 2024-06-19 21:48:08 +03:00
src stats fix. 2024-06-22 02:54:07 +03:00
.env.example update env example. 2024-06-13 21:48:49 +03:00
.eslintrc.js init project. 2024-06-13 15:44:20 +03:00
.gitignore init project. 2024-06-13 15:44:20 +03:00
.prettierrc init db 2024-06-13 16:49:32 +03:00
docker-compose.yaml remove library, add docker. 2024-06-14 15:48:58 +03:00
Dockerfile docker fix. 2024-06-14 17:45:16 +03:00
nest-cli.json init project. 2024-06-13 15:44:20 +03:00
package.json docker fix. 2024-06-14 17:45:16 +03:00
README.md README file formating. 2024-06-27 21:16:37 +03:00
tsconfig.build.json docker fix. 2024-06-14 17:16:04 +03:00
tsconfig.json docker fix. 2024-06-14 17:16:04 +03:00
yarn.lock remove library, add docker. 2024-06-14 15:48:58 +03:00

Backend pet проекта - «Планировщик»

.env.example

  • DATABASE_URL - URL подключения к DB
  • MODE - Режим работы ("PROD" - для production версии)
  • JWT_SECRET - Секретный ключ для JWT токена
  • JWT_ACCESS_LIFETIME - Время жизни access токена
  • JWT_REFRESH_LIFETIME - Время жизни refresh токена
  • ALLOWED_HOST - разрешённые CORS хосты
  • HOST_PORT - порт запуска сервиса
  • DOMAIN_URL - домен сохранения сервисных куки
  • BASE_URL - дополнительный базовый URL для backend'а

Стек

  • NestJS
  • Prisma
  • PostgreSQL

Установка

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

yarn или npm install

Создание Prisma библиотек:

npx prisma generate

Создание production версии:

yarn build или npm run build

Запуск production версии:

yarn start:prod или npm run start:prod

REST endpoints

Авторизация запроса

Для всех запросов, кроме запроса Авторизации/Регистрации, необходимо передать следующий заголовок:

Authorization : Bearer access_token

/auth/login

  • POST - Авторизация пользователя.

    Body:

    • email - Email пользователя

    • password - Пароль пользователя

      Response:

    • access_token - Access токен авторизация

    • user - Данные о пользователе:

    • id - Id пользователя

    • email - Email пользователя

    • name - Имя пользователя

    • userSettings - Настройки пользователя:

      • intervalsCount - Количество интервалов
      • workInterval - Продолжительность рабочего интервала
      • breakInterval - Продолжительность интервала отдыха

/auth/login/access_token

  • POST - Обновление access токена.

    Response:

    • accessToken - Access токен авторизация
    • user - Данные о пользователе:
      • id - Id пользователя
      • email - Email пользователя
      • name - Имя пользователя
      • userSettings - Настройки пользователя:
        • intervalsCount - Количество интервалов
        • workInterval - Продолжительность рабочего интервала
        • breakInterval - Продолжительность интервала отдыха

/auth/register

  • POST - Регистрация нового пользователя.

    Body:

    • email - Email пользователя

    • password - Пароль пользователя

      Response:

    • access_token - Access токен авторизация

    • user - Данные о пользователе:

      • id - Id пользователя
      • email - Email пользователя
      • name - Имя пользователя
      • userSettings - Настройки пользователя:
        • intervalsCount - Количество интервалов
        • workInterval - Продолжительность рабочего интервала
        • breakInterval - Продолжительность интервала отдыха

/auth/logout

  • POST - Удаление refresh токена из серверных cookie.

    Response:

    При успешной обработке true.

/user/profile

  • GET - Получение данных о пользователе.

    Response:

    • user - Данные о пользователе:
      • id - Id пользователя
      • email - Email пользователя
      • name - Имя пользователя
      • userSettings - Настройки пользователя:
        • intervalsCount - Количество интервалов
        • workInterval - Продолжительность рабочего интервала
        • breakInterval - Продолжительность интервала отдыха
    • statistics - Статистика пользователя
      • totalTasks - Общее количество задач
      • completedTasks- Общее количество выполненных задач
      • todayTasks - Количество задач на сегодня
      • weekTasks - Количество задач на неделю
  • PUT - Извенение данных пользователя.

    Body:

    • email - Email пользователя
    • name - Имя пользователя
    • password - Пароль пользователя
    • settings - Настройки пользователя:
      • intervalsCount - Количество интервалов
      • workInterval - Продолжительность рабочего интервала
      • breakInterval - Продолжительность интервала отдыха

    Response:

    При успешной обработке вернутся новые данные пользователя.

user/tasks

  • GET - Получение списка всех задач пользователя.

    Response:

    Список задач:

    • id - Id задачи
    • createdAt - Дата и время создания задачи
    • updatedAt - Дата и время обновления информации по задаче
    • name - Название задачи
    • priority - Приоритет задачи (low|medium|high)
    • isCompleted - Выполнена ли задача
  • POST - Создание новой задачи.

    Body:

    • name - Название задачи
    • isCompleted - Выполнена ли задача
    • priority - Приоритет задачи (low|medium|high)

    Response:

    При успешной обработке вернутся данные созданной задачи.

user/tasks/:id

  • PUT - Изменение данных задачи.

    Body:

    • name - Название задачи
    • isCompleted - Выполнена ли задача
    • priority - Приоритет задачи (low|medium|high)
    • createdAt - Время создание задачи

    Response:

    При успешной обработке вернутся обновлённые данные задачи.

  • DELETE - Удаление задачи.

    Response:

    При успешной обработке вернутся данные удалённой задачи.

user/timer

  • POST - Создание сегодняшней сессии.

    Response:

    • id - Id сессии
    • createdAt - Дата и время создания сессии
    • updatedAt - Дата и время обновления информации по сессии
    • isCompleted - Выполнены ли все сессии
    • rounds - Список раундов сегодняшей сессии:
      • id - Id раунда
      • createdAt - Дата и время создания раунда
      • updatedAt - Дата и время обновления информации по раунду
      • isCompleted - Выполнен ли раунд
      • totalSeconds - Количество пройденных секунд раунда

user/timer/:id

  • PUT - Обнволение сессии.

    Body:

    • isCompleted - Выполена ли сессия

    Response:

    При успешной обработке вернутся данные обновлённой сессии.

  • DELETE - Удаление сессии.

    Response:

    При успешной обработке вернутся данные удалённой сессии.

user/timer/today

  • GET - Получение информации о сегодняшней сессии.

    Response:

    • id - Id сессии
    • createdAt - Дата и время создания сессии
    • updatedAt - Дата и время обновления информации по сессии
    • isCompleted - Выполнены ли все раунды
    • rounds - Список раундов сегодняшей сессии:
      • id - Id раунда
      • createdAt - Дата и время создания раунда
      • updatedAt - Дата и время обновления информации по раунду
      • isCompleted - Выполнен ли раунд
      • totalSeconds - Количество пройденных секунд раунда

user/timer/round:id

  • PUT - Изменение данных о раундах.

    Body:

    • totalSeconds - Количество пройденных секунд раунда.
    • isCompleted - Выполнен ли раунд

    Response:

    При успешной обработке вернутся данные обновлённого раунда.

user/time-block

  • GET - Получение временных блоков.

    Response:

    Список всех временных блоков:

    • id - Id временного блока
    • createdAt - Дата и время создания временного блока
    • updatedAt - Дата и время обновления информации по временному блоку
    • name - Название временного блока
    • color - Цвет временного блока
    • duration - Продолжительность временного блока
    • order - Порядок временного блока
  • POST - Создание нового блока.

    Body:

    • name - Название временного блока
    • color - Цвет временного блока
    • duration - Продолжительность временного блока
    • order - Порядок временного блока

    Response:

    При успешной обработке вернутся данные созданного временного блока.

user/time-block/:id

  • PUT - Изменение данных временного блока.

    Body:

    • name - Название временного блока
    • color - Цвет временного блока
    • duration - Продолжительность временного блока
    • order - Порядок временного блока

    Response:

    При успешной обработке вернутся данные изменённого временного блока.

  • DELETE - Удаление временного блока

    Response:

    При успешной обработке вернутся данные удалённого временного блока.

user/time-block/update-order

  • PUT - Изменение порядке временных блоков

    Body:

    • ids - Список Id временных блоков в нужном порядке

    Response:

    При успешной обработке вернётся список временных блоков в новом порядке.

База данных (БД)

User

  • id - Id пользователя
  • createdAt - Дата и время создания пользователя
  • updatedAt - Дата и время изменения пользователя
  • email - Email пользователя
  • name - Имя пользователя
  • password - Пароль пользователя

UserSettings

  • id - Id настроек
  • workInterval - Продолжительность рабочего интервала
  • breakInterval - Продолжительность интервала отдыха
  • intervalsCount - Количество рабочих интервалов
  • userId - Id пользователя

Task

  • id - Id задача
  • createdAt - Дата и время создания пользователя
  • updatedAt - Дата и время изменения пользователя
  • name - Название задачи
  • priority - Приоритетность (low | medium | high)
  • isCompleted - Выполнена ли задача
  • userId - Id пользователя

TimeBlock

  • id - Id временного блока
  • createdAt - Дата и время создания временного блока
  • updatedAt - Дата и время изменения временного блока
  • name - Название временного блока
  • color - Цвет временного блока
  • duration - Продолжительность временного блока
  • order - Порядок временного блока
  • userId - Id пользователя

PomodoroSession

  • id - Id сессии
  • createdAt - Дата и время создания сессии
  • updatedAt - Дата и время изменения сессии
  • isCompleted - Завершена ли сессия
  • userId - Id пользователя

PomodoroRound

  • id - Id раунда
  • createdAt - Дата и время создания раунда
  • updatedAt - Дата и время изменения раунда
  • isCompleted - Завершён ли раунд
  • totalSeconds - Кол-во прошедших секунд раунда
  • pomodoroSessionId - Id сессии