Skip to content

joaopauloaramuni/laboratorio-de-desenvolvimento-de-software

Repository files navigation


pucminas


Repo Laboratório de Desenvolvimento de Software

Java Maven Spring Boot Thymeleaf GitHub repo size GitHub directory file count GitHub stars GitHub forks GitHub language count GitHub license GitHub commit activity GitHub last commit Views Counter

Disciplina do curso de Engenharia de Software da PUC Minas

  • 2°Sem 2024
  • 1°Sem 2025
  • 2°Sem 2025
  • 1°Sem 2026

Sumário:

Links úteis:

Calendário Acadêmico
📚 Referências gerais
📌 Conceituação de Projeto de Software
🏛️ Arquitetura de Software
🗿 Monólitos vs Microsserviços
🧩 C4 Model e Structurizr
🖼️ Modelagem Estrutural e Comportamental
📐 Padrões de Projeto
✔️ Qualidade de Projeto

📖 Periódicos científicos

🛠️ Ferramentas de desenho e diagramas

🛠️ IDEs e Ferramentas
⚙️ Ambientes de desenvolvimento para produtividade e depuração

IDE (Ambiente de Desenvolvimento Integrado) e editores especializados ajudam a escrever, depurar e manter código com mais eficiência. Ferramentas como IntelliJ IDEA, VS Code e Cursor oferecem recursos como autocompletar, depuração visual, integração com Git, suporte a frameworks como Spring e muito mais.


🎓 Como obter o IntelliJ IDEA Ultimate gratuitamente com o GitHub Student Developer Pack

Ao se cadastrar no GitHub Student Developer Pack, você garante acesso gratuito à versão Ultimate das ferramentas da JetBrains, como o IntelliJ IDEA Ultimate 🧠💻. Essa é uma excelente oportunidade para utilizar recursos avançados de desenvolvimento — tudo sem custo para estudantes! 🚀

✅ Passo a passo:

1️⃣ Adicione seu e-mail institucional da PUC Minas (terminado em @sga.pucminas.br) como e-mail secundário na sua conta do GitHub em https://github.com/settings/emails
2️⃣ Acesse a caixa de entrada do e-mail e clique no link de confirmação enviado pelo GitHub.
3️⃣ Ao acessar o GitHub Student Developer Pack, permita que o navegador compartilhe sua localização atual 🌍.
4️⃣ Selecione "PUC Minas" como sua instituição, envie um print da sua carteirinha digital do app PUC Mobile ou um comprovante de matrícula recente como forma de verificação. Depois, aguarde até 2 dias úteis para que o selo GitHub Pro 🏅 seja ativado na sua conta.
5️⃣ Acesse: https://www.jetbrains.com/shop/eform/students
 ➡ Vá até a aba GitHub e clique em "Authorize with GitHub" 🔑.
6️⃣ Instale o IntelliJ IDEA e, ao abrir o programa, vá em "Ativar licença". Escolha a opção "Log in with GitHub", faça login com sua conta GitHub (que já possui o selo GitHub Pro 🏅 e que você autorizou previamente no site da JetBrains — passo 5), e a licença Ultimate será ativada automaticamente 🎉.

🏁 Pronto! Agora você pode aproveitar todos os benefícios do GitHub Pro 🏅, incluindo:

  • Acesso gratuito às ferramentas profissionais da JetBrains, como o IntelliJ IDEA Ultimate 🧠💻
  • GitHub Copilot com sugestões inteligentes de código (com testes gratuitos por tempo limitado) 🤖
  • Repositórios privados ilimitados 🔒
  • Insights avançados de contribuições, métricas e estatísticas dos seus projetos 📊
  • Ferramentas de CI/CD integradas com GitHub Actions ⚙️
  • Integrações com dezenas de serviços e ferramentas educacionais 🧩

Esses recursos ajudam a elevar seu aprendizado, organizar seus projetos e turbinar sua produtividade como desenvolvedor 💼🚀

🔗 Confira todos os detalhes do plano GitHub Pro para estudantes aqui:


📚 Documentação oficial
🧾 Fontes confiáveis e completas sobre a linguagem Java e seu ecossistema

