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.shAlternativamente, você pode executar manualmente:
# Build manual
mvn clean package
# Execução manual
mvn spring-boot:runA 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