Busca Tudo API
Backend REST em Node.js e TypeScript para o app Busca Tudo — com autenticação JWT, upload de imagens, e-mails transacionais e documentação via Swagger. Quase todas as rotas são cobertas por testes automatizados E2E, rodados a cada push via CI/CD no GitHub Actions.
$ cat package.json
> name: busca_tudo_backend
> version: 1.1.0
> engines: node >=24.17.0 <25.0.0
> scripts: dev · build · test (jest -i)
$ npm run dev
✓ servidor rodando em modo development
Stack técnica
Núcleo
- Node.js
- Express
- TypeScript
- MongoDB + Mongoose
Autenticação & Segurança
- JWT
- bcrypt
- express-rate-limit
- CORS
Validação
- Joi
- Zod
Comunicação & Mídia
- Cloudinary
- Nodemailer
- Axios
Documentação & DX
- Swagger UI
- swagger-autogen
- ESLint + Prettier
Testes & Qualidade
- Jest
- Supertest
- mongodb-memory-server
- Faker
Testes E2E & CI/CD
Cada rota nova entra acompanhada de um teste. O pipeline abaixo roda automaticamente a cada push — sem etapa manual entre o código e o deploy.
- 1
Push ou Pull Request
Qualquer alteração na branch main dispara o workflow do GitHub Actions automaticamente.
- 2
Instala dependências e roda o lint
npm ci garante instalação determinística; o ESLint valida o padrão de código antes de qualquer teste.
- 3
Testes E2E com banco em memória
mongodb-memory-server sobe um MongoDB isolado para os testes de Jest + Supertest cobrirem quase todas as rotas da API de ponta a ponta.
- 4
Build de produção
tsc compila o projeto TypeScript, garantindo que nenhum erro de tipo chegue ao deploy.
- 5
Deploy
Só acontece se todas as etapas anteriores passarem — sem intervenção manual.
name: CI
on:
push:
branches: ["main", "homolog"]
pull_request:
branches: ["main", "homolog"]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [24.x]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Create .env file
run: |
touch .env
echo ... >> .env
echo ... >> .env
echo ... >> .env
...
- run: npm ci
- run: npm run lint
- run: npm run test
- run: npm run build
Anatomia do projeto
