Pesquisar

Glaybson S.

(0.0 - 0 avaliações)

Projetos concluídos: 0 | Recomendações: 0 | Registrado desde: 26/03/2026

Projetos (Aguardando Propostas):

  • App Flutter para gestão de entregas e consumo de combustível

    Desenvolvimento Mobile | Orçamento: Aberto | Publicado: | Propostas: 22

    ## Objetivo
    Construir um app Flutter completo para gestão de entregas, com dois perfis (Entregador e Estabelecimento), autenticação Firebase, rastreamento GPS em tempo real, cálculo de km/litros e painel do estabelecimento.

    ---

    ## Arquitetura

    ```mermaid
    flowchart TD
    A[Login Screen] --> B{Perfil}
    B -->|Entregador| C[Dashboard Entregador]
    B -->|Estabelecimento| D[Dashboard Estabelecimento]
    C --> E[Iniciar Turno]
    E --> F[GPS Tracking Loop\nintervalo de 10s]
    F --> G[Firestore: salva posição\n+ KM acumulado]
    G --> H[Finalizar Turno]
    H --> I[Relatório do Turno]
    D --> J[Lista de Entregadores Ativos]
    J --> K[Mapa com posição em tempo real]
    D --> L[Histórico de Turnos]
    ```

    ---

    ## Estrutura de Arquivos

    ```
    lib/
    - main.dart
    - firebase_options.dart - gerado pelo FlutterFire CLI
    - models/
    - usuario.dart - modelo User (nome, perfil, uid)
    - turno.dart - modelo Turno (km, litros, rota, duração)
    - services/
    - auth_service.dart - login/logout Firebase Auth
    - firestore_service.dart - CRUD turnos e posições
    - gps_service.dart - stream de posição, cálculo de distância
    - screens/
    - login_screen.dart - email + senha + seleção de perfil
    - register_screen.dart - cadastro entregador ou estabelecimento
    - entregador/
    - home_entregador.dart - dashboard + botão iniciar/finalizar
    - relatorio_screen.dart - relatório do turno com PDF
    - estabelecimento/
    - home_estabelecimento.dart - lista de entregadores ativos
    - mapa_entregadores.dart - mapa com todos os pins ao vivo
    - widgets/
    - metric_card.dart - card reutilizável KM / Litros / Tempo
    - entregador_tile.dart - item da lista de entregadores
    ```

    ---

    ## Banco de Dados Firestore

    ```
    usuarios/{uid}
    - nome: string
    - email: string
    - perfil: "entregador" | "estabelecimento"
    - estabelecimentoId: string (só para entregadores)

    turnos/{turnoId}
    - entregadorId: string
    - entregadorNome: string
    - inicio: timestamp
    - fim: timestamp | null
    - kmTotal: number
    - litrosConsumidos: number
    - ativo: boolean
    - rota: array<{lat, lng}>

    posicoes/{uid}
    - lat: number
    - lng: number
    - atualizadoEm: timestamp
    - turnoId: string
    ```

    ---

    ## Dependências (`pubspec.yaml`)

    | Pacote | Uso |
    |---|---|
    | `firebase_core` | Inicialização Firebase |
    | `firebase_auth` | Login/logout |
    | `cloud_firestore` | Banco de dados |
    | `google_maps_flutter` | Mapa e polyline |
    | `geolocator` | GPS posição atual |
    | `shared_preferences` | Cache local |
    | `pdf` + `printing` | Exportar relatório PDF |
    | `provider` | Gerenciamento de estado |

    ---

    ## Etapas de Implementação

    ### 1. Setup do Projeto Flutter
    - Criar projeto Flutter limpo: `flutter create entrega_app`
    - Configurar Firebase com `flutterfire configure`
    - Adicionar todas as dependências no `pubspec.yaml`
    - Configurar `AndroidManifest.xml` (permissões GPS + internet)

    ### 2. Models
    - `usuario.dart` - fromMap/toMap, campo `perfil`
    - `turno.dart` - fromMap/toMap, campos km, litros, rota, ativo

    ### 3. Services
    - `auth_service.dart` - `login()`, `register()`, `logout()`, `currentUser`
    - `firestore_service.dart` - `iniciarTurno()`, `finalizarTurno()`, `atualizarPosicao()`, `streamEntregadoresAtivos()`
    - `gps_service.dart` - stream de posição com `Geolocator`, cálculo de distância acumulada

    ### 4. Telas de Autenticação
    - `login_screen.dart` - campos email/senha, seleção de perfil (radio button), botão entrar e link para cadastro
    - `register_screen.dart` - nome, email, senha, perfil

    ### 5. Telas do Entregador
    - `home_entregador.dart` - cards KM/Litros/Tempo, mapa com polyline da rota, botões Iniciar/Finalizar turno
    - `relatorio_screen.dart` - resumo do turno + botão exportar PDF real (pacote `pdf`)

    ### 6. Telas do Estabelecimento
    - `home_estabelecimento.dart` - lista em tempo real dos entregadores ativos via `StreamBuilder`
    - `mapa_entregadores.dart` - Google Maps com marcadores de todos os entregadores ativos atualizando via stream Firestore

    ### 7. Navegação e Estado
    - `main.dart` - `StreamBuilder` no `FirebaseAuth.authStateChanges()` para redirecionar automaticamente por perfil
    - `Provider` para estado do turno ativo

    ### 8. Verificação Final
    - Testar login entregador - iniciar turno - GPS atualiza - estabelecimento vê no mapa
    - Testar finalizar turno - relatório - exportar PDF
    - Testar logout e redirecionamento correto por perfil

    ---

    ## Verificação / DoD

    | Item | Como verificar |
    |---|---|
    | Login dual funciona | Entrar como entregador e como estabelecimento com contas diferentes |
    | GPS atualiza Firestore | Ver documento `posicoes/{uid}` atualizar a cada 10s |
    | Estabelecimento vê mapa ao vivo | Pin do entregador se move no mapa do estabelecimento |
    | KM e litros calculados | Percorrer rota e conferir valores no relatório |
    | PDF gerado | Botão exportar abre preview do PDF com dados do turno.
Carregando...

Carregando...

Pesquisar

FREELANCERS
PROJETOS
Ocorreu um erro inesperado. Caso o erro persista, entre em contato conosco através do e-mail suporte@99freelas.com.br.