# Настройка окружения разработчика ## Требования | Инструмент | Версия | Примечание | |-----------|--------|------------| | 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 samreshu-backend git clone 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) для полного списка расширений и настроек.