# Спринт: сервер, Docker, Postgres, роли ## Обязательные требования - **Docker**: образ приложения + `docker-compose` с PostgreSQL; один контейнер отдаёт API и статику фронтенда. - **PostgreSQL** вместо SQLite; Prisma-миграции при старте контейнера (`migrate deploy`). - **Два аккаунта** (логины/пароли из переменных окружения при первом запуске): наставник **Алексей**, ученик **Константин**; связь «наставник ведёт ученика» в БД. - **Алексей** видит и создаёт контент для Константина (чат, вопросы, учебники, тесты, отчёты). - **Константин** удаляет **только свои** вопросы (`DELETE` только для роли STUDENT и только при совпадении `studentId`); наставник удалять вопросы не может. - **Настройки** (ключ API, промпты): только наставник (`GET /raw`, `PUT`). ## Статус реализации См. коммит(ы) в репозитории после этой спецификации: `Dockerfile`, `docker-compose.yml`, `SPRINT.md`, обновлённые `schema.prisma`, auth, защита роутов, UI логина и удаления вопросов. ## Запуск в Docker (обязательная упаковка) ```bash cp .env.docker.example .env # Заполните JWT_SECRET, SEED_TUTOR_PASSWORD, SEED_STUDENT_PASSWORD; при желании DEEPSEEK_API_KEY docker compose up --build ``` Приложение: http://localhost:3107 (логины по умолчанию `alexey` / `konstantin`, см. `SEED_*_USERNAME`). Файл-пример переменных: [.env.docker.example](.env.docker.example). ## Локальная разработка - Поднять Postgres (или `docker compose up db -d`). - `DATABASE_URL=postgresql://...` в `backend/.env`. - `npm run dev` из корня (как раньше: backend :3001, frontend :5173 с прокси).