🎯 Objetivo do Capítulo

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.


1️⃣ O Problema do Arquivo Único

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


🧠 A Solução: Separação de Responsabilidades

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

🧩 Analogia do Restaurante

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.


2️⃣ Preparando o Banco de Dados

Abra o pgAdmin e execute:

CREATE DATABASE games_db;