disponível vagas e projetosfull stack software & produtoBelo Horizonte, MGhora local --:--PWA · APIs · cloud · dados · segurança
git push origin main✳Do problema ao deploy✳Software & produto✳Segurança desde a primeira linha✳Belo Horizonte✳
Eu gosto de entender o processo inteiro e construir a solução inteira: experiência, interface, regras de negócio, API, dados, infraestrutura e publicação.
Henrique Souza, Belo Horizonte
Abra ocódigo.
Cinco sistemas, cinco repositórios públicos. Cada janela abaixo tem três abas: a arquitetura com a requisição correndo pelo diagrama, os dados ou as rotas, e um trecho real do código. Clique, passe o mouse, fuce.
continue rolando
deslize para o lado
PublicadoPWA + API própria
Quarta Amstel
Quarta-feira, fim de tarde. O celular avisa que tem campanha rolando num bar da sua cidade.
Um app que se instala direto do navegador, mostra os bares no mapa e manda a notificação. Do outro lado, um painel onde a equipe aprova bares, campanhas e disparos, com login em dois fatores.
// localização das inscrições: duas casas decimais. bairro, não endereço.
worker/index.js2.527 linhasJavaScript01/05
Em desenvolvimentoPreview publicado
ObraPro
No canteiro, o passo a passo da tarefa aberto no celular. No escritório, a evidência chegando.
Plataforma para aprender, planejar e acompanhar obra. Cada empresa vê só os próprios dados, e cada pessoa só o que o papel dela permite. Ainda em construção, com preview no ar.
public async canAccessOrganization(userId: string, organizationId: string): Promise<boolean> {
const row = await this.database.prepare(`
SELECT m.id
FROM organization_memberships AS m
INNER JOIN organizations AS o ON o.id = m.organization_id
WHERE m.user_id = ? AND m.organization_id = ? AND m.status = 'active' AND o.is_active = 1
LIMIT 1
`).bind(userId, organizationId).first<{ id: string }>();
return row !== null;
}
// toda API privada exige sessão real, vínculo ativo e resposta sem cache.
membershipRepository.ts59 linhasTypeScript02/05
Em uso internoERP sob medida
Labs & Tracks
Antes era planilha que travava quando duas pessoas abriam ao mesmo tempo.
Obras, chamados, ar-condicionado, controle de acesso e tarefas do time num painel só. O técnico escaneia o QR colado no equipamento e registra a preventiva ali mesmo.
_cache = {}
_cache_lock = threading.Lock()
def cache_get(key):
with _cache_lock:
return _cache.get(key)
def cache_set(key, value):
with _cache_lock:
_cache[key] = value
def cache_invalidate(*keys):
with _cache_lock:
for k in keys:
_cache.pop(k, None)
// nenhuma leitura vai ao banco: cada consulta ao warehouse custava de 200 a 500 ms.
app.py4.224 linhasPython03/05
EncerradoUsado durante o evento de 2026
Rota di Buteco
Um mês, 128 bares e um grupo de amigos querendo saber quem ia mais longe.
Cada visita só vale com foto tirada pela câmera, na hora, mais nota e quilômetros rodados. Nove rankings, grupos com roteiro próprio e um feed para ver quem foi aonde.
Antes do código: quem usa, onde usa e o que hoje dá errado.
Desenhar o sistema
Dados, permissões e arquitetura no tamanho real do problema. Sem framework só porque está na moda.
Colocar em produção
Deploy automatizado, testes onde importam e evolução junto de quem usa.
Reobra+
Cofundador Software & Produto
A engenharia sabe o que precisa ser feito. A obra sabe o que está acontecendo. Quase nunca os dois olham para a mesma tela.
O Reobra+ é um produto para construção civil que aproxima conhecimento técnico, planejamento, execução e acompanhamento de obra através de software. Diego cuida da engenharia civil; eu, do software e do produto.
Produto em desenvolvimento
reobra+ / roadmapprivado
produto em desenvolvimento
Conhecimento técnicoengenharia
Planejamentoescopo e etapas
Execuçãoo que acontece na obra
Acompanhamentoquem precisa saber
software & produtoHenrique Souza
engenharia civilDiego
repositórioprivado até o lançamento
// os detalhes técnicos entram aqui quando o produto for público.
Do problemaao deploy.
Por onde cada projeto passou, da ideia ao ar. Passe o mouse no nome de um deles para ver o caminho inteiro, ou clique para abrir.
Camada construída no projetoParcial, apoiada em serviço gerenciado
HenriqueSouza.
Teste de verdade é quando alguém na obra, no bar ou na manutenção abre o sistema sem me perguntar nada.
Desenvolvedor Full Stack em Belo Horizonte. Trabalho na interseção entre software, produto e operação, construindo soluções que precisam funcionar fora do mockup.
Hoje também sou cofundador do Reobra+, atuando na frente de Software & Produto ao lado da vertente técnica de engenharia civil.
Bares participantes de uma ação semanal às quartas-feiras precisavam ser encontrados por quem está por perto, e as campanhas precisavam chegar às pessoas certas, na cidade certa, na hora certa.
Desafio
Um app instalável, rápido no celular, com mapa e localização, notificações segmentadas por cidade e uma retaguarda segura para quem administra bares e campanhas, sem servidor para manter.
Minha participação
Desenvolvimento full stack: PWA, API, modelagem do banco, painel administrativo, segurança e agendamento.
Solução
Um único Cloudflare Worker com itty-router atende as rotas públicas e administrativas.
Web Push com VAPID implementado direto em Web Crypto, seguindo as RFC 8291 e 8292.
Login administrativo com TOTP, controle de admins, rate limit por IP gravado no D1, logs de segurança e bloqueio de IP.
Bares e campanhas passam por aprovação antes de publicar; importação de bares em lote.
Localização de inscritos arredondada para o nível de bairro.
Arquitetura
Frontend
PWA mobile-first, service worker, Leaflet
Backend
Cloudflare Workers, itty-router
Banco
Cloudflare D1 (SQLite)
Cloud
Cloudflare Workers e D1
Integrações
Web Push (VAPID), geolocalização, links para Google Maps, Apple Maps e Waze
Resultado
Sistema completo em produção na Cloudflare, com roteiro de teste de carga em k6 (rampa até 500 usuários virtuais, meta de p95 abaixo de 1 segundo).
Case técnico. Não representa parceria ou vínculo oficial com a marca citada no nome do projeto.
Contexto
Procedimentos de obra costumam viver no papel e na memória de quem executa. O trabalhador precisa de passo a passo claro; quem lidera precisa de rastreabilidade de qualidade, progresso e treinamento.
Desafio
Um produto que sirva do trabalhador de campo ao gestor, com dados de cada organização isolados das demais, conteúdo com autoria e versão, e base preparada para funcionar no canteiro.
Minha participação
Concepção, arquitetura e desenvolvimento: modelagem, backend, frontend, testes e pipeline de entrega.
Solução
Monólito modular em Laravel, com auditoria, eventos de segurança e observabilidade como responsabilidades separadas.
Organizações, vínculos e papéis por tenant; segurança global isolada para o super admin.
APIs privadas de organizações, obras, chamados e evidências que exigem sessão real, vínculo ativo e respostas sem cache.
Catálogo público de cursos por etapa da construção.
Preview em Cloudflare Workers (TypeScript) com D1 para autenticação e operação.
Arquitetura
Frontend
Blade, Tailwind, Vite, PWA instalável
Backend
Laravel (PHP 8.3); Worker em TypeScript no preview
Banco
Migrações Laravel; Cloudflare D1
Cloud
Cloudflare Workers
Entrega
GitHub Actions, PHPUnit, Vitest, fluxo main / develop / hotfix
Resultado
Em desenvolvimento, com preview público: catálogo navegável, login real quando o banco está ligado e APIs privadas de operação.
A gestão de obras, manutenção, climatização, controle de acesso e atividades de uma equipe estava espalhada em planilhas, WhatsApp e na memória de quem cuidava de cada coisa.
Desafio
Juntar tudo em um painel com banco de dados de verdade, usando a infraestrutura de dados que já existia (Databricks), apesar da latência alta por consulta do warehouse.
Minha participação
Concepção e desenvolvimento do sistema inteiro: backend, frontend, modelagem, autenticação e deploy.
Solução
Leituras servidas por cache em memória; o banco só entra na escrita, que já devolve o cache atualizado.
Avanço físico de obra calculado de baixo para cima, ponderado pela duração de cada item.
Chamados com SLA configurável por prioridade, histórico e fotos.
Portal por QR code colado em cada equipamento: o técnico registra preventiva com um PIN, sem login completo.
CAPEX com conversão para real e extração de anexos PPTX e XLSX em segundo plano.
Arquitetura
Frontend
HTML, CSS e JavaScript sem framework, um módulo por pasta, PWA
Backend
Python, FastAPI, uvicorn
Banco
Delta Lake via SQL Warehouse
Cloud
Databricks Apps, Databricks Volumes
Entrega
Deploy automático por GitHub Actions a cada push na main
Resultado
ERP interno com nove módulos (Hub, KPI, Obras, Chamados, Conforto, CAPEX, CODIN, Atividades e Admin) e API documentada no repositório.
Contexto
Um grupo de amigos queria acompanhar a própria jornada no Comida di Buteco BH 2026, que teve 128 bares participantes entre 12 de abril e 10 de maio, e transformar isso numa competição.
Desafio
Sair rápido, ser instalável no celular e manter o ranking justo, sem trapaça.
Minha participação
Produto e desenvolvimento, do desenho das regras de ranking ao painel administrativo.
Solução
Check-in com foto tirada pela câmera, na hora, nota de 1 a 10, km, gasto e comentário.
Nove categorias de ranking e um feed de atividades com reações.
Grupos por código de seis caracteres, com ranking próprio e roteiro colaborativo com aprovação do organizador.
Mapa com bares ordenados por distância e 14 emblemas para colecionar.
Painel admin para invalidar visitas suspeitas, arquivar denúncias e banir usuários.
Arquitetura
Frontend
HTML, CSS e JavaScript puro, PWA
Backend
Sem servidor próprio; regras de segurança do Firestore
Banco
Cloud Firestore, Firebase Storage para fotos
Cloud
Firebase Hosting e Authentication
Integrações
Leaflet e OpenStreetMap, Google Maps para navegação
Resultado
Ficou no ar durante todo o evento e foi usado pelo grupo. Hoje está encerrado, com os dados preservados.