A documentação oficial é a principal referência para aprender, consultar funcionalidades e entender o comportamento da linguagem Java e suas bibliotecas padrão. Essencial tanto para iniciantes quanto para desenvolvedores experientes.


☕ Java e Spring
🔧 Frameworks e ferramentas modernas para desenvolvimento backend com Java

O ecossistema Spring oferece suporte completo para criação de aplicações Java robustas, modulares e escaláveis. O Spring Boot, em especial, simplifica a configuração e o desenvolvimento de APIs RESTful, facilitando a integração com bancos de dados, autenticação, mensageria, entre outros.

Java SE 17
Spring Boot

🎨 Frameworks de interface
💻 Estilização e Componentes de UI para Aplicações Web em Java

Ao desenvolver aplicações web em Java, a camada de apresentação é fundamental para garantir uma boa experiência do usuário.
Frameworks e bibliotecas de frontend auxiliam na criação de interfaces modernas, responsivas e acessíveis, podendo ser integrados a tecnologias como JSF, Thymeleaf ou APIs REST.

🌐 Ecossistema Java (server-side)
  • Thymeleaf — Template engine moderna, muito usada com Spring MVC, que facilita renderização de páginas dinâmicas no servidor.
  • PrimeFaces — Framework rico em componentes UI voltado para aplicações Java Server Faces (JSF).
  • Vaadin — Framework Java para criação de UIs modernas e responsivas, com componentes prontos e integração nativa com Spring.
⚛️ Ecossistema JavaScript (frontend SPA integrado a REST/GraphQL)
  • Svelte — Framework frontend reativo que compila componentes em JavaScript otimizado, com alta performance e sintaxe simples.
  • Astro — Framework de sites estáticos e híbridos, baseado na arquitetura de “ilhas”, focado em velocidade e SEO, podendo integrar React, Vue ou Svelte.
📦 Bibliotecas de Componentes React
  • Mantine — Componentes React com foco em usabilidade e design consistente.
  • Radix-UI — Componentes de baixo nível, acessíveis e altamente customizáveis para React.
  • Material UI — Implementação do Google Material Design para React.
  • Chakra UI — Componentes React com foco em acessibilidade e design system.
  • Ant Design — Sistema de design robusto para aplicações corporativas.
  • Shadcn UI — Componentes React prontos e acessíveis, estilizados com Tailwind CSS, integráveis em qualquer projeto React.
🎨 Estilização CSS e utilitários
  • Tailwind CSS — Framework de utilitários CSS altamente customizável, usado para construir interfaces modernas e responsivas de forma ágil.
  • daisyUI — Extensão de Tailwind com componentes prontos e temas.
  • Bootstrap — Framework CSS mais popular, com grid responsivo, componentes prontos e suporte a JS.
  • Bulma — Framework CSS moderno baseado em Flexbox, leve e sem dependência de JavaScript.
🖱️ 3D Interativo e animações baseadas em cursor
  • Spline — Plataforma de design 3D para web que permite criar cenas interativas, animações e objetos 3D exportáveis para projetos React, HTML e WebGL. Ideal para interfaces modernas com elementos que respondem ao movimento do mouse, scroll e eventos do usuário.
  • Three.js — Biblioteca JavaScript para renderização 3D no navegador via WebGL. Muito usada para criar efeitos avançados onde objetos reagem ao movimento do cursor.
  • React Three Fiber — Renderer React para Three.js, facilitando a criação de experiências 3D declarativas que interagem com mouse e eventos da página.
  • Framer Motion — Biblioteca de animações para React que permite criar efeitos fluidos, incluindo elementos que seguem o cursor, parallax e microinterações.
  • Motion — Biblioteca moderna de animações para JavaScript e React focada em performance e simplicidade. Permite criar transições fluidas, animações baseadas em scroll, gestos e efeitos que respondem ao movimento do cursor.
  • GSAP (GreenSock) — Biblioteca poderosa de animação JavaScript, muito utilizada para criar efeitos sofisticados como cursor personalizado, parallax avançado e animações baseadas na posição do mouse.
  • React Parallax Tilt — Componente React simples para criar efeito de inclinação 3D que responde ao movimento do cursor.
🌐 Web Components
  • Shoelace — Biblioteca de componentes baseada em Web Components, independente de framework, altamente customizável.

