No capítulo anterior construímos uma aplicação completa com front-end, API e banco de dados.
Mas tudo está num arquivo só: o app.js.
Conforme o sistema cresce, isso vira um problema. Neste capítulo vamos reorganizar o código em camadas sem quebrar nada que já funciona.
Imagine que sua GameShelf agora precisa de:
Se tudo ficar no app.js:
❌ Difícil encontrar um trecho específico
❌ Uma alteração pode quebrar outra parte sem querer
❌ Trabalhar em equipe vira um pesadelo
❌ Testar partes isoladas é quase impossível
Cada parte do sistema deve ter uma função clara e bem definida.
| Camada | Responsabilidade |
|---|---|
routes/ |
Define quais URLs existem e chama o controller |
controllers/ |
Recebe a requisição, chama o service, envia a resposta |
services/ |
Toda a lógica de negócio e comunicação com o banco |
| Elemento | Equivalente no código |
|---|---|
| Cliente | Requisição HTTP |
| Garçom | Controller |
| Cozinha | Service |
| Estoque | Banco de dados |
O cliente não vai até a cozinha. O garçom não cozinha. A cozinha não anota pedidos. Cada um faz apenas o que é sua função.
Abra o pgAdmin e execute:
CREATE DATABASE games_db;