Бэкенд-сервер для приложения Dayframe - менеджера задач с геймификацией.
- Клонируйте репозиторий:
git clone https://github.com/DayframeTeam/Dayframe.server.git
cd Dayframe.server- Установите зависимости:
npm install- Создайте и настройте файл окружения:
npm run setupПосле запуска этой команды будет создан файл .env из шаблона. Обязательно отредактируйте этот файл, указав правильные настройки для подключения к базе данных.
- Подготовьте базу данных:
npm run db_setupЭта команда создаст необходимые таблицы в базе данных и заполнит их тестовыми данными.
| Команда | Описание |
|---|---|
npm start |
Запуск сервера |
npm run setup |
Создание .env файла из шаблона .env.example |
npm run create_env |
Создание .env файла из шаблона (то же, что и setup) |
npm run init_db |
Инициализация базы данных - создание таблиц |
npm run seed_db |
Наполнение базы тестовыми данными |
npm run db_setup |
Полная настройка базы данных (init_db + seed_db) |
npm run knip |
Проверка неиспользуемого кода |
src/
├── api/ # Определение API эндпоинтов
├── config/ # Конфигурация приложения
├── entities/ # Бизнес-логика, разбитая по сущностям
│ ├── task/ # Работа с задачами
│ ├── user/ # Работа с пользователями
│ └── ...
├── middleware/ # Middleware-функции для обработки запросов
├── scripts/ # Скрипты для инициализации базы и генерации данных
└── utils/ # Вспомогательные функции и утилиты
Основные сущности приложения:
- Tasks - задачи с возможностью добавления подзадач
- Users - пользователи с системой опыта
- Templates - шаблоны задач для быстрого создания
GET /tasks- получить все задачи пользователяPOST /tasks- создать новую задачуGET /tasks/:id- получить задачу по IDPATCH /tasks/:id- обновить задачуDELETE /tasks/:id- удалить задачуPATCH /tasks/is_done/:id- обновить статус задачиPATCH /tasks/subtasks/:id- обновить статус подзадачи
GET /users/:id- получить информацию о пользователеPATCH /users/:id- обновить информацию пользователя
Файл .env должен содержать:
DB_HOST=localhost
DB_USER=username
DB_PASSWORD=password
DB_NAME=dayframe
PORT=3001
- Node.js (>= 14.x)
- MySQL (>= 8.0)