🌐 Clientes REST
🔌 Ferramentas para testar, consumir e depurar APIs REST

Clientes REST permitem enviar requisições HTTP (GET, POST, PUT, DELETE), testar endpoints, autenticações e visualizar respostas com facilidade.


🐳 Docker, Deploy e Cloud ☁️
🚢 Empacotamento e publicação de aplicações em ambientes em nuvem

Ferramentas como Docker, Fly.io, Vercel, Render, WebDock e Heroku permitem criar ambientes isolados, implantar APIs e serviços em nuvem de forma simples, escalável e muitas vezes gratuita para projetos educacionais.

  • 🐳 Docker Desktop
  • 🐳 Docker Hub
  • ☁️ Fly.io
  • ☁️ Heroku
  • ☁️ Vercel
  • ☁️ Render
  • ☁️ WebDock
    • Oferece acesso via SFTP com suporte a upload por arrastar e soltar, facilitando o envio de arquivos diretamente do seu computador.
    • Mantém o servidor ativo mesmo durante períodos de inatividade, ao contrário de plataformas como o Render, que desligam instâncias ociosas.
    • O WebDock possui parceria com a PUC Minas!

🗃️ Bancos de dados
💾 Sistemas de gerenciamento de dados relacionais e NoSQL

Essas ferramentas são fundamentais para persistência de dados em aplicações Java. MongoDB (NoSQL) e PostgreSQL (relacional) são amplamente utilizados em projetos web modernos.

🍃 MongoDB
🐘 PostgreSQL
📜 Scripts
🧩 Modelagem de dados

📊 Visualização de Dados com Bibliotecas JavaScript
📈 Recharts — Gráficos para React

Recharts é uma biblioteca construída sobre D3.js, projetada especificamente para aplicações React. Possui componentes reutilizáveis, animações, tooltips e grande flexibilidade para dashboards e visualizações de dados.

📊 Chart.js — Gráficos Simples e Poderosos

Chart.js é uma das bibliotecas mais populares para gráficos em JavaScript. Fácil de usar, leve e com suporte a múltiplos tipos de visualização. Pode ser utilizada com React via wrappers como react-chartjs-2.

🗺️ Apache ECharts — Visualizações Avançadas

ECharts é uma poderosa biblioteca desenvolvida pela Apache Foundation, com suporte a visualizações complexas como mapas, gráficos interativos, heatmaps e diagramas avançados. Excelente para dashboards profissionais.


📊 Observabilidade
📈 Monitoramento de métricas e visualização de desempenho

Ferramentas como Grafana e Prometheus permitem acompanhar o comportamento da aplicação, uso de recursos e definir alertas para garantir estabilidade em ambientes produtivos.


🧪 Testes e qualidade
✅ Testes automatizados e validação de código em aplicações Java

Frameworks como JUnit e Mockito são essenciais para escrever testes unitários e mocks. Selenium e Selenide permitem testes automatizados em navegadores, garantindo qualidade e confiança em cada entrega.

Frameworks de Teste
Mocks e Testes Automatizados

💰 Pagamentos e APIs Financeiras
💳 Integração de sistemas Java com plataformas de pagamento

Plataformas como Mercado Pago e Stripe oferecem SDKs para Java que facilitam pagamentos online, geração de cobranças, webhooks e checkout transparente.


💬 Integração com WhatsApp e SMS
🔗 Envio e automação de mensagens via APIs e bibliotecas

Existem várias bibliotecas e APIs para integração com mensagens — algumas oficiais, oferecidas pela Meta (WhatsApp Business Platform) e por parceiros como Twilio, 360Dialog e MessageBird, e outras não oficiais, baseadas no WhatsApp Web.

Abaixo estão as principais opções, com foco em bots, automação e integração com sistemas Java, Python ou Node.js.

