@notanoob/backend
v1.0.2
Published
Uma CLI interativa para automatizar a criação de projetos backend com a minha arquitetura pessoal. Inspirada no fluxo do `create-vite`, ela faz as perguntas certas e monta toda a estrutura pra você — pastas, configs, Docker, dependências instaladas e repo
Downloads
503
Readme
@notanoob/backend
Uma CLI interativa para automatizar a criação de projetos backend com a minha arquitetura pessoal. Inspirada no fluxo do create-vite, ela faz as perguntas certas e monta toda a estrutura pra você — pastas, configs, Docker, dependências instaladas e repositório Git inicializado.
Este projeto não é um backend pronto. É uma ferramenta de scaffolding que gera um projeto backend a partir de um template pessoal. O objetivo é eliminar o trabalho repetitivo de configuração toda vez que um novo projeto começa.
Uso
Sem instalar nada:
npx @notanoob/backendOu instalando globalmente:
npm install -g @notanoob/backend
create-backendO que a CLI faz
Ao executar, você passa por um fluxo interativo de perguntas:
⚙️ Gerador de API
◆ Nome do projeto: minha-api
◆ Criar projeto "minha-api"? SimA partir das suas respostas, a CLI:
- Copia o template base para uma nova pasta com o nome do projeto
- Substitui os placeholders dinâmicos (
{{PROJECT_NAME}},{{CONTAINER_NAME}}, etc.) - Instala as dependências com Yarn
- Abre o projeto no VS Code
Estrutura gerada
meu-projeto/
├── src/
│ ├── domain/
│ ├── application/
│ │ └── use-cases/
│ ├── infra/
│ │ ├── http/
│ │ │ └── routes/
│ │ ├── repositories/
│ │ └── database/
│ ├── shared/
│ │ └── errors/
│ └── server.ts
├── prisma/
│ └── schema.prisma
├── compose.yml
├── Dockerfile
├── .env.example
├── .gitignore
├── package.json
└── tsconfig.jsonA arquitetura segue os princípios de separação de responsabilidades: domain para as entidades e regras de negócio, application para os casos de uso, infra para tudo que depende de framework ou banco de dados, e shared para utilitários transversais.
Stack do projeto gerado
| Camada | Tecnologia | |---|---| | Runtime | Node.js | | Framework HTTP | Fastify | | ORM | Prisma | | Banco de dados | PostgreSQL | | Linguagem | TypeScript | | Executor dev | tsx | | Containerização | Docker + Compose |
Como a CLI foi construída
A CLI foi desenvolvida em TypeScript com Node.js, usando as seguintes bibliotecas:
| Biblioteca | Função |
|---|---|
| @clack/prompts | Interface interativa no terminal (perguntas, spinners, feedback visual) |
| execa | Execução de comandos externos (yarn, git, code) |
| slugify | Normalização do nome do projeto para formato seguro |
Estrutura interna
create-backend/
├── src/
│ ├── index.ts ← fluxo de perguntas e orquestração
│ ├── generator.ts ← cópia do template e substituição de placeholders
│ └── utils/
│ └── spinner.ts ← wrapper do spinner do clack
├── template/ ← projeto base real (copiado a cada execução)
├── package.json
└── tsconfig.jsonO template/ é um projeto real no disco — não strings em código. Isso significa que editar o template é tão simples quanto abrir os arquivos no editor, com syntax highlight, linter e tudo mais funcionando normalmente.
Placeholders
Alguns arquivos do template contêm marcadores que são substituídos dinamicamente pelo nome do projeto:
| Placeholder | Onde aparece | Substituído por |
|---|---|---|
| {{PROJECT_NAME}} | package.json | Nome em slug do projeto |
| {{CONTAINER_NAME}} | compose.yml | nome-do-projeto_db |
| {{VOLUME_NAME}} | compose.yml | nome-do-projeto_volume |
O shebang
A primeira linha do dist/index.js é:
#!/usr/bin/env nodeIsso instrui o sistema operacional a usar o node disponível no PATH do usuário para executar o script — é o que permite rodar o arquivo diretamente como um comando de terminal.
Desenvolvimento
Pré-requisitos
- Node.js 22+
- Yarn
Instalando dependências
yarnRodando em modo dev
yarn devO tsx executa o TypeScript diretamente, sem necessidade de compilar.
Compilando
yarn buildO build compila o TypeScript para dist/ e copia a pasta template/ para dentro do dist/.
Testando localmente como comando global
yarn build
npm link
create-backendPara desfazer:
npm unlink -g create-backendPublicação
yarn build
npm version patch # ou minor / major
npm publish --access publicO campo files no package.json garante que apenas dist/ e template/ vão para o pacote publicado.
