Um aplicativo web pode parecer uma única coisa na tela, mas o trabalho está dividido em quatro partes. Cada parte responde a uma pergunta diferente:


- Interface: o que a pessoa vê e manipula?
- API: como o pedido entra e a resposta sai?
- Servidor: quais regras decidem o que pode acontecer?
- Banco de dados: o que precisa sobreviver depois que a página fecha?
Essas fronteiras não exigem quatro projetos separados. Em Next.js, por exemplo, interface e servidor podem viver no mesmo repositório. A separação é de responsabilidade, não necessariamente de infraestrutura.
Quando você sabe qual parte deveria fazer cada trabalho, deixa de tratar o código gerado como uma caixa única. Um sintoma passa a apontar para uma região investigável.