Case study
IMDb Clone — Aplicação Full-Stack
Aplicação full-stack desenvolvida como desafio técnico, composta por um frontend em Next.js e uma API REST em Node.js, Express e TypeScript. A plataforma permite gerenciamento de filmes, autenticação de usuários, controle de acesso por perfil e sistema de avaliações, utilizando MySQL para persistência de dados e documentação da API com OpenAPI.
Tecnologias
O problema
O desafio consistia em projetar uma aplicação inspirada no IMDb capaz de integrar frontend, backend e banco de dados em uma arquitetura completa. Além da exibição dos filmes, a solução precisava contemplar autenticação de usuários, diferentes níveis de permissão, gerenciamento do catálogo, avaliações dos filmes e uma API estruturada que pudesse ser consumida pelo frontend de forma segura e documentada.
A solução
Foi desenvolvida uma aplicação full-stack utilizando Next.js no frontend e uma API REST construída com Node.js, Express e TypeScript no backend. A aplicação utiliza MySQL para persistência dos dados e migrations para versionamento da estrutura do banco. O backend foi organizado em controllers, services, routes e middlewares, separando responsabilidades entre acesso aos dados, regras de negócio e tratamento das requisições. A autenticação utiliza JWT e middlewares para validar usuários antes do acesso às rotas protegidas. Também foi implementado controle de autorização por perfil, permitindo que determinadas operações administrativas, como criação, edição e exclusão de filmes, sejam executadas apenas por usuários autorizados. A API também possui documentação utilizando OpenAPI e uma coleção Postman para facilitar testes e integração.
Responsabilidades
Responsável pela concepção e implementação completa da solução, desde a definição da arquitetura e modelagem do banco de dados até o desenvolvimento do frontend e backend. As atividades incluíram criação da API REST, implementação de autenticação e autorização, desenvolvimento dos fluxos de usuários, filmes e avaliações, criação de migrations, integração com MySQL, definição do ERD, documentação OpenAPI, criação da coleção Postman e integração entre a aplicação Next.js e o backend.
Decisões técnicas
TypeScript foi utilizado tanto no frontend quanto no backend para aumentar a segurança de tipos e manter consistência entre as duas camadas da aplicação. Next.js foi escolhido para o frontend por oferecer uma estrutura baseada em React com roteamento integrado, componentização e suporte a diferentes estratégias de renderização. No backend, Node.js com Express foi utilizado para construir uma API REST leve e modular. A aplicação foi organizada em controllers, services, routes e middlewares para evitar concentrar regras de negócio diretamente nas rotas. MySQL foi escolhido como banco relacional e Knex foi utilizado para gerenciamento das migrations. JWT foi adotado para autenticação, acompanhado de validação adicional no backend para garantir que o token e o usuário ainda estejam válidos antes de liberar o acesso às rotas protegidas. Um middleware de autorização baseado no perfil do usuário foi utilizado para restringir operações administrativas. OpenAPI, ERD e Postman foram utilizados para documentar respectivamente o contrato da API, a estrutura de dados e os fluxos de requisição.
Resultados
O projeto resultou em uma aplicação full-stack funcional com comunicação entre frontend, backend e banco de dados, contemplando autenticação, autorização por perfil, catálogo de filmes e sistema de avaliações. A solução também estabeleceu um contrato documentado para a API e uma estrutura de banco versionada através de migrations, tornando o projeto mais fácil de configurar, testar e evoluir. O desafio consolidou práticas de desenvolvimento full-stack, arquitetura de APIs REST, segurança de rotas, modelagem de dados e integração entre múltiplas camadas de uma aplicação web.