🧰 APIs Oficiais (Meta)
🧩 Bibliotecas e SDKs (não oficiais)
  • whatsapp-web.js — API não oficial para automação do WhatsApp Web.
  • Baileys — Biblioteca JavaScript leve e flexível, usada em bots e integrações com suporte a múltiplas conexões.
  • Venom Bot — Framework completo em Node.js para criação de bots, com suporte a mensagens, grupos e QR Code.
  • open-wa/wa-automate — Biblioteca avançada com suporte a automações complexas e API REST opcional.
  • WPPConnect — Projeto brasileiro, com API REST pronta e painel de administração para WhatsApp bots.
  • go-whatsapp — Implementação em Go para automação e bots com WhatsApp Web.
⚙️ Recursos comuns
  • Envio e recebimento de mensagens (texto, imagem, áudio, vídeo, PDF, etc.).
  • Leitura e envio de status, contatos e grupos.
  • Autenticação por QR Code (não oficiais) ou token (oficiais).
  • Webhooks para receber mensagens em tempo real.
  • Integração com bancos de dados, chatbots e APIs externas.

📘 APIs RESTful e Documentação
📑 Design, documentação e testes de APIs com Swagger

Swagger facilita a criação de APIs REST bem documentadas, com suporte a testes via interface gráfica e geração automática de contratos e documentação OpenAPI para serviços Java.


🧹 Análise de código

Ferramentas para análise estatística de código, detecção de code smells, métricas de qualidade e identificação de más práticas de programação.

  • PMD: Ferramenta que verifica problemas comuns em código Java, como variáveis não utilizadas, duplicação de código e estilos de codificação.
  • SonarQube: Plataforma para análise contínua de qualidade de código, cobrindo múltiplas linguagens. Avalia bugs, vulnerabilidades e cobertura de testes.
  • Qodana: Plataforma de análise estática de código desenvolvida pela JetBrains. Integra-se com IDEs, CI/CD e repositórios para detectar code smells, vulnerabilidades de segurança e violações de boas práticas, com suporte a múltiplas linguagens como Java, Kotlin, PHP, Python e JavaScript.
  • JNose: Ferramenta focada na identificação de test smells e design smells em código Java. Ajuda na compreensão de problemas relacionados à testabilidade e manutenibilidade.
  • Code Climate: Ferramenta de análise contínua de qualidade de código que gera métricas como complexidade ciclomática, duplicação, cobertura de testes e code smells. Suporta diversas linguagens e se integra com GitHub, GitLab e outros.
  • CodeQL: Plataforma de análise de segurança e qualidade de código da GitHub, que permite executar consultas para detectar vulnerabilidades, bugs e más práticas em diversos tipos de código fonte.
  • CK: Ferramenta de linha de comando para análise estática de código Java. Extrai métricas como CBO, LCOM, WMC, RFC, DIT, NOM e LOC, úteis para avaliar a complexidade e a qualidade do código.

📊 Tendências e pesquisas
📈 Relatórios e estudos sobre o mercado de tecnologia e comportamento de desenvolvedores

Relatórios anuais e pesquisas globais ajudam a entender as principais linguagens, ferramentas, salários, preferências e tendências no mercado de desenvolvimento de software. São ótimos para orientar decisões de carreira e identificar habilidades em alta.


🗣️ Apresentação de laboratório:

🧑‍🤝‍🧑 Exemplo de slides para apresentação em grupo:

💻 Apresentação utilizando Svelte:


📄 README de projeto:

Esta seção reúne um template construído por mim e exemplos reais de READMEs para ajudar você a estruturar, documentar e apresentar seus projetos de forma clara, organizada e profissional.

📕 Template de README de projeto:
📘 Exemplos de README de projeto:

🎨 Design System:

O Design System é um conjunto de padrões, regras e componentes reutilizáveis que definem a identidade visual e o comportamento da interface de um sistema. Ele garante consistência entre telas, facilita o desenvolvimento e melhora a experiência do usuário ao padronizar cores, tipografia, botões, inputs e demais elementos visuais.

🧑‍🤝‍🧑 Exemplo de Design System:


📊 Kanban e Gestão de Issues no GitHub:

  • 💻 Utilize a aba Projects do GitHub para criar um quadro Kanban que organize todas as tarefas do projeto em To Do, In Progress e Done.
  • 🛠 É possível criar colunas customizadas para refletir o fluxo de trabalho da equipe.
  • 🆕 Crie issues para cada tarefa, bug ou melhoria, e vincule-as às colunas do Kanban.
  • 🏷 Use labels, milestones e assignees para organizar e priorizar as tarefas.
  • 🔗 Documentação oficial GitHub Projects: GitHub Projects
  • 🔗 Guia completo para criar e gerenciar issues: GitHub Issues

