- TypeScript 99.3%
- Dockerfile 0.7%
| prisma | ||
| src | ||
| .env.example | ||
| .eslintrc.js | ||
| .gitignore | ||
| .prettierrc | ||
| docker-compose.yaml | ||
| Dockerfile | ||
| nest-cli.json | ||
| package.json | ||
| README.md | ||
| tsconfig.build.json | ||
| tsconfig.json | ||
| yarn.lock | ||
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 - Количество задач на неделю
- user - Данные о пользователе:
-
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 сессии