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

3.7 KiB
Raw Permalink Blame History

Настройка окружения разработчика

Требования

Инструмент Версия Примечание
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:

# 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:

Запуск:

docker compose -f docker-compose.dev.yml up -d

Переменные окружения

Backend .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).

Быстрый старт

# 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 для полного списка расширений и настроек.