SINAL CAPTADO · ONLINE

João Abreu

Desenvolvedor back-end · Java e Spring Boot

Explore meus projetos, decisões técnicas e minha trajetória de aprendizado.

  • 663contribuições no último ano
  • 11repositórios públicos
  • portfolio-apiO back-end deste site em Spring Boot, para o contador de visitas e o formulário de contato.
  • algorithms-and-data-structuresMinha prática de estruturas de dados e algoritmos em Java e Python, no LeetCode e nos outros lugares onde estudo.
  • daily-learning-logO código que escrevo estudando cursos de back-end, organizado por nível e tema, com um commit por aula.
  • tutoring-management-systemPlataforma de monitoria acadêmica com aprovação de admin, sessões com vagas limitadas e lista de espera automática.
  • electronics-and-roboticsPersonal studies and hands-on experiments with electronics, Arduino, ESP32, and robotics.
  • screenmatch-quotes-javaSpring Boot REST API that serves random movie and TV show quotes from PostgreSQL to an HTML/CSS/JavaScript front end.
  • screensound-javaCommand-line music catalog: register artists and songs in PostgreSQL and fetch artist biographies from Wikipedia. Java, Spring Boot, Spring Data JPA.
  • fipe-price-lookup-javaCLI that looks up Brazilian FIPE vehicle prices for every model year at once and saves each search to JSON. Java, Spring Boot, Jackson.

SEÇÃO 01 / 07Projetos

2 CONTATOS DETECTADOS

Mais perto do centro = push mais recente

CLIQUE NO RADAR PARA UM PING

01 · Projetos

Projetos selecionados

Em desenvolvimento

Portfolio API

O back-end deste site em Spring Boot, para o contador de visitas e o formulário de contato.

Problema

Este site é estático, então contar visitas e receber as mensagens do formulário de contato exigem um servidor próprio, sem entregar os dados de quem visita para um serviço de terceiros.

Decisões técnicas

  • O esquema PostgreSQL é versionado com Flyway, e as regras também ficam no banco, com restrições CHECK em tamanhos, status e no contador de linha única.
  • Os visitantes são guardados só como um hash de 32 bytes do IP, nunca o endereço em si.
  • As mensagens de contato são salvas antes de serem enviadas, como uma outbox com status, tentativas e horário da próxima tentativa, para que um e-mail que falhou seja reenviado em vez de perdido.
  • Os testes rodam contra um PostgreSQL de verdade, iniciado pelo Testcontainers, e não um banco em memória.

Resultado

Em desenvolvimento. O esquema do banco e a estrutura de testes estão prontos; o contador de visitas, o endpoint do formulário de contato e o deploy em api.joaoabreu.dev vêm a seguir.

  • Java 21
  • Spring Boot 4.1
  • PostgreSQL 18
  • Flyway
  • Testcontainers
  • Docker Compose

SEÇÃO 02 / 07Sobre

ORIGEM · RIO DE JANEIRO

02 · Sobre

De onde eu venho

Sou João Abreu, desenvolvedor back-end e estudante de Ciência da Computação na Universidade Veiga de Almeida, no Rio de Janeiro. Meu caminho até a tecnologia começou num lugar inesperado: estudando para o concurso da Escola Naval. Foi ali que nasceu minha paixão por matemática e, com ela, pela tecnologia.

Hoje construo sistemas back-end com Java e Spring Boot, com interesse crescente em arquitetura de software e nuvem. Acredito que bom software começa antes da primeira linha de código: entender o problema, modelar o domínio com cuidado e desenhar uma arquitetura limpa.

Em curso

  • Construindo a v2.0 do Sistema de Gestão de Monitorias
  • Participando do inHub, primeiro projeto em equipe da comunidade Papo de Dev RJ
  • Praticando estruturas de dados e algoritmos no LeetCode, em Java
  • Em busca do primeiro estágio em back-end

