O VoteFlix é uma aplicação desktop completa que simula uma plataforma de avaliação de filmes, como o "IMDb" ou "Letterboxd". O projeto é construído inteiramente em Java e demonstra uma arquitetura Cliente-Servidor.
A comunicação entre o cliente (interface gráfica) e o servidor (lógica de negócios) é realizada via Sockets TCP, e todas as informações são persistidas em um banco de dados MySQL. A autenticação de sessão é gerenciada usando JSON Web Tokens (JWT).
Este projeto foi desenvolvido como parte dos estudos em Sistemas Distribuídos.
A aplicação é dividida em dois painéis principais:
- Autenticação: Criar conta e fazer login (com sessão gerenciada por JWT).
- Listar Filmes: Visualizar todos os filmes cadastrados, suas notas médias e sinopses.
- Criar Review: Escrever e publicar uma nova review para um filme, atribuindo uma nota.
- Minhas Reviews: Visualizar, editar ou excluir apenas as reviews feitas pelo próprio usuário.
- Gerenciamento de Filmes: Administradores podem adicionar, editar ou excluir filmes do catálogo.
- Gerenciamento de Usuários: Administradores podem visualizar e excluir contas de usuários (excluindo outros administradores).
- Linguagem: Java 17+
- Interface Gráfica: JavaFX
- Gerenciador de Dependências: Maven
- Banco de Dados: MySQL
- Comunicação: Java Sockets (Arquitetura Cliente-Servidor TCP)
- Autenticação: JSON Web Token (JWT) para gerenciamento de sessão
Siga os passos abaixo para configurar e executar o projeto localmente.
- Java (JDK 17 ou superior)
- Apache Maven
- MySQL Server (rodando na porta padrão 3306)
git clone https://github.com/nicolassmotta/java-client-server-app.git
cd java-client-server-appA. Crie o banco de dados: Entre no seu cliente MySQL e execute:
CREATE DATABASE voteflix_db;B. Execute o Script de Criação:
Use o arquivo schema.sql (localizado dentro da pasta ProjetoSistemasDistribuidos/) para criar todas as tabelas e inserir os gêneros padrão.
# Estando na raiz do repositório (java-client-server-app)
mysql -u root -p voteflix_db < ProjetoSistemasDistribuidos/schema.sqlPara manter as senhas seguras, o projeto usa um arquivo db.properties que é ignorado pelo Git.
- Navegue até a pasta
resourcesdo servidor:cd ProjetoSistemasDistribuidos/vote-flix-servidor/src/main/resources/ - Copie o arquivo de exemplo:
cp db.properties.example db.properties
- Abra o
db.properties(comnano db.properties) e edite os camposdb.useredb.passwordcom suas credenciais do MySQL.
O servidor precisa ser iniciado primeiro.
- Abra um terminal na pasta do servidor:
# (A partir da raiz do repositório) cd ProjetoSistemasDistribuidos/vote-flix-servidor
- Compile e execute o projeto com Maven:
mvn clean install mvn javafx:run
- A interface do servidor irá abrir. Clique no botão "Iniciar Servidor".
- Abra um novo terminal (mantenha o servidor rodando).
- Navegue até a pasta do cliente:
# (A partir da raiz do repositório) cd ProjetoSistemasDistribuidos/vote-flix-cliente
- Compile e execute o projeto com Maven:
mvn clean install mvn javafx:run
- A tela de conexão aparecerá. Conecte-se (o IP é
localhoste a porta é22222), faça login (admin/admin) ou crie sua conta.