Este repositório contém o microserviço responsável pelo backend da administração do catálogo de vídeos.
O projeto segue os princípios da Clean Architecture, DDD, TDD e as melhores práticas de desenvolvimento.
- 📖 Sobre o Projeto
- 🛠️ Ferramentas Necessárias
- 🚀 Tecnologias Utilizadas
- ⚙️ Como Executar
- 🛡️ Configuração do Keycloak
- 📚 Referencial Teórico
- ✉️ Contato
O objetivo deste projeto é fornecer um backend escalável e bem estruturado para a administração de um catálogo de vídeos.
Ele permite a criação, edição e gerenciamento de vídeos, categorias e gêneros, utilizando uma abordagem orientada a domínio e arquitetura limpa.
Antes de começar, certifique-se de ter as seguintes ferramentas instaladas em seu ambiente:
- JDK 17 - Versão necessária para rodar a aplicação.
- Uma IDE de sua escolha (IntelliJ IDEA, Eclipse, VS Code, etc.).
- Docker - Para rodar os containers do banco de dados e mensageria.
A aplicação foi desenvolvida utilizando as seguintes tecnologias e padrões:
- Java - Linguagem de programação robusta e amplamente utilizada para backend.
- Spring Boot - Framework que simplifica a configuração e o desenvolvimento de aplicações Java.
- RabbitMQ - Mensageria baseada no protocolo AMQP para comunicação assíncrona entre serviços.
- Swagger - Ferramenta para documentação e testes de APIs RESTful.
- Flyway - Ferramenta para versionamento e migração de banco de dados.
- MySQL - Banco de dados relacional utilizado pela aplicação.
- Docker e Docker Compose - Para containerização e orquestração dos serviços.
- Keycloak - Provedor de identidade e gerenciamento de autenticação baseado em OAuth2 e OpenID Connect.
- Mockito - Framework para criação de mocks e testes unitários.
- JUnit - Framework para testes automatizados em Java.
- JaCoCo - Ferramenta para análise de cobertura de código nos testes.
- DDD (Domain-Driven Design) - Organização do código baseada no domínio do negócio.
- Notification Pattern - Substituição de exceções por notificações para melhor gerenciamento de erros e validações.
- Clean Architecture - Separação de responsabilidades para facilitar manutenção e escalabilidade.
- Test-Driven Development (TDD) - Desenvolvimento baseado em testes automatizados para garantir a confiabilidade do código.
- Clone o repositório:
git clone https://github.com/Lucassamuel97/admin-catalogo-de-videos-java-fc
- Acesse a pasta do projeto:
cd admin-catalogo-de-videos-java-fc - Crie o .env através do .env.example e adicione suas credenciais, tambem coloque em sandbox/.env.local
GOOGLE_CLOUD_CREDENTIALS= GOOGLE_CLOUD_PROJECT=
- Execute o container para subir o rabbitMQ e o Mysql e KeyCloak:
cd sandbox ./run.sh - Executar as migrações com Flyway
./gradlew flywayMigrate
- Execute a aplicação após os containers de Serviços sestarem ativos:
cd sandbox/app docker compose --profile app up -dObs.: Caso necessite rebuildar a imagem de sua aplicação é necessário um comando adicional:
docker compose build --no-cache app - Parando os containers (Para encerrar os containers, basta executar o comando):
docker compose --profile app stop
O Keycloak é utilizado para gerenciar autenticação e autorização no sistema. Siga os passos abaixo para configurá-lo corretamente:
Execute o comando:
cd sandbox/services/
docker-compose up -dApós subir o container, acesse o painel de administração do Keycloak:
Faça login com as credenciais padrão:
- Usuário:
admin - Senha:
admin
- Vá para Admin Console > "Create Realm"
- Nomeie o realm como
fc3-codeflix
- Vá para Clients > "Create"
- Client ID:
fc3-admin-catalogo-de-videos - Client authentication:
ON - Confidential:
ON
- Role:
catalogo-admin - Grupo:
catalogo-admin(associado à Role) - Usuário:
myuser(senha:123456, associado ao grupocatalogo-admin)
- FULL CYCLE - Modulo Projeto prático - Java (Back-End).
- Repositório de referência do curso: FC3 Admin Catálogo de Vídeos
Caso tenha dúvidas ou sugestões, entre em contato:
📧 Email: lukassamuka88@gmail.com
🔗 LinkedIn: Lucas Samuel Pereira Godoy