Skip to content

Разработка

Руководство по инструментам и процессам разработки в Integ API.

Обзор инструментов

Проект использует современный стек инструментов для обеспечения качества кода и удобства разработки.

Runtime Stack

ИнструментВерсияНазначение
NestJS10.xFramework
TypeScript5.xЯзык программирования
PostgreSQL16База данных
TypeORM0.3.xORM
Node.js18+Runtime

Development Tools

ИнструментВерсияНазначение
ESLint9Анализ кода
Prettier3Форматирование
Husky9Git hooks
lint-staged15Проверка staged файлов
Jest29Тестирование

Authentication & Security

ИнструментВерсияНазначение
JWT-Аутентификация
Passport0.7Стратегии аутентификации
bcryptjs2.4Хеширование паролей
crypto-js4.2Шифрование

Infrastructure

ИнструментНазначение
DockerКонтейнеризация
Docker ComposeОркестрация контейнеров
DopplerУправление секретами
SentryМониторинг ошибок
RedisКеширование

npm Scripts

Разработка

bash
npm start              # Запуск dev сервера с hot reload
npm run build          # Сборка для production
npm run typecheck      # Проверка типов TypeScript

Линтинг и форматирование

bash
npm run lint           # Проверка кода ESLint
npm run lint:fix       # Автоматическое исправление ошибок
npm run format         # Форматирование кода Prettier
npm run format:check   # Проверка форматирования

Удаление бойлерплейта

bash
npm run removeComments       # Удалить комментарии
npm run removeReturnTypes    # Удалить явные return types
npm run removeComments:staged     # Для staged файлов
npm run removeReturnTypes:staged  # Для staged файлов

Тестирование

bash
npm test              # Запустить тесты
npm run test:cov      # Запустить тесты с coverage отчетом

База данных

bash
npm run migration:generate   # Сгенерировать миграцию
npm run migration:run        # Запустить миграции
npm run migration:revert     # Отменить последнюю миграцию
npm run typeorm              # Прямой доступ к TypeORM CLI

Docker

bash
npm run docker:up    # Запустить контейнеры (PostgreSQL)
npm run docker:down  # Остановить контейнеры

Документация

bash
npm run docs:dev      # Запустить VitePress dev сервер
npm run docs:build    # Собрать статическую документацию
npm run docs:preview  # Предпросмотр production build

MCP Contract Server

bash
npm run generate:contract  # Генерировать OpenAPI контракт
npm run mcp:dev           # Запустить MCP сервер в dev режиме
npm run mcp:build         # Собрать MCP сервер для production
npm run mcp:start         # Запустить собранный MCP сервер

Утилиты

bash
npm run depcheck       # Проверить неиспользуемые зависимости
npm run update-packages # Проверить обновления пакетов
npm run prepare        # Setup Husky hooks

Workflow разработчика

1. Подготовка

bash
# Клонирование репозитория
git clone <repo>
cd integ-api

# Установка зависимостей
npm install

# Инициализация Husky
npm run prepare

# Запуск контейнеров (PostgreSQL, Redis)
npm run docker:up

# Генерация environment
npm run generate:env:local

# Запуск миграций
npm run migration:run

2. Разработка

bash
# Запуск dev сервера
npm start

# Приложение доступно на http://localhost:3000
# Swagger: http://localhost:3000/api/reference
# Hot reload включен - изменения применяются автоматически

3. Перед коммитом

Автоматически (Husky pre-commit):

bash
npm run removeComments:staged    # Удаление комментариев
npm run removeReturnTypes:staged # Удаление return types
npx pretty-quick --staged        # Prettier форматирование
npx lint-staged                  # ESLint проверка

4. Перед пушем

Автоматически (Husky pre-push):

bash
npm run typecheck    # TypeScript проверка
npm run lint         # Полная ESLint проверка
npm run build:dev    # Тестовая сборка

5. Создание коммита

bash
git add .
git commit -m "feat: описание изменения"
# Husky автоматически запустит pre-commit hook
# Если ошибки - исправьте и повторите git add

6. Push код

bash
git push origin feature-branch
# Husky автоматически запустит pre-push hook
# Если ошибки - исправьте и повторите git push

Основные разделы

Полезные ссылки

  • Документация проекта: http://localhost:5177 (VitePress)
  • API Swagger: http://localhost:3000/api/reference
  • Архитектура: docs/architecture/
  • API Руководство: docs/api-guide/

Troubleshooting

Приложение не запускается

bash
# Проверить контейнеры
npm run docker:up

# Проверить миграции
npm run migration:run

# Проверить типы
npm run typecheck

# Проверить окружение
npm run generate:env:local

ESLint ошибки

bash
# Автоматическое исправление
npm run lint:fix

# Или для staged файлов
npm run removeComments:staged
npm run removeReturnTypes:staged

Prettier конфликты

bash
# Переформатировать все файлы
npm run format

# Или для staged файлов
npx pretty-quick --staged

Проблемы с миграциями

bash
# Отменить последнюю
npm run migration:revert

# Выполнить заново
npm run migration:run

# Сгенерировать новую (после изменений entity)
npm run migration:generate

Следующие шаги