🔄 Pipeline de Testes e CI-CD com GitHub Actions:

  • 💻 Configure workflows no GitHub Actions para automatizar build, testes e deploy do projeto.
  • 📂 Crie workflows no diretório .github/workflows para definir os processos de CI/CD do seu projeto.
  • 🔗 Documentação oficial GitHub Actions: GitHub Actions
  • 🏗 Exemplos de workflows prontos: GitHub Actions Examples

🖼️ Imagens sugeridas para telas de Login:

Opção 1 Opção 2
Fonte: Sistema de Atividades Práticas Curriculares (APC) Brasão PUC Minas fundo azul
Opção 3 Opção 4
Fonte: Fundo Teams ICEI 1 Fonte: Fundo Teams ICEI 2
Opção 5 Opção 6
Foto 1: Campus Coração Eucarístico Foto 2: Campus Coração Eucarístico
Opção 7 Opção 8
Foto 3: Campus Coração Eucarístico Foto 4: Campus Coração Eucarístico
Opção 9 Opção 10
Foto 5: Campus Coração Eucarístico Foto 6: Campus Coração Eucarístico
Opção 11 Opção 12
Foto 9 - Fonte: Canvas - PUC Minas Foto 10: Igreja e Presépio PUC Minas
Opção 13 Opção 14
Foto 7: Presépio PUC Minas Vertical Foto 8: Campus Coração Eucarístico Vertical
Opção 15 Opção 16
Foto 7: Campus Coração Eucarístico Vertical Foto 8: Campus Coração Eucarístico Vertical
🧩 Exemplo de uso da imagem em um sistema:
Exemplo 1 de Tela de Login
Projeto: SecureLoginPUC_2
Exemplo 2 de Tela de Login
Sistema: Sistema de Atividades Práticas Curriculares (APC)
Exemplo 3 de Tela de Login
Sistema: Ferramenta de Inserção de Conteúdo (FIC)
🎨 Logos:

Clique aqui para baixar o pacote completo (.zip) com todas as logos do curso de Engenharia de Software e os brasões oficiais da PUC Minas, incluindo a nova identidade visual lançada em 2025.

Opção 1 Opção 2 Opção 3 Opção 4
Novo Brasão PUC Minas 2025 Brasão PUC Minas preto e branco Brasão PUC Minas fundo transparente Logo PUC Mobile
Opção 5 Opção 6 Opção 7
Logo Engenharia de Software Vertical Logo Engenharia de Software Vertical Negativo Logo Engenharia de Software Colorido
Opção 8 Opção 9
Logo Engenharia de Software Horizontal Logo Engenharia de Software Horizontal Negativo

🎥 Vídeos de fundo sugeridos:

🌆 Time Lapse - PUC Minas Coração Eucarístico

Um vídeo acelerado (time lapse) ideal para ser utilizado como plano de fundo na tela de login do Sistema de Moeda Estudantil (ou, alternativamente, AraCoin, CampusCoin ou PUC Pay).
A animação em time lapse mostra o movimento do campus e cria uma ambientação moderna e institucional, substituindo fundos estáticos em branco ou preto, trazendo vida e identidade visual à interface.

🚶‍♂️ Time Lapse – Pessoas andando na calçada

Um vídeo acelerado (time lapse) mostrando o fluxo de pessoas caminhando pela calçada.
Transmite movimento e energia, sendo ideal para telas de autenticação ou áreas de espera no sistema.

🏓 Pessoas jogando ping pong na praça

Um vídeo em velocidade normal mostrando um grupo de estudantes jogando ping pong em uma praça.
Traz uma sensação de convivência, leveza e ambiente descontraído — ideal para planos de fundo mais sutis e humanos.

