Sistema web modular para consulta de horários do metrô de Fortaleza com área administrativa para gerenciamento de alertas.
adm-software/
├── config.py # Configurações centralizadas
├── run_new.py # Ponto de entrada da aplicação
├── database.py # Módulo de banco de dados legado
├── ml_model.py # Modelo de Machine Learning
├── requirements.txt # Dependências Python
├── README.md # Esta documentação
│
├── app/ # Aplicação Flask modular
│ ├── __init__.py # Factory da aplicação
│ ├── blueprints/ # Módulos organizados por funcionalidade
│ │ ├── main.py # Rotas públicas
│ │ ├── api.py # API REST
│ │ └── admin.py # Área administrativa
│ ├── models/ # Modelos SQLAlchemy
│ │ ├── alert.py # Modelo de alertas
│ │ └── user.py # Modelo de usuários
│ ├── forms/ # Formulários WTForms
│ │ └── forms.py # Formulários da aplicação
│ └── utils/ # Utilitários
│ └── timezone.py # Funções de fuso horário
│
├── data/ # Dados da aplicação
│ ├── horarios_metro_ida.csv # Horários sentido Carlito Benevides
│ └── horarios_metro_volta.csv # Horários sentido Chico da Silva
│
├── database/ # Bancos de dados
│ ├── metro_database.db # Banco principal (horários)
│ └── metro_admin.db # Banco administrativo (alertas/usuários)
│
├── models/ # Modelos de Machine Learning
│ ├── metro_model.pkl # Modelo treinado
│ ├── scaler.pkl # Normalizador de dados
│ └── encoders.pkl # Codificadores de categorias
│
├── templates/ # Templates HTML
│ ├── admin/ # Templates administrativos
│ │ ├── base.html # Base administrativa
│ │ ├── dashboard.html
│ │ ├── alerts_list.html
│ │ ├── alert_form.html
│ │ └── login.html
│ ├── base.html # Base pública
│ ├── index.html # Página inicial
│ ├── results.html # Resultados de consulta
│ ├── alerts.html # Lista de alertas públicos
│ └── docs.html # Documentação da API
│
└── static/ # Arquivos estáticos (CSS, JS, imagens)
O arquivo config.py centraliza todas as configurações do projeto:
- Caminhos de dados: CSVs de horários
- Caminhos de banco: Bancos SQLite
- Caminhos de modelos: Arquivos ML .pkl
- Configurações da aplicação: Chaves secretas, debug, etc.
- Lista de estações: Dados centralizados
- Consulta de horários: Previsão de chegada dos trens por estação
- Alertas em tempo real: Informações sobre o status do serviço
- API REST: Endpoints para integração com outros sistemas
- Interface responsiva: Design adaptativo para dispositivos móveis
- Gerenciamento de alertas: Criação, edição e exclusão de alertas
- Dashboard: Estatísticas e resumo do sistema
- Controle de acesso: Sistema de autenticação seguro
- Interface intuitiva: Painel administrativo moderno
- Backend: Flask, SQLAlchemy, Flask-Login, Flask-WTF
- Frontend: HTML5, CSS3, JavaScript, Bootstrap 5
- Banco de dados: SQLite
- ML: Scikit-learn (modelo de previsão)
- Arquitetura: Flask Blueprints (modular)
- Python 3.8+
- pip
- Clone o projeto:
git clone <repositorio>
cd adm-software- Crie um ambiente virtual:
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows- Instale as dependências:
pip install -r requirements.txt- Execute o servidor:
python run_new.py- Site público: http://localhost:5000
- Área administrativa: http://localhost:5000/admin
- Usuário:
admin - Senha:
admin123
- Usuário:
- Documentação da API: http://localhost:5000/docs
GET /api/alertas- Lista todos os alertasGET /api/horarios/<station>/<direction>- Consulta horáriosPOST /api/report- Reporta horário real
# Consultar alertas
curl http://localhost:5000/api/alertas
# Consultar horários
curl http://localhost:5000/api/horarios/Parangaba/ida- Separação clara: Dados, modelos, bancos e código organizados
- Manutenção facilitada: Arquivos agrupados por função
- Segurança: .gitignore atualizado para proteger dados sensíveis
- Escalabilidade: Estrutura preparada para crescimento
- Configuração centralizada: Fácil alteração de caminhos e configurações
- ✅ CSVs movidos para
data/ - ✅ Bancos SQLite movidos para
database/ - ✅ Modelos ML movidos para
models/ - ✅ Configurações centralizadas em
config.py - ✅ Códigos atualizados para usar novos caminhos
- ✅ .gitignore atualizado
O sistema utiliza Flask Blueprints para organização modular:
- main: Rotas públicas e interface principal
- api: Endpoints da API REST
- admin: Área administrativa
O sistema utiliza SQLAlchemy com SQLite para persistência:
- alerts: Tabela de alertas do sistema
- users: Tabela de usuários administrativos
Sistema de previsão usando scikit-learn para estimar tempo de chegada baseado em:
- Horários programados
- Histórico de atrasos
- Condições atuais do sistema
Para ambiente de produção, configure:
- Variáveis de ambiente:
export FLASK_ENV=production
export SECRET_KEY=sua-chave-secreta-forte- Servidor WSGI (recomendado: Gunicorn):
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 "app:create_app()"- Faça um fork do projeto
- Crie uma branch para sua funcionalidade
- Implemente as mudanças
- Adicione testes se necessário
- Faça um pull request
MIT License - veja o arquivo LICENSE para detalhes.