SEÇÃO 03 / 07Stack

19 INSTRUMENTOS

03 · Stack

Instrumentos de bordo

Back-end

  • Java
  • Spring Boot
  • Spring Data JPA
  • Hibernate
  • Bean Validation

Dados

  • PostgreSQL
  • MySQL
  • Flyway

Testes e qualidade

  • JUnit 5
  • Mockito

Infra e ferramentas

  • Docker
  • GitHub Actions
  • Maven
  • Git
  • nginx

Também uso

  • React
  • TypeScript
  • JavaScript
  • Python

SEÇÃO 04 / 07Atividade

58 DIAS ATIVOS NO ANO

04 · Atividade

Atividade no GitHub

Contribuições no último ano
663
Dias ativos
58
Sequência atual
26 dias
Maior sequência
26 dias
Melhor dia
6820 de out. de 2026
dezjanfevmarabrmaijunjulagosetoutnov
Cada quadrado é um dia. Azul mais forte = mais contribuições. Contornado = hoje.

Push recente

  • portfolio-api ↗

    O back-end deste site em Spring Boot, para o contador de visitas e o formulário de contato.

    JavaÚltimo push

  • algorithms-and-data-structures ↗

    Minha prática de estruturas de dados e algoritmos em Java e Python, no LeetCode e nos outros lugares onde estudo.

    JavaÚltimo push

  • daily-learning-log ↗

    O código que escrevo estudando cursos de back-end, organizado por nível e tema, com um commit por aula.

    JavaÚltimo push

  • tutoring-management-system ↗

    Plataforma de monitoria acadêmica com aprovação de admin, sessões com vagas limitadas e lista de espera automática.

    JavaÚltimo push

SEÇÃO 05 / 07Constância

2 SINAIS EM PATRULHA

05 · Sinais de constância

Prática constante

  • Algoritmos e Estruturas de Dados ↗

    Minha prática de estruturas de dados e algoritmos em Java e Python, no LeetCode e nos outros lugares onde estudo.

    Dias de prática
    18
    Sequência atual
    9 dias
    Maior sequência
    9 dias
    Última prática

    Dia de prática é um dia com uma solução enviada a este repositório, contado no horário do Rio de Janeiro.

  • Daily Learning Log ↗

    O código que escrevo estudando cursos de back-end, organizado por nível e tema, com um commit por aula.

SEÇÃO 06 / 07Pipeline

6 ETAPAS · BUILD DE 11 de nov. de 2026

06 · Como este site chega até você

Do commit à sua tela

  1. Commit

    Toda mudança chega à main por um pull request revisado. A main é protegida e está sempre pronta para publicar.

  2. GitHub Actions

    npm ci e npm run build: checagem de tipos, um retrato novo do GitHub e todas as páginas geradas em inglês e português.

  3. rsync por SSH

    Só os arquivos que mudaram vão para o servidor, por um usuário de deploy sem sudo, com chave própria e a identidade do servidor fixada.

  4. nginx

    Ubuntu na AWS Lightsail serve os arquivos estáticos, com cache longo para os arquivos com hash e cabeçalhos de segurança.

  5. Cloudflare

    DNS, CDN e HTTPS na frente do servidor, que ele acessa com um certificado de origem verificado.

  6. Você

    Seu navegador recebe o HTML pronto. Os dados do GitHub ao vivo chegam por cima; se falharem, fica o retrato do build.

Roda a cada push na main e todo dia às 06:00 no Rio, sem nenhum passo manual.

SEÇÃO 07 / 07Contato

Envie um e-mail diretamente

07 · Contato

Fale comigo

Tem um projeto, uma oportunidade ou uma pergunta? Vamos conversar.

Todos os campos são obrigatórios.

O envio de mensagens estará disponível em breve. Por enquanto, fale comigo diretamente por e-mail.

Envie um e-mail diretamente

jgabreudev@gmail.com