Skip to content

Lucassamuel97/admin-catalogo-de-videos-java-fc

Repository files navigation

🎬 Microserviço: Admin do Catálogo de Vídeos com Java

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.

📌 Índice

📖 Sobre o Projeto

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.

🛠️ Ferramentas Necessárias

Antes de começar, certifique-se de ter as seguintes ferramentas instaladas em seu ambiente:

🚀 Tecnologias Utilizadas

A aplicação foi desenvolvida utilizando as seguintes tecnologias e padrões:

🔹 Tecnologias

  • 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.

🔹 Ferramentas e Testes

  • 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.

🔹 Padrões de Arquitetura

⚙️ Como Executar

  1. Clone o repositório:
     git clone https://github.com/Lucassamuel97/admin-catalogo-de-videos-java-fc
  2. Acesse a pasta do projeto:
    cd admin-catalogo-de-videos-java-fc
  3. Crie o .env através do .env.example e adicione suas credenciais, tambem coloque em sandbox/.env.local
    GOOGLE_CLOUD_CREDENTIALS=
    GOOGLE_CLOUD_PROJECT=
  4. Execute o container para subir o rabbitMQ e o Mysql e KeyCloak:
    cd sandbox
    ./run.sh
  5. Executar as migrações com Flyway
    ./gradlew flywayMigrate
  6. Execute a aplicação após os containers de Serviços sestarem ativos:
    cd sandbox/app
    docker compose --profile app up -d

    Obs.: Caso necessite rebuildar a imagem de sua aplicação é necessário um comando adicional:

    docker compose build --no-cache app
    
  7. Parando os containers (Para encerrar os containers, basta executar o comando):
    docker compose --profile app stop
    

🛡️ Configuração do Keycloak

O Keycloak é utilizado para gerenciar autenticação e autorização no sistema. Siga os passos abaixo para configurá-lo corretamente:

1️⃣ Subir o container e acessar a interface do Keycloak

Execute o comando:

   cd sandbox/services/
   docker-compose up -d

Após subir o container, acesse o painel de administração do Keycloak:

http://localhost:8443

Faça login com as credenciais padrão:

  • Usuário: admin
  • Senha: admin

2️⃣ Criar um Realm

  1. Vá para Admin Console > "Create Realm"
  2. Nomeie o realm como fc3-codeflix

3️⃣ Criar o Client

  1. Vá para Clients > "Create"
  2. Client ID: fc3-admin-catalogo-de-videos
  3. Client authentication: ON
  4. Confidential: ON

4️⃣ Criar Role, Grupo e Usuário

  1. Role: catalogo-admin
  2. Grupo: catalogo-admin (associado à Role)
  3. Usuário: myuser (senha: 123456, associado ao grupo catalogo-admin)

📚 Referencial Teórico

✉️ Contato

Caso tenha dúvidas ou sugestões, entre em contato:

📧 Email: lukassamuka88@gmail.com
🔗 LinkedIn: Lucas Samuel Pereira Godoy

Releases

No releases published

Packages

No packages published

Languages