stolben.com · portfólio

Sistemas web em Python e Django, do código à operação.

Alguns dos sistemas que projetei, construí e mantenho no ar. Foco em código claro, dados bem modelados e operação estável em produção.

8projetos publicados e em uso
Python · Djangoback-end e dados
Linux · Nginxdeploy próprio em produção
/ projetos publicados

Produtos reais, no ar e em uso.

GitHub completo
/ sobre

Do problema real ao sistema no ar.

Todo projeto começa longe do editor de código: parto do problema real e modelo o fluxo: a estrutura de dados, as regras de negócio e a navegação mais simples que resolve o caso. Só então começo a construir.

Construo com arquitetura direta de manter: Django bem organizado, dados consistentes e validação contínua. Prefiro menos peças, bem escolhidas, a empilhar ferramenta sobre ferramenta.

E como sou eu quem opera os sistemas depois do deploy, cada decisão de código é tomada pensando em quem vai mantê-los estáveis em produção: eu mesmo, todos os dias. É esse ciclo completo que faz cada projeto sair melhor que o anterior.

Rodrigo Stölben
/ tecnologias

As ferramentas, e por que escolho cada uma.

Sem jargão: as tecnologias que uso para construir os sistemas e o raciocínio por trás de cada escolha.

a fundação

Python & Django

A linguagem e a estrutura onde o sistema é construído. O Django é uma base madura, a mesma usada por empresas como Instagram e Spotify: boa parte da segurança e da organização já vem pronta, o que significa menos código frágil e mais tempo dedicado à regra de negócio.

Código em um editor de texto
onde ficam os dados

PostgreSQL

O banco de dados é o arquivo central do sistema. Guarda cada informação de forma consistente e segura, sem perder ou misturar registros, mesmo com muito acesso ao mesmo tempo.

a inteligência

IA · Claude (Anthropic)

O motor de inteligência dos sistemas: a API do Claude gera conteúdo, corrige avaliações e produz análises sob demanda, enquanto cada aplicativo orquestra as chamadas em segundo plano. É a mesma base pronta para os sistemas atuais e os que vierem.

a velocidade

Redis

Mantém o que é mais usado sempre à mão, para as telas responderem na hora. É o que faz o sistema parecer leve, em vez de travado.

o trabalho pesado

Celery

Cuida de tarefas demoradas (como processar arquivos) em segundo plano, sem travar a tela enquanto o sistema trabalha.

no ar, 24 horas

Linux · Nginx · Gunicorn

A infraestrutura que mantém tudo online, estável e seguro o tempo todo. Configuro e mantenho o servidor por conta própria, sem depender de plataformas fechadas de terceiros.

/ integração e entrega contínuas

Doze conferências antes de entrar, e o deploy sozinho depois.

Ver o pipeline

Toda vez que eu mudo uma linha de código, um robô assume antes de mim: monta o ambiente do zero e roda doze conferências ao mesmo tempo. Se qualquer uma reprovar, a mudança não entra. É a integração contínua, ou CI. Quando tudo fica verde, a entrega contínua, o CD, publica no servidor sem eu tocar em nada.

Quatro conferências cuidam do código: o estilo é padronizado do primeiro ao último arquivo, cada informação é conferida como aquilo que ela é (uma data como data, um número como número), a bateria de testes automáticos repete o uso real do sistema e um agregador acompanha se a qualidade sobe ou desce a cada mudança.

Duas cuidam da segurança: uma procura falhas já conhecidas no meu código e nas bibliotecas de terceiros; a outra varre o histórico inteiro do projeto atrás de senha ou chave de acesso esquecida no meio do caminho.

Três olham para o que o sistema carrega junto: se cada biblioteca tem licença compatível com a do projeto, se a versão instalada é exatamente a que eu revisei, e uma lista de ingredientes de tudo o que foi instalado naquela versão, guardada para responder na hora quando aparecer uma falha nova no mundo.

As três últimas olham para o resultado, do jeito que a pessoa vai encontrar: as configurações de produção são revisadas junto com a estrutura do banco de dados, um navegador de verdade percorre as telas clicando como um usuário faria, e um auditor confere se elas funcionam para quem navega pelo teclado ou usa leitor de tela.

  • ruff
  • mypy
  • pytest
  • SonarQube
  • bandit
  • pip-audit
  • gitleaks
  • liccheck
  • CycloneDX
  • Playwright
  • axe-core

No fim, um portão único resume o resultado. Verde, a mudança pode entrar. Vermelho, o próprio GitHub bloqueia a entrada, e não existe deixar para arrumar depois.

