https://github.com/nicolassmotta/java-client-server-app
Projeto feito durante a disciplina de sistemas distribuídos.
https://github.com/nicolassmotta/java-client-server-app
client-server crud distributed-systems java javafx jdbc jwt maven mysql sockets
Last synced: 3 months ago
JSON representation
Projeto feito durante a disciplina de sistemas distribuídos.
- Host: GitHub
- URL: https://github.com/nicolassmotta/java-client-server-app
- Owner: nicolassmotta
- Created: 2025-11-04T19:30:47.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-11-20T06:18:09.000Z (8 months ago)
- Last Synced: 2025-11-20T08:21:34.540Z (8 months ago)
- Topics: client-server, crud, distributed-systems, java, javafx, jdbc, jwt, maven, mysql, sockets
- Language: Java
- Homepage:
- Size: 135 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
-----
# VoteFlix: Um App Java Cliente-Servidor de Avaliação de Filmes
## 📖 Visão Geral
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.
## ✨ Funcionalidades
A aplicação é dividida em dois painéis principais:
### 👤 Painel do Usuário
* **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.
### 🛠️ Painel Administrativo
* **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).
## 🚀 Tecnologias Utilizadas
* **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
## 🔧 Como Executar
Siga os passos abaixo para configurar e executar o projeto localmente.
### Pré-requisitos
* Java (JDK 17 ou superior)
* Apache Maven
* MySQL Server (rodando na porta padrão 3306)
### 1\. Clonar o Repositório
```bash
git clone https://github.com/nicolassmotta/java-client-server-app.git
cd java-client-server-app
```
### 2\. Configurar o Banco de Dados
**A. Crie o banco de dados:**
Entre no seu cliente MySQL e execute:
```sql
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.
```bash
# Estando na raiz do repositório (java-client-server-app)
mysql -u root -p voteflix_db < ProjetoSistemasDistribuidos/schema.sql
```
### 3\. Configurar as Credenciais do Banco
Para manter as senhas seguras, o projeto usa um arquivo `db.properties` que é ignorado pelo Git.
1. Navegue até a pasta `resources` do servidor:
```bash
cd ProjetoSistemasDistribuidos/vote-flix-servidor/src/main/resources/
```
2. Copie o arquivo de exemplo:
```bash
cp db.properties.example db.properties
```
3. Abra o `db.properties` (com `nano db.properties`) e edite os campos `db.user` e `db.password` com suas credenciais do MySQL.
### 4\. Executar o Servidor
O servidor precisa ser iniciado primeiro.
1. Abra um terminal na pasta do servidor:
```bash
# (A partir da raiz do repositório)
cd ProjetoSistemasDistribuidos/vote-flix-servidor
```
2. Compile e execute o projeto com Maven:
```bash
mvn clean install
mvn javafx:run
```
3. A interface do servidor irá abrir. Clique no botão **"Iniciar Servidor"**.
### 5\. Executar o Cliente
1. Abra um **novo terminal** (mantenha o servidor rodando).
2. Navegue até a pasta do cliente:
```bash
# (A partir da raiz do repositório)
cd ProjetoSistemasDistribuidos/vote-flix-cliente
```
3. Compile e execute o projeto com Maven:
```bash
mvn clean install
mvn javafx:run
```
4. A tela de conexão aparecerá. Conecte-se (o IP é `localhost` e a porta é `22222`), faça login (admin/admin) ou crie sua conta.
-----