SocialMovies é uma rede social para cinéfilos. Aqui você vai pode avaliar filmes, escrever resenhas, criar listas personalizadas e interagir com outros amantes de cinema. A ideia é oferecer um espaço para descobrir novas obras, trocar recomendações e acompanhar o que seus amigos estão assistindo.
Autenticação JWT: Login e cadastro de usuários com autenticação segura.
Catálogo de Filmes: Pesquise e visualize filmes populares com detalhes como gênero, ano e sinopse.
Avaliações e Resenhas: Dê notas com estrelas e escreva suas opiniões.
Comentários em Tempo Real: Interaja com outros usuários através de comentários instantâneos via WebSocket.
Listas Personalizadas: Monte coleções como “Favoritos de 2023” ou “Filmes para Ver com a Família”.
O projeto é totalmente containerizado com Docker, garantindo portabilidade e facilidade na configuração do ambiente. Com um único comando, todo o ecossistema é iniciado — incluindo Node.js, PostgreSQL, Redis e Next.js.
Principais containers:
app: Aplicação Node.js (API)
web: Interface do usuário em Next.js
db: Banco de dados PostgreSQL
redis: Cache e gerenciamento de sessão
O projeto segue uma arquitetura limpa e orientada a casos de uso, com camadas bem definidas:
Controller → UseCase → Service → Repository → Model
A estrutura é feature-based, ou seja, cada funcionalidade possui sua própria pasta, tornando o sistema modular e escalável.
Exemplo de Estrutura:
Singleton Pattern: Garante uma única instância para conexões, como a do banco de dados.
Redis: Usado para armazenar tokens de sessão e cachear dados, melhorando a performance e a autenticação.
WebSocket: Responsável por atualizações em tempo real, como novos comentários e notificações.
Node.js v20+
Express.js
Next.js (Frontend)
PostgreSQL v15+
Sequelize ORM
JWT (JSON Web Token)
Redis
WebSocket
Docker e Docker Compose