bad-fockarch
v3.1.2
Published
Мощный schematic-пакет для NestJS с BAD-архитектурой. Генерация проектов и роутов с единым стилем кода.
Maintainers
Readme
BAD Архитектура
Backend After Drinking — это пакет-схематик для NestJS, который позволяет быстро создать проект с жёсткой, но гибкой архитектурой, а также генерировать роуты по единому шаблону.
Шутливое название скрывает серьёзный подход: BAD помогает поддерживать порядок в коде, ускорять разработку и внедрять лучшие практики из коробки.
Возможности
- Генерация проекта одной командой –
bad createразворачивает полностью настроенный NestJS-проект с поддержкой Swagger, Sentry, Passport.js, Throttler, кэширования, Docker и тестов. - Автоматическое создание роутов –
nest g badp users(см.nest g bad --help) генерирует папку роута со всеми необходимыми файлами: контроллер, сервис, модуль, DTO, файл маршрутов и опционально тесты. - Версионирование API из коробки – каждая версия (v1, v2, …) изолирована в своей папке, что позволяет бесшовно развивать API.
- Единый стиль кода – все файлы следуют соглашениям команды LAF, включая именование, форматирование и структуру импортов.
Установка
Установите пакет глобально или используйте через npx:
npm install -g bad-fockarch
# или
pnpm add -g bad-fockarchСоздание нового проекта
bad create <имя-проекта> [путь] [менеджер-пакетов]<имя-проекта>– обязательное имя папки проекта.[путь]– путь для размещения (по умолчанию текущая папка).[менеджер-пакетов]–pnpm(по умолчанию),npmилиyarn.
Пример:
bad create my-api . pnpmПосле выполнения вы получите готовый к работе проект с установленными зависимостями. Перейдите в папку и запустите dev-режим:
cd my-api
pnpm devAPI будет доступно по адресу http://localhost:8080/api/docs (порт
можно изменить в .env).
Генерация роута
Внутри созданного проекта используйте NestJS CLI с нашей схемой:
nest g badp userБудет создана папка src/v1/routes/users/ со следующим содержимым:
users/
├── dto/
│ ├── user-create.dto.ts
│ └── user-update.dto.ts
├── users.controller.ts
├── users.service.ts
├── users.module.ts
├── users.routes.ts
├── users.controller.test.ts (?)
└── users.service.test.ts (?)Файл users.routes.ts задаёт базовый путь и имена эндпоинтов:
import { Routes } from "@/utils";
export const { ROUTE, ROUTES, OPERATIONS } = new Routes({
route: "users",
routes: { ... },
operations: { ... }
});Вы можете сразу добавлять свою бизнес-логику в сервис и контроллер.
Структура сгенерированного проекта
Правила и соглашения
Мы строго следуем стандартам написания кода команды LAF. Основные моменты:
- Имена файлов:
kebab-caseс суффиксом (.service.ts,.controller.ts, …). - Имена классов:
UpperCamelCase. - Имена переменных и функций:
camelCase. - Константы:
SCREAMING_SNAKE_CASE. - Импорты: сортировка (инициализаторы → типы → данные → статитка).
- Ошибки: только
throw, в сервисах –HttpException. - Альтернативные папки: выбирайте что-то одно (
services/илиapi/,types/илиentities/) и придерживайтесь во всём проекте.
Документация
Подробное описание архитектуры, структуры, правил и примеров использования доступно в документации BAD. Рекомендуется ознакомиться со следующими разделами:
Лицензия
MIT © Lazy And Focused
