Uma aplicação web moderna para conversão entre diferentes unidades de distância, desenvolvida em Python Flask com interface responsiva e interativa.
- Metro ↔ Quilômetros, Milhas, Pés, Centímetros, Jardas
- Centímetros ↔ Polegadas
- Precisão de até 6 casas decimais
- Design responsivo com Bootstrap 5
- Gradientes e efeitos Glass
- Ícones Font Awesome em toda interface
- Animações suaves e transições
- Tema moderno com cores harmoniosas
- Conversão em tempo real via AJAX
- Botão swap para trocar unidades
- Histórico das últimas 10 conversões
- Validação de entrada em tempo real
- Loading states com spinners
- Tratamento de erros elegante
- Python 3.12+
- Flask 2.0.1 - Framework web
- Gunicorn 20.1.0 - Servidor WSGI
- HTML5 com templates Jinja2
- CSS3 com gradientes e animações
- JavaScript ES6+ com AJAX
- Bootstrap 5.1 para responsividade
- Font Awesome 6.0 para ícones
- Server-side processing - Todos os cálculos no backend
- RESTful API com endpoint
/convert-api - AJAX para conversões em tempo real
- LocalStorage para persistência do histórico
# Python 3.12+
python3 --version
# Virtualenv (opcional, mas recomendado)
pip install virtualenvgit clone <url-do-repo>
cd conversao-distanciavirtualenv .venv
source .venv/bin/activate # Linux/Mac
# ou
.venv\Scripts\activate # Windowscd src
pip install -r requirements.txtpython3 main.pygunicorn -w 4 -b 0.0.0.0:8000 main:app- Local: http://127.0.0.1:5000
- Produção: http://localhost:8000
python3 test_api.py- Abra a aplicação no navegador
- Digite um valor (ex: 1000)
- Selecione uma conversão (ex: Metro → Quilômetros)
- Veja o resultado em tempo real
- Clique "Converter" para salvar no histórico
conversao-distancia/
├── README.md # Este arquivo
├── CLAUDE.md # Instruções para Claude Code
├── test_api.py # Testes da API
└── src/
├── main.py # Aplicação Flask principal
├── requirements.txt # Dependências Python
├── templates/
│ └── index.html # Template principal
└── static/
├── css/
│ └── style.css # Estilos customizados
└── js/
└── converter.js # JavaScript interativo
Endpoint para conversões via AJAX.
Request:
{
"conversion_type": "1",
"value": 1000
}Response:
{
"success": true,
"result": 1.0,
"unit": "quilômetros",
"original_value": 1000
}Tipos de Conversão:
1: Metro → Quilômetros2: Quilômetros → Metro3: Metro → Milhas4: Milhas → Metro5: Metro → Pés6: Pés → Metro7: Centímetros → Metro8: Metro → Centímetros9: Polegadas → Centímetros10: Centímetros → Polegadas11: Jardas → Metro12: Metro → Jardas
- Ctrl/Cmd + Enter: Converter
- Esc: Limpar entrada
- Interface otimizada para desktop, tablet e mobile
- Layout flexível com breakpoints Bootstrap
- Persiste entre sessões do navegador
- Limite de 10 conversões mais recentes
- Formato de data/hora brasileiro
- Debounce de 800ms para conversão em tempo real
- Caching inteligente de resultados
- Animações otimizadas com CSS3
gunicorn -w 4 -b 0.0.0.0:8000 --chdir src main:appFROM python:3.12-slim
WORKDIR /app
COPY src/ .
RUN pip install -r requirements.txt
EXPOSE 8000
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8000", "main:app"]