Visão geral
O Conversor de Distância transforma valores entre unidades de comprimento com resultados formatados no padrão brasileiro, vírgula decimal incluída. Nasceu como desafio de Docker e foi remodelado por completo: identidade visual própria em tons de verde, tipografia dedicada e experiência de erro cuidada.
O problema
Além de containerizar, o desafio real foi de produto: mensagens claras quando a entrada é inválida, formulário que preserva o que o usuário digitou, números no formato local — e uma pergunta de arquitetura: como demonstrar um app Flask numa hospedagem que não executa Python?
A solução
O app organiza as conversões num dicionário único de fatores, formata os resultados em pt-BR e roda numa imagem Docker publicada no Docker Hub, com porta configurável. Para o GitHub Pages, a resposta foi reconhecer que conversão é matemática pura: a demo em docs refaz o cálculo em JavaScript no navegador, funcional de verdade, com um aviso explicando a diferença para a versão em Flask.
Funcionalidades
- Conversão entre unidades de distância com fatores centralizados
- Resultados com vírgula decimal e formatação pt-BR
- Validação com mensagens claras e formulário que se repopula
- Imagem Docker pública no Docker Hub
- Demo estática funcional em JavaScript no GitHub Pages
- Identidade visual própria, sem frameworks de CSS
Arquitetura
No servidor, o Flask renderiza o template com o resultado calculado a partir do dicionário de fatores; o Dockerfile congela o ambiente e a imagem sobe em qualquer host com um docker run. A demo do Pages replica a mesma tabela de fatores no cliente — dois ambientes, uma só regra de negócio.
Screenshots




Desafios & aprendizados
O código original repetia a mesma conta em ramos quase idênticos — cada unidade nova exigiria mais um bloco copiado. A refatoração concentrou tudo num dicionário único de fatores de conversão, e adicionar unidade virou adicionar uma linha. O outro desafio foi a formatação: exibir float em padrão brasileiro exigiu cuidar da vírgula decimal e dos resíduos de ponto flutuante, e aceitar entrada com vírgula sem quebrar a conversão. Completam a lista a validação com mensagem clara em vez de erro genérico e o formulário que preserva a seleção do usuário após o envio.