Сценарий использования - описание того, что делает пользователь с приложением для достижения своей цели.
Роли пользователей - студент, администратор.
Основной сценарий:
Авторизация → Просмотр списка курсов → Просмотр деталей курса → Просмотр проектов → Формирование команды → Отправка заявки → Получение уведомления → Просмотр распределения → Инициация обмена (при необходимости)
- Авторизация → вход в систему.
- Просмотр списка курсов → отображение актуальных курсов.
- Просмотр деталей курса → описание и дедлайны.
- Просмотр списка проектов → список доступных проектов.
- Формирование команды:
- отправка запроса;
- получение запроса;
- подтверждение или отказ.
- Отправка заявки.
- Уведомление о распределении.
- Просмотр дашборда.
- Обмен проектами:
- инициация;
- подтверждение или отказ.
Основной сценарий:
Авторизация
→ Настройка параметров
→ Просмотр курсов
→ Настройка курса
→ Запуск распределения
→ Анализ результатов
→ Корректировка
→ Публикация
→ Просмотр распределения
→ Подтверждение обмена
- Авторизация.
- Просмотр курсов.
- Просмотр деталей курса.
- Настройка курса:
- редактирование описания;
- изменение дедлайнов, размера команд, отображения курса;
- редактирование списка проектов.
- Настройка параметров распределения.
- Запуск алгоритма.
- Визуализация результатов.
- Корректировка.
- Публикация итогов.
- Просмотр дашборда.
- Подтверждение или запрет обмена.
-
Клонируйте репозиторий:
git clone https://github.com/moevm/mse1h2026-project
-
Перейдите в директорию проекта:
cd mse1h2026-project -
Скопируйте файл
.env.exampleв.envи отредактируйте переменные окружения. Переменные, находящиеся под# [service] dev-envиспользуются для dev разработки с Docker.cp .env.example .env
-
Установите зависимости:
pnpm i
-
Введите в
.envзначенияMYSQL_DATABASE=<your_database_name> MYSQL_USER=root MYSQL_PASSWORD=<your_root_password> MYSQL_HOST=localhost MYSQL_PORT=3306 BACKEND_OUTPUT_HOST=localhost BACKEND_OUTPUT_PORT=3000
-
Запустите проект:
pnpm build
pnpm previewpnpm dev-
Введите в
.envзначения для инициализации и запускаMySQLконтейнера:MYSQL_ROOT_PASSWORD=<your_root_password> MYSQL_DATABASE=<your_database_name> MYSQL_USER=<your_mysql_user> MYSQL_PASSWORD=<your_mysql_user_password> MYSQL_HOST=db MYSQL_PORT=3306 BACKEND_OUTPUT_HOST=127.0.0.1 BACKEND_OUTPUT_PORT=3000
-
Запустите docker compose:
docker compose up --build
-
Запустите docker compose для разработки:
docker compose -f docker-compose.dev.yaml up --build
-
db:
-
MYSQL_ROOT_PASSWORD- пароль для пользователяrootв MySQL. -
MYSQL_DATABASE- имя базы данных, которая будет создана при запуске контейнера. -
MYSQL_USER- имя пользователя для доступа к базе данных (обычноrootдля локальной разработки, и неrootдля docker). -
MYSQL_PASSWORD- пароль для пользователя, указанного вMYSQL_USER. -
MYSQL_HOST- хост, на котором работает MySQL (обычноdbдля Docker,localhostдля локальной разработки) -
MYSQL_PORT- порт, на котором работает MySQL (обычно3306)dev-env:
MYSQL_OUTPUT_HOST- хост, на котором будет доступна база данных MySQL (обычно127.0.0.1для локальной разработки)MYSQL_OUTPUT_PORT- порт, на котором будет доступна база данных MySQL (обычно3306)MYSQL_OUTPUT_URL- URL, на котором будет доступна база данных MySQL (обычно{MYSQL_OUTPUT_HOST}:${MYSQL_OUTPUT_PORT})
-
-
backend:
DATABASE_URL- URL для подключения к базе данных MySQL (в частности для ORM Prisma)BACKEND_OUTPUT_HOST- хост, на котором будет доступен бэкенд (обычно127.0.0.1)BACKEND_OUTPUT_PORT- порт, на котором будет доступен бэкенд (обычно3000)BACKEND_OUTPUT_URL- URL, на котором будет доступен бэкенд (обычно${BACKEND_OUTPUT_HOST}:${BACKEND_OUTPUT_PORT})
-
frontend:
VITE_API_BASE_URL- базовый URL для API запросов к бэкенду (обычноhttp://${BACKEND_OUTPUT_URL}/api)FRONTEND_OUTPUT_HOST- хост, на котором будет доступен фронтенд (обычно127.0.0.1)FRONTEND_OUTPUT_PORT- порт, на котором будет доступен фронтенд (обычно8080)FRONTEND_OUTPUT_URL- URL, на котором будет доступен фронтенд (обычноhttp://${FRONTEND_OUTPUT_HOST}:${FRONTEND_OUTPUT_PORT})
Инструкции по проверке работоспособности проекта (основной функциональности и результатов).
Любая информация, которую команда посчитает нужной разместить.