🌟 Sites para baixar vídeos de fundo
  • 1️⃣ Pexels Videos

    • Muitos vídeos gratuitos em alta resolução.
    • Licença livre para uso pessoal e comercial.
    • Categorias: time-lapse, natureza, pessoas, tecnologia.
  • 2️⃣ Pixabay Videos

    • Biblioteca vasta de vídeos gratuitos.
    • Não é necessário atribuir créditos, mas recomendado.
    • Bom para fundos de interface, cenários urbanos e animações suaves.
  • 3️⃣ Videvo

    • Mistura de vídeos gratuitos e premium.
    • Alguns vídeos exigem atribuição, mas muitos podem ser usados livremente.
    • Possui loops ideais para telas de fundo.
  • 4️⃣ Coverr

    • Especializado em vídeos de fundo para sites e aplicativos.
    • Downloads gratuitos e sem necessidade de atribuição.
    • Ótimo para vídeos curtos de pessoas, cidades e tecnologia.
  • 5️⃣ Mixkit

    • Vídeos HD gratuitos, incluindo time-lapse, negócios e vida urbana.
    • Ideais para login screens, banners ou apresentações.

📝 Portfólios:

Exemplos de portfólio profissional:

João Paulo Aramuni (Professor do curso de Engenharia de Software da PUC Minas):
Luca Azalim (Aluno do curso de Engenharia de Software da PUC Minas - Campus Lourdes):
Pedro Braga (Aluno do curso de Engenharia de Software da PUC Minas - Campus Lourdes):
Davi Mendes (Aluno do curso de Engenharia de Software da PUC Minas - Campus Coração Eucarístico):
João Marcelo Carvalho (Aluno do curso de Engenharia de Software da PUC Minas - Campus Coração Eucarístico):
Flávio Júnior (Aluno do curso de Engenharia de Software da PUC Minas - Campus Coração Eucarístico):
Gabriel Chagas Lage (Aluno do curso de Engenharia de Software da PUC Minas - Campus Coração Eucarístico):
Guilherme Vieira (Aluno do curso de Engenharia de Software da PUC Minas - Campus Coração Eucarístico):
Gabriel Victor (Aluno do curso de Engenharia de Software da PUC Minas - Campus Lourdes):
Raphael Sena (Aluno do curso de Engenharia de Software da PUC Minas - Campus Lourdes):
Victor Gabriel Cruz Pereira (Aluno do curso de Engenharia de Software da PUC Minas - Campus Lourdes):
Mateus Nascimento
Guilherme Tadeu:
Sat Naing:
Henry Heffernan:
Josh W. Comeau:
Bohr.io
Template para Terminal:
📚 E-book: Building an Effective Dev Portfolio
👤 Outros perfis:

🎨 Figma

🖌️ Design de interfaces e prototipagem com Figma

O Figma é uma das principais ferramentas de design de interfaces e prototipagem colaborativa do mercado. Permite criar layouts, fluxos de navegação e componentes reutilizáveis de forma integrada entre designers e desenvolvedores. Com recursos de colaboração em tempo real, facilita a iteração rápida e a validação de ideias, sendo amplamente adotado por equipes ágeis e projetos orientados à experiência do usuário (UX/UI).

👨‍🏫 Figma - Education
🎨 Figma - Templates
🗂️ Figma - Templates gerais
💻 Figma - Portfólios Dev
☁️ Figma - Templates AWS / Arquitetura de sistemas
🔁 Figma - Diagramas de Classe
↔️ Figma - Diagramas de Estado
➡️ Figma - Diagramas de Sequência
💬 Figma - Diagramas de Comunicação
🌐 Figma - APIs e Microserviços
👤 Figma - User Persona Template
🧱 Figma - C4 Model (Arquitetura de Software)

🎨 Templates e exemplos de Diagramas de Pacotes (UML)

📌 Ferramentas com modelos prontos
📖 Tutoriais e guias explicativos
📚 Exemplos de referência

💬 Templates e exemplos de Diagramas de Comunicação (UML)

📌 Ferramentas com modelos prontos
📖 Tutoriais e guias explicativos
📚 Exemplos de referência

📐 PlantUML – Referências e recursos oficiais

📚 PlantUML Standard Library
🪪 Logos para PlantUML
☁️ AWS Icons para PlantUML
🧩 C4 PlantUML

✍️ Fonts:

🖋️ Fontes para desenvolvimento e design de portfólios

