Componentes Detalhados do Projeto
1. Frontend (Flutter)
Telas Principais
- Mapa com Rotas: Integração com
google_maps_flutter
oumapbox_gl
para exibição de mapas e trajetos. - Formulário de SOS: Interface com
image_picker
para captura e envio de fotos. - Lista de Horários dos Trens: Exibição dos horários atualizados dos trens.
Comunicação
- Utilização dos pacotes
http
oudio
para chamadas assíncronas ao backend.
2. Backend (Python)
Framework
- FastAPI: Ideal para APIs simples e rápidas.
- Django: Recomendado para projetos que requerem mais recursos e robustez.
Endpoints Exemplo
- POST /sos: Recebe fotos e detalhes do problema, salvando no banco de dados.
- GET /rotas?origem=X&destino=Y: Retorna as melhores rotas combinando dados da CPTM e lógica personalizada.
- GET /horarios: Retorna intervalos entre trens, utilizando cache de dados da API da CPTM.
3. Banco de Dados
Opção | Melhor Para | Exemplo de Uso |
---|---|---|
SQLite | Protótipo simples | Apps pequenos, sem necessidade de escalabilidade. |
PostgreSQL | Dados estruturados | Relacionamentos complexos (ex.: usuários x SOS). |
Firebase | Fotos e dados NoSQL | Armazenamento de imagens do SOS + autenticação. |
Fluxo de Dados (Exemplo: SOS)
Flutter
- Usuário tira foto e preenche formulário.
- Dados enviados para o endpoint
POST /sos
.
Backend (Python)
- Salva o texto no banco de dados.
- Armazena a foto no sistema de arquivos ou Firebase Storage.
- Envia notificação para a CPTM via API oficial.
Resposta
- Retorna confirmação de sucesso ou mensagem de erro para o aplicativo.