/ entrega contínua

Do portão verde até o ar, sem intervenção manual.

Com o portão verde no ramo principal, o GitHub abre uma sessão no servidor por um usuário criado só para isso, que não consegue fazer nada além de disparar um roteiro de publicação versionado no próprio repositório do sistema, à vista de qualquer um.

01 · o que sobe

Só o commit revisado

O servidor busca o código direto do GitHub e confirma que o commit pedido pertence mesmo ao histórico oficial do projeto antes de avançar. Não existe subir um arquivo solto pela mão.

02 · como sobe

Banco antes, serviço depois

Se a mudança mexe no banco de dados, um backup é feito antes de tudo. Só então as dependências são instaladas, a estrutura do banco é atualizada e o serviço recarrega, sem derrubar quem está usando naquele instante.

03 · e se der errado

Conferido no fim

Uma última checagem abre o endereço público, como um visitante faria. Se não responder, a publicação é marcada como falha e a própria mensagem traz o comando exato para voltar à versão anterior. Dois deploys nunca rodam ao mesmo tempo.

O pipeline não é copiado dentro de cada projeto: ele vive em um repositório central e o arquivo de cada sistema tem dez linhas, então um ajuste feito uma vez vale para todos. Cada projeto liga as etapas que fazem sentido para ele, e o Trilhas de Estudo, o mais recente, roda as doze sem nenhuma tolerância. Este site, escrito à mão em HTML e CSS, passa por uma versão reduzida do mesmo pipeline e sobe para o ar pelo mesmo caminho.

/ observabilidade

Se um sistema cair de madrugada, eu sou avisado antes do usuário.

Publicar é metade do trabalho; a outra metade é enxergar o que acontece depois. São três camadas: os erros dentro da aplicação, os sinais do servidor onde ela roda e uma checagem feita de fora, pela internet.

  • Sentry
  • Grafana Cloud
  • Prometheus
  • Loki
  • Grafana Alloy
  • node_exporter
  • postgres_exporter
  • redis_exporter
erros de aplicação

Sentry

Quando alguma coisa quebra dentro de um sistema, o Sentry registra a falha com a linha exata de código, agrupa as repetições em um só caso e me avisa por e-mail. Sem isso, eu só descobriria o problema quando alguém reclamasse — e a maioria das pessoas não reclama, apenas desiste da tela. Está ligado nos oito sistemas em produção, configurado para não enviar dados pessoais junto com o erro.

o que já é vigiado

Cinco alertas ativos

Servidor sem reportar, disco chegando ao limite, banco de dados fora do ar, cache fora do ar e qualquer um dos sistemas parado por mais de cinco minutos. Cada um dispara um e-mail, e o caminho foi testado derrubando um serviço de propósito.

sinais do servidor

Grafana · Prometheus · Loki

Um agente instalado no servidor envia continuamente os números da máquina (processador, memória, disco, rede), do banco de dados e do cache, junto com os registros que cada sistema escreve enquanto roda. Tudo chega a um painel único e a regras de alerta que me procuram por e-mail quando algo sai do lugar, em vez de esperar que eu vá olhar.

visto de fora

Checagem externa

De tempos em tempos, uma verificação independente abre cada endereço pela internet e guarda a resposta. É esse resultado que alimenta o painel “Sistemas no ar”, no topo desta página.

Nada disso fica preso ao código dos sistemas. O Sentry entra como uma biblioteca opcional, que a aplicação simplesmente ignora quando não está configurada, e o agente que alimenta o Grafana roda ao lado das aplicações, sem tocar nelas. Se um dia eu trocar de ferramenta, troco só essa camada.

/ infraestrutura e operação

Do código ao servidor: onde um sistema realmente vive.

Hoje meus sistemas rodam em uma VPS Linux, com deploy próprio em Nginx e Gunicorn. Cuido de toda a operação, do primeiro deploy à manutenção do dia a dia, mantendo tudo disponível, seguro e atualizado.

VPS Linux em produção

Os sistemas rodam hoje em uma VPS Linux, com Nginx e Gunicorn, dimensionada conforme o uso de cada projeto.

Deploy próprio

Publico e configuro o ambiente de produção por conta própria, com domínio, HTTPS e processos sob meu controle, sem plataformas fechadas.

Manutenção contínua

Monitoramento com alertas automáticos, backups, segurança e atualizações, com ajustes e correções conforme os sistemas evoluem.

Servidores em um data center, onde o sistema fica hospedado
/ contato

Tem um projeto em mente?

Me escreva contando o problema que você quer resolver. Respondo pelo e-mail abaixo.