API REST para gerenciamento de catálogo de filmes e serviços de streaming, desenvolvida com Spring Boot e arquitetura moderna.
O Flix é uma plataforma que permite aos usuários descobrir filmes disponíveis em diferentes serviços de streaming. O projeto foi desenvolvido com foco em:
- Organização de Conteúdo: Categorização eficiente de filmes
- Múltiplos Serviços: Integração com diversos serviços de streaming
- Segurança: Autenticação JWT para proteção dos endpoints
- Performance: Queries otimizadas e cache para melhor desempenho
- Escalabilidade: Arquitetura preparada para crescimento
O projeto segue uma arquitetura em camadas:
src/main/java/dev/flix/
├── config/ # Configurações do Spring e Security
├── controller/ # Controllers REST
├── entity/ # Entidades JPA
├── repository/ # Repositórios Spring Data
├── service/ # Regras de negócio
├── exception/ # Exceções customizadas
└── mapper/ # Conversão entre DTOs e entidades
- Java 17: Versão LTS com recursos modernos da linguagem
- Spring Boot 3: Framework para desenvolvimento ágil
- Spring Security: Segurança e autenticação
- Spring Data JPA: Persistência de dados
- JWT: Tokens para autenticação stateless
- Lombok: Redução de boilerplate code
- Bean Validation: Validação de dados
- PostgreSQL 15: Banco de dados relacional robusto
- Flyway: Migrations para controle do schema
- Maven: Gerenciamento de dependências e build
- JUnit 5: Testes unitários
- Mockito: Mocking para testes
- Swagger/OpenAPI: Documentação da API
- Sistema de registro e login de usuários
- Autenticação via JWT
- Proteção de rotas por perfil de usuário
- CRUD completo de categorias de filmes
- Validação de dados
- Tratamento de dependências
- Cadastro e gestão de provedores
- Associação com filmes
- Validações de integridade
- Cadastro detalhado de filmes
- Busca por múltiplos critérios
- Associação com categorias e serviços
- Sistema de avaliação
- Java 17+
- PostgreSQL 15+
- Maven 3.8+
- Curl (para testes via scripts)
O projeto inclui scripts para facilitar o build e a execução:
build.sh
: Compila o projeto e gera o arquivo JARstart.sh
: Inicia a aplicação usando o JAR gerado
- Clone o repositório
git clone [url-do-repositorio]
- Configure o banco de dados PostgreSQL no arquivo
application.properties
:
spring.datasource.url=jdbc:postgresql://localhost:5432/flix
spring.datasource.username=seu_usuario
spring.datasource.password=sua_senha
- Execute o build do projeto:
./build.sh
- Inicie a aplicação:
./start.sh
Alternativamente, você pode executar manualmente:
# Build manual
mvn clean package
# Execução manual
mvn spring-boot:run
A API estará disponível em http://localhost:8080
Para testar a API, foram disponibilizados scripts curl organizados por funcionalidade. Consulte a documentação dos scripts para mais detalhes.
- POST
/auth/register
- Registrar novo usuário - POST
/auth/login
- Login de usuário
- POST
/flix/category
- Criar categoria - GET
/flix/category
- Listar categorias - GET
/flix/category/{id}
- Buscar categoria por ID - DELETE
/flix/category/{id}
- Deletar categoria
- POST
/flix/stream-service
- Criar serviço - GET
/flix/stream-service
- Listar serviços - GET
/flix/stream-service/{id}
- Buscar serviço por ID - DELETE
/flix/stream-service/{id}
- Deletar serviço
- POST
/flix/movie
- Criar filme - GET
/flix/movie
- Listar filmes - GET
/flix/movie/{id}
- Buscar filme por ID - GET
/flix/movie/search?category={id}
- Buscar filmes por categoria - PUT
/flix/movie
- Atualizar filme - DELETE
/flix/movie/{id}
- Deletar filme
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature
) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature'
) - Push para a branch (
git push origin feature/AmazingFeature
) - Abra um Pull Request
Usamos SemVer para versionamento. Para as versões disponíveis, veja as tags neste repositório.
- Renan Lessa - Trabalho inicial
Este projeto está sob a licença MIT - veja o arquivo LICENSE para detalhes.