As fontes monoespaçadas e estilizadas desempenham um papel essencial no desenvolvimento de software, design e prototipagem. Elas impactam diretamente a legibilidade do código, a produtividade e até a estética de interfaces. Fontes como FiraCode, JetBrains Mono e Cascadia Code oferecem recursos como ligaduras, clareza visual e otimização para telas digitais. Além de melhorar a experiência do programador, também são amplamente utilizadas em projetos de identidade visual, portfólios, prototipagem e apresentações, unindo funcionalidade e estilo.

FiraCode
JetBrains Mono
Cascadia Code
Ubuntu Mono
IBM Plex Mono
Hack
Orbitron
Source Code Pro
Quantico

🐳 Docker:

▶️ Docker - Vídeo tutorial
🛠️ Comandos Docker úteis:
docker --version

docker build -t minha-aplicacao .
docker build --platform linux/amd64 -t minha-aplicacao .

docker images

docker run -d -p 8080:8080 minha-aplicacao
docker run --platform linux/amd64 -d -p 8080:8080 minha-aplicacao

docker ps

docker stats
🔎 Veja mais sobre docker:
Comandos Docker: Guia rápido
Comando Descrição
docker run Executa um novo contêiner a partir de uma imagem.
docker ps Lista os contêineres em execução.
docker ps -a Lista todos os contêineres, incluindo os que não estão em execução.
docker images Lista todas as imagens locais disponíveis.
docker rmi Remove uma ou mais imagens.
docker rm Remove um ou mais contêineres.
docker build Cria uma nova imagem a partir de um Dockerfile.
docker pull Baixa uma imagem do Docker Hub ou de um repositório remoto.
docker push Envia uma imagem para um repositório remoto no Docker Hub.
docker exec Executa um comando em um contêiner em execução.
docker logs Exibe os logs de um contêiner.
docker network Gerencia redes Docker.
docker volume Gerencia volumes para persistência de dados.
docker-compose up Inicia e orquestra múltiplos contêineres definidos no docker-compose.yml.
docker-compose down Para e remove os contêineres, redes e volumes definidos no docker-compose.yml.
docker stats Exibe estatísticas em tempo real sobre o uso de recursos de contêineres em execução.
docker inspect Mostra informações detalhadas sobre um contêiner ou imagem.
docker start Inicia um contêiner que foi parado.
docker stop Para um contêiner em execução.
docker restart Reinicia um contêiner.
docker pause Pausa um ou mais contêineres em execução.
docker unpause Retoma um ou mais contêineres que foram pausados.
docker commit Cria uma nova imagem a partir das alterações em um contêiner.
docker tag Adiciona uma nova tag a uma imagem existente.
docker login Faz login em um repositório Docker.
docker logout Faz logout de um repositório Docker.
docker search Busca imagens no Docker Hub.
docker pull Baixa uma imagem do Docker Hub ou de um repositório remoto.
docker cp Copia arquivos ou diretórios entre o sistema de arquivos do contêiner e o host.
docker volume create Cria um novo volume Docker.
docker volume rm Remove um ou mais volumes.
docker network create Cria uma nova rede Docker.
docker network rm Remove uma ou mais redes.
docker network ls Lista todas as redes Docker.
docker history Mostra o histórico de camadas de uma imagem.

💬 Exemplo de comentário em Code Review

Obs: Para iniciar um code review, você precisa abrir um pull request (PR) no repositório. O PR é a solicitação para mesclar suas alterações no branch principal. Depois de aberto, você e seus colegas podem navegar pelas mudanças, clicar nas linhas de código para adicionar comentários e discutir melhorias diretamente no PR.


🔍 Sugestão de melhoria

A classe UserService atualmente contém lógica de acesso direto ao banco de dados usando EntityManager. Para seguir o princípio da separação de responsabilidades e melhorar a testabilidade do código, considere extrair essa lógica para um DAO (UserDAO).


Benefícios da mudança
  • Redução do acoplamento entre a camada de serviço e a persistência.
  • Facilidade para substituir a implementação do DAO futuramente (por exemplo, ao trocar Hibernate por outra tecnologia).
  • Facilidade para criar mocks e testar a lógica de negócio isoladamente.

📌 Sugestão de implementação
  • Criar uma classe UserDAO com métodos como findById(Long id) e save(User user).
  • Injetar essa classe no UserService.
  • Mover a lógica de persistência para o DAO.

📚 Link oficial da documentação do GitHub

🏗️ Roadmap Code Review

Um roadmap é um guia visual que apresenta etapas, habilidades ou conhecimentos necessários para atingir um objetivo específico. Ele ajuda a organizar o aprendizado ou desenvolvimento ao longo do tempo, mostrando caminhos recomendados e prioridades.

Veja também:


🏛️ Entendendo a Arquitetura de um App Spring Boot

A arquitetura de um app Spring Boot é como um ecossistema bem orquestrado, onde cada componente tem um papel essencial para garantir a escalabilidade, manutenibilidade e organização do sistema.

🔍 Entender a fundo cada uma dessas peças é o que diferencia um bom desenvolvedor!

Confira abaixo o papel fundamental de cada componente ilustrado no GIF:


🍃 Arquitetura Spring Boot
arquitetura
📚 Referências

🧩 Componentes da Arquitetura Spring Boot
Componente Descrição
🧭 Controller É a primeira linha de contato, recebendo as requisições HTTP e devolvendo as respostas. Atua como a interface da aplicação.
🧠 Service Contém as regras de negócio da aplicação. É onde a lógica central é executada, separada da interface e da persistência.
💾 Repository Responsável pela comunicação com o banco de dados, abstraindo as operações de persistência e consulta.
🔗 JPA (Java Persistence API) Atua como uma ponte entre objetos Java e tabelas do banco de dados, facilitando o mapeamento e a persistência dos dados.
🌐 REST Define os padrões de comunicação via HTTP, essenciais para a construção de APIs modernas e interoperáveis.
📦 Entity Representa uma tabela do banco de dados como um objeto Java. Base para o mapeamento e a persistência dos dados.
🧪 Testes Garante que todas as funcionalidades funcionem como esperado. Pilar para a qualidade e robustez do software.
📤 DTOs (Data Transfer Objects) Objetos leves usados para transportar dados entre camadas, evitando o envio de informações desnecessárias.
📚 Swagger Ferramenta que gera uma documentação interativa da API, facilitando o entendimento e uso por outros desenvolvedores.
🔐 Security Cuida da autenticação (quem você é) e autorização (o que você pode fazer), protegendo os recursos da aplicação.
⚙️ Configuration Centraliza as configurações da aplicação, como portas, credenciais e parâmetros de comportamento.
🚨 Exception Handler Centraliza o tratamento de erros, permitindo respostas consistentes e amigáveis em caso de falhas.

✅ Conhecer a arquitetura do Spring Boot ajuda a escrever sistemas mais limpos, coesos e testáveis. Cada camada tem sua função e respeitar essa separação é o primeiro passo para a excelência no desenvolvimento backend.


🚀 Domine o Spring Boot em 2025

O Spring Boot continua sendo uma das ferramentas mais poderosas e utilizadas por desenvolvedores Java. Sua proposta de simplificar o desenvolvimento de aplicações robustas e prontas para produção o tornou o padrão de fato no desenvolvimento backend moderno.

Em 2025, dominar o Spring Boot é essencial para quem deseja se destacar como desenvolvedor backend. Com a crescente adoção de arquiteturas de microserviços e práticas nativas de nuvem, a demanda por profissionais especializados nesse ecossistema só aumenta.

O roadmap abaixo vai te guiar desde os conceitos fundamentais até os tópicos mais avançados, combinando teoria e prática de forma progressiva. Você entenderá como o ecossistema evoluiu — com recursos como compilação nativa, melhorias de performance e integração com a nuvem — e como aplicar esses conhecimentos no desenvolvimento de aplicações reais.


🍃 Roadmap Spring Boot

Um roadmap é um guia visual que apresenta etapas, habilidades ou conhecimentos necessários para atingir um objetivo específico. Ele ajuda a organizar o aprendizado ou desenvolvimento ao longo do tempo, mostrando caminhos recomendados e prioridades.

roadmap
📚 Referências

pucminas

Releases

No releases published

Sponsor this project

 

Packages

 
 
 

Contributors