Repositório focado na construção de aplicações modernas utilizando Node.js, TypeScript, NestJS, PostgreSQL, Docker, Jest e boas práticas de arquitetura, simulando a evolução de um projeto utilizado em ambiente corporativo.
flowchart TD
A[Fundamentos Node.js]
B[TypeScript]
C[Express]
D[NestJS]
E[PostgreSQL]
F[Docker]
G[Testes]
H[Observabilidade]
I[Projeto Final]
A --> B
B --> C
C --> D
D --> E
E --> F
F --> G
G --> H
H --> I
Este repositório reúne uma sequência de laboratórios práticos desenvolvidos para preparar candidatos para vagas de Desenvolvedor Backend Júnior.
O objetivo não é apenas ensinar uma tecnologia específica, mas sim demonstrar como um sistema backend evolui desde sua criação até um ambiente semelhante ao encontrado em empresas de desenvolvimento de software.
Durante os laboratórios será construída uma única aplicação, que receberá novas funcionalidades e melhorias de arquitetura de forma incremental.
Ao concluir este repositório, o desenvolvedor terá praticado:
- Desenvolvimento Backend moderno
- Node.js
- TypeScript
- NestJS
- APIs REST
- PostgreSQL
- TypeORM
- Docker
- Testes Automatizados
- Documentação OpenAPI
- Autenticação JWT
- Logs Estruturados
- Observabilidade
- Boas práticas de Segurança
- SOLID
- Clean Architecture
| Categoria | Tecnologias |
|---|---|
| Linguagem | Node.js, TypeScript |
| Framework | NestJS, Express |
| Banco de Dados | PostgreSQL |
| ORM | TypeORM |
| Containers | Docker |
| Testes | Jest |
| Documentação | Swagger / OpenAPI |
| Segurança | JWT, Helmet |
| Observabilidade | Pino, OpenTelemetry, Prometheus |
| Versionamento | Git e GitHub |
A evolução do repositório foi organizada em laboratórios independentes, permitindo estudar cada conceito de forma incremental.
| Status | Laboratório | Objetivo | Principais Tecnologias |
|---|---|---|---|
| ⬜ | LAB 01 — Fundamentos do Node.js | Conhecer o runtime, npm e estrutura de projetos | Node.js, npm |
| ⬜ | LAB 02 — Fundamentos do TypeScript | Aprender tipagem estática e recursos modernos da linguagem | TypeScript |
| ⬜ | LAB 03 — Primeira API com Express | Construir uma API REST simples | Express.js |
| ⬜ | LAB 04 — Primeira API com NestJS | Conhecer a arquitetura do framework | NestJS |
| ⬜ | LAB 05 — APIs REST | Implementar boas práticas em APIs RESTful | REST, HTTP |
| ⬜ | LAB 06 — Validação de Dados | Validar requisições de entrada | class-validator, ValidationPipe |
| ⬜ | LAB 07 — Autenticação com JWT | Implementar autenticação baseada em tokens | JWT, Passport |
| ⬜ | LAB 08 — PostgreSQL | Integrar a aplicação com banco de dados relacional | PostgreSQL |
| ⬜ | LAB 09 — TypeORM | Trabalhar com ORM e persistência de dados | TypeORM |
| ⬜ | LAB 10 — CRUD Completo | Desenvolver operações completas de CRUD | NestJS, PostgreSQL |
| ⬜ | LAB 11 — Paginação | Implementar paginação e ordenação | TypeORM |
| ⬜ | LAB 12 — Filtros e Busca | Criar consultas avançadas | SQL, QueryBuilder |
| ⬜ | LAB 13 — Docker | Containerizar a aplicação | Docker |
| ⬜ | LAB 14 — Testes Automatizados | Escrever testes unitários e de integração | Jest |
| ⬜ | LAB 15 — Documentação com Swagger | Gerar documentação automática da API | Swagger / OpenAPI |
| ⬜ | LAB 16 — Logs Estruturados | Produzir logs profissionais | Winston, Pino |
| ⬜ | LAB 17 — Observabilidade | Introduzir métricas e tracing | OpenTelemetry |
| ⬜ | LAB 18 — Tratamento Global de Erros | Padronizar respostas de erro | Exception Filters |
| ⬜ | LAB 19 — Deploy em Produção | Publicar a aplicação | Docker, Nginx |
| ⬜ | LAB 20 — Projeto Final | Consolidar todos os conhecimentos adquiridos | Node.js, NestJS |
| Símbolo | Significado |
|---|---|
| ⬜ | Não iniciado |
| 🟨 | Em desenvolvimento |
| ✅ | Concluído |
➡️ Roadmap completo: roadmap.md
.
├── assets/
│ ├── banners/
│ ├── diagrams/
│ └── screenshots/
│
├── docs/
│
├── templates/
│
├── LAB 01 - Fundamentos do Node.js/
├── LAB 02 - Fundamentos do TypeScript/
├── LAB 03 - Primeira API com Express/
├── ...
├── LAB 20 - Projeto Final/
│
├── README.md
├── roadmap.md
├── CONTRIBUTING.md
├── CHANGELOG.md
├── LICENSE
└── .gitignore
Ao longo dos laboratórios será desenvolvido um sistema completo de gestão para concessionárias de veículos.
O projeto evoluirá continuamente, simulando o desenvolvimento incremental utilizado em equipes profissionais.
- Cadastro de Clientes
- Cadastro de Veículos
- Cadastro de Vendedores
- Propostas Comerciais
- Test Drive
- Agenda
- Ordens de Serviço
- Histórico de Atendimento
- Dashboard
- Relatórios
Este repositório procura ir além dos exemplos tradicionais encontrados em cursos introdutórios.
Entre os diferenciais estão:
- Projeto único evoluindo ao longo de todos os laboratórios
- Arquitetura documentada em Mermaid
- Estrutura semelhante à utilizada em projetos corporativos
- Código organizado em camadas
- Commits organizados
- Documentação técnica detalhada
- Boas práticas de Engenharia de Software
- Observabilidade aplicada ao desenvolvimento backend
Um laboratório específico será dedicado à implementação de recursos normalmente encontrados em aplicações em produção.
Serão abordados:
- Logs estruturados com Pino
- Métricas com Prometheus
- Tracing distribuído com OpenTelemetry
- Health Checks
- Endpoints
/health - Endpoints
/metrics
Este repositório faz parte de um conjunto de projetos desenvolvidos para demonstrar competências práticas em:
- Desenvolvimento Backend
- Engenharia de Software
- APIs REST
- Cloud Computing
- Observabilidade
- DevOps
Ao concluir este repositório o estudante terá desenvolvido experiência prática em:
- Desenvolvimento Backend
- APIs REST
- Arquitetura em Camadas
- SOLID
- Clean Architecture
- TypeScript
- NestJS
- PostgreSQL
- Docker
- Testes Automatizados
- Swagger/OpenAPI
- JWT
- Logs Estruturados
- Observabilidade
- Deploy
Sugestões de melhorias, correções e novas ideias são sempre bem-vindas.
Caso identifique algum problema ou queira contribuir com o projeto, fique à vontade para abrir uma Issue ou enviar um Pull Request.
Este projeto é distribuído sob a licença MIT.
