
Dogwalk: o fuso horário que o cliente notaria antes de nós
Pinar o sqlmodel, um helper único de tempo e o next-walk que aparecia com três horas de desvio — a rodada tz-aware de 05/10.
22 posts

Pinar o sqlmodel, um helper único de tempo e o next-walk que aparecia com três horas de desvio — a rodada tz-aware de 05/10.

Um pip install resolveu. Depois um bisect medido mostrou que a fronteira entre funcionar e quebrar estava numa dependência, não no meu código. E, no caminho, doze cópias de uma função de cinco linhas viraram um helper só.

A /explorar do Dogwalk ganhou zonas de cobertura, e a primeira versão carregava o vínculo entre cuidador e região numa página pública sem login. O conserto não foi esconder um campo: foi decidir que a zona só carrega agregados — e transformar o teste que exigia o dado em teste que exige a ausência dele.

Uma linha de configuração com um placeholder no lugar da chave derrubou o login e o cadastro de produção por quase nove horas — e a chave real não existia em lugar nenhum. A história do travamento mais bem-intencionado que já escrevi, e do doctor que diagnostica um par sem nunca ver o segredo.

Um arquivo chamado NUL, um router chamado aux.py e um symlink que só existe no Linux: três arquivos que entraram sem resistência no Dogwalk e quebraram o git status em qualquer clone NTFS. A origem é quase sempre a mesma — o .gitignore não vence arquivo já rastreado.

Uma semana depois de consertar os endpoints que não conectavam, o Dogwalk descobriu que aperto de mão repetido é pior que nenhum: o segundo accept() derrubava a conexão logo depois de abrir. E o primeiro conserto ainda deixou um socket morto entrando na sala.

O PataPass era um site com cara de app — e o navegador deixava isso claro na pior hora possível: no elevador, sem sinal. A história da Fase 4F: banner de instalação com beforeinstallprompt, página offline no service worker e a decisão de nunca cachear HTML.

O botão de status passou a funcionar na sessão — mas um F5 apagava tudo: o passeador recarregava a página e voltava como offline pro sistema inteiro. A continuação direta do botão fantasma: persistência real do status online, do front ao PATCH do perfil.

O toggle 'Ficar Online' do walker renderizava, animava e até mudava de cor. Mas o handler era uma função vazia: o estado nunca saía de 'online'. A história de como um teste de loop pegou um botão fantasma e devolveu o status online de verdade.

O script logava Docs backup, mas o tar tinha só 53 dos 218 arquivos — OOM de madrugada engolido pelo 2>/dev/null.

Todos os WebSockets do Dogwalk retornavam HTTP 500 no handshake. O app rodava, o banco respondia, mas o login em tempo real, o chat e o rastreamento de passeios simplesmente não conectavam. A causa: um receive_text() chamado sem o accept() que o Starlette exige.

970 commits, 1456 testes, Stripe Connect, Open Design, e a saga de transformar um marketplace de pets em uma plataforma que não quebra no deploy.

Como um endpoint público que dava 401, um bundle que crashava e 42 erros no console viraram um commit só

Indentação YAML, dependência faltando, testes que precisam de servidor — a clássica espiral de debug de pipeline.

Explorando estado atual do Dogwalk — aprendizados, desafios e descobertas.

Como os testes end-to-end transformaram a qualidade e confiança no desenvolvimento do Dogwalk — a história real de uma stack que aprendeu a se testar sozinha.

Depois da ideia, veio a parte mais difícil: colocar a mão na massa. Como escolhi React, Vite e FastAPI para construir o Dogwalk.

Depois de semanas codando, chegou a hora de colocar o Dogwalk no ar. O primeiro deploy foi uma mistura de euforia e frustration — Vite + Cloudflare Pages.

Explorando escolha da stack — aprendizados, desafios e descobertas.

Tudo começou com uma necessidade simples: encontrar passeadores de confiança para minha própria dog. Foi assim que surgiu a ideia do Dogwalk, um marketplace de pets que hoje atende centenas de tutores.

JWT, Supabase, OAuth, refresh token, rotas protegidas e layout condicional — a história da autenticação no Dogwalk.

De zero testes a 853: como os testes Playwright viraram o backbone de qualidade do Dogwalk/PataPass, os aprendizados e o que mudou no processo.