Pesquisar
Projeto exclusivo

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

hoje às 15:25

Descrição do Projeto:

## 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.

Atividades do cliente nesse projeto:

Última visualização: hoje às 15:06

Tem dúvidas? Faça uma pergunta.

ou

Enviar proposta

Informações adicionais

Categoria: Web, Mobile & Software
Subcategoria: Desenvolvimento Mobile
Orçamento: Aberto
Nível de experiência: Iniciante
Visibilidade: Público
Propostas: 14
Interessados: 17
Tempo restante:
Valor Mínimo: R$ 50,00
Propostas (14)
  • Freelancer Premium Felipe P.
    Top Freelancer Plus
    Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer Premium Maxwell D B.
    Top Freelancer Plus
    Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer Pro EDSON V.
    Top Freelancer
    Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

Nenhuma proposta foi encontrada.

Carregando...
Projetos semelhantes no 99Freelas

Converter app piloto do Base44 para iOS e Android - Tenho um piloto desenvolvido no Base44. Gostaria de convertê-lo em um aplicativo MVP a ser disponibilizado tanto na Apple Store quanto na Play Store. O app utiliza um banco de questõe...

Publicar aplicativo nas lojas Google Play e App Store - Preciso subir um aplicativo nas lojas Google Play e App Store. Já estão prontos; o trabalho é apenas fazer o upload e acompanhar o processo até a aprovação...

Desenvolvimento de aplicativo mobile (MVP) em Flutter e Firebase - Preciso de profissional experiente e com horário disponível para desenvolver um aplicativo (MVP) já totalmente estruturado, com telas, fluxo e regras de negócio definido...

Aplicativo MVP de gestão de estoque e ofertas por geofencing - Procuro desenvolvedor para criar um aplicativo MVP que: - Leia o QR Code da Nota Fiscal eletrônica (NFC-e); - Gerencie a validade dos produtos e envie alertas sobre vencimentos; - Avise clie...

Aplicativo de commodities - Procuro um desenvolvedor com experiencia para criar um aplicativo de commodities. Procuro um profissional que realmente entenda e possa ajudar sem perca de tempo.

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.