Files
samreshu_docs/onboarding/setup.md
Anton 2f45a0b851 docs: приведение документации в соответствие с backend
- Auth: register без токенов до верификации (userId, message, verificationCode)
- Auth: login — 429 RATE_LIMIT_EXCEEDED при lockout, user с avatarUrl
- Auth: verify-email — { userId, code }, без Bearer
- Auth: reset-password — поле newPassword
- Profile: stats — byStack, totalTestsTaken, totalQuestions, correctAnswers, accuracy
- Tests: POST /tests возвращает полный список questions
- Tests: answer — полный snapshot отвеченного вопроса
- Tests: history — offset-пагинация (limit/offset), формат { tests, total }
- Admin: GET /admin/questions/pending, POST approve/reject, PATCH для редактирования
- DB: email_verification_codes, password_reset_tokens; обновлена question_cache_meta
- Security: CORS_ORIGINS из env, CSP/COEP отключены
- LLM: LLM_FALLBACK_MODEL, LLM_RETRY_DELAY_MS
- Onboarding: правило .env.example, JWT_SECRET >= 32 символов
2026-03-06 13:52:24 +03:00

134 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Настройка окружения разработчика
## Требования
| Инструмент | Версия | Примечание |
|-----------|--------|------------|
| Node.js | >= 20 LTS | Через nvm (`nvm install 20`) |
| npm | >= 10 | Приходит с Node.js |
| Git | >= 2.40 | |
| Docker | latest | + Docker Compose |
| VS Code | latest | Рекомендован, настройки в репо |
## .nvmrc
В корне каждого code-репо лежит `.nvmrc`:
```
20
```
При входе в директорию: `nvm use`
## Docker Compose (локальное окружение)
Для разработки нужны PostgreSQL и Redis. Docker Compose файл лежит в `samreshu-backend`:
```yaml
# docker-compose.dev.yml
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: samreshu
POSTGRES_PASSWORD: samreshu_dev
POSTGRES_DB: samreshu
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
pgdata:
```
Запуск:
```bash
docker compose -f docker-compose.dev.yml up -d
```
## Переменные окружения
Backend `.env` (шаблон):
```env
# Server
PORT=3000
HOST=0.0.0.0
NODE_ENV=development
# Database
DATABASE_URL=postgresql://samreshu:samreshu_dev@localhost:5432/samreshu
# Redis
REDIS_URL=redis://localhost:6379
# Auth (JWT_SECRET минимум 32 символа в production)
JWT_SECRET=dev-secret-change-in-production
JWT_ACCESS_TTL=15m
JWT_REFRESH_TTL=7d
# CORS (через запятую: http://localhost:5173,https://samreshu.ru)
CORS_ORIGINS=http://localhost:5173
# LLM
LLM_BASE_URL=http://localhost:11434/v1
LLM_MODEL=qwen2.5:14b
LLM_API_KEY=
LLM_FALLBACK_MODEL=qwen2.5:7b
LLM_TIMEOUT_MS=15000
LLM_MAX_RETRIES=1
LLM_RETRY_DELAY_MS=2000
LLM_TEMPERATURE=0.7
LLM_MAX_TOKENS=2048
# Email (dev — mailpit / mailtrap)
SMTP_HOST=localhost
SMTP_PORT=1025
SMTP_USER=
SMTP_PASS=
EMAIL_FROM=noreply@samreshu.dev
# Sentry (опционально для dev)
SENTRY_DSN=
```
`.env` файл **не коммитится**. В репо лежит `.env.example` с теми же ключами и примерами значений.
**Правило:** `.env.example` обновляется при добавлении новых фич — новые переменные (rate limits, LLM, CORS и т.д.) должны быть зафиксированы в шаблоне. **JWT_SECRET** должен быть не менее 32 символов (рекомендуется `openssl rand -base64 32`).
## Быстрый старт
```bash
# 1. Клонировать репозитории
git clone <backend-repo-url> samreshu-backend
git clone <frontend-repo-url> samreshu-frontend
# 2. Backend
cd samreshu-backend
nvm use
npm install
cp .env.example .env # заполнить значения
docker compose -f docker-compose.dev.yml up -d
npm run db:migrate # применить миграции
npm run dev # запустить сервер
# 3. Frontend (в отдельном терминале)
cd samreshu-frontend
nvm use
npm install
npm run dev # запустить Vite dev server
```
## VS Code
При открытии репо VS Code предложит установить рекомендуемые расширения (из `.vscode/extensions.json`). Настройки форматирования и линтинга подхватятся автоматически из `.vscode/settings.json`.
См. [code-style.md](../principles/code-style.md) для полного списка расширений и настроек.