Todos os projetos
Mobile

Farmer Field Helper

App de gestão agrícola offline-first: gere parcelas, culturas, máquinas e equipas, regista trabalhos com GPS em segundo plano e guia o trator em passagens paralelas com uma lightbar em tempo real.
Visão geral

A agricultura acontece onde a rede é pior, por isso esta app guarda todos os dados no dispositivo, numa base de dados embutida, e só vai à internet buscar mapas e meteorologia. O agricultor descreve a sua exploração (parcelas, culturas, campanhas, máquinas, trabalhadores e tipos de trabalho), inicia um trabalho, regista o percurso GPS em segundo plano e pode seguir a orientação paralela por linha AB com uma lightbar em tempo real.

Boas-vindas
Boas-vindas
Início: meteorologia, campanha, parcelas
Início: meteorologia, campanha, parcelas
Menu de navegação
Menu de navegação
Culturas
Culturas
Economia das culturas
Economia das culturas

Como funciona

  1. 1Fluxo GPS

    Atualizações de localização a 2 Hz com a máxima precisão, como serviço em primeiro plano no Android, para o registo continuar com o ecrã desligado.

  2. 2Guardar cada ponto

    Cada ponto (posição, hora, velocidade, rumo, precisão) é escrito no Isar assim que chega, para que nenhum percurso se perca, mesmo que a app seja terminada.

  3. 3Motor de orientação

    Funções puras calculam a distância transversal sobre a esfera (fórmula do grande círculo) até à passagem paralela mais próxima.

  4. 4Lightbar

    15 segmentos com leitura numérica: verde até 20 cm, amarelo até 80 cm, vermelho acima disso, numa escala de ±2 m.

  5. 5Mapa em tempo real

    Mapa de satélite Mapbox com o marcador do trator, o percurso registado, a linha AB e as linhas paralelas.

Orientação paralela por linha AB
  • Marca-se o ponto A, conduz-se e marca-se o ponto B: a app calcula a linha principal e todas as passagens paralelas em múltiplos da largura da alfaia
  • A matemática geodésica mantém a orientação correta em passagens longas
  • Pode ser testado sem trator, com um emulador e uma rota GPS simulada
Gestão agrícola e relatórios
  • Parcelas escolhidas num mapa de satélite ou pela localização atual, com a parcela mais próxima encontrada pela distância de haversine
  • Campanhas com várias culturas atribuídas a cada parcela
  • Máquinas, trabalhadores e tipos de trabalho com custo por hora
  • Resumo de custos por campanha: custo, horas e número de trabalhos, em que cada trabalho custa horas × (custo da máquina + custo do tipo de trabalho)
  • Ecrã inicial com a meteorologia local e previsão a 5 dias (OpenWeatherMap)

Decisões de design

Isar para armazenamento

NoSQL embutido e rápido, com consultas tipadas e ligações; não precisa de rede no terreno.

Riverpod para o estado

Injeção de dependências verificada em compilação e estado reativo; os providers encadeiam-se, por exemplo campanha → atribuições → parcelas filtradas.

Localização como serviço em primeiro plano

O Android termina tarefas simples em segundo plano; um fluxo de localização num serviço em primeiro plano mantém o registo de forma fiável.

Motor de orientação puro e desacoplado

Sem dependências de Flutter ou de I/O, por isso é trivial de testar; ouve a posição do registo sem que as duas funcionalidades se conheçam.

Referências leves nos trabalhos

Os trabalhos são um registo sobretudo de escrita, por isso referenciar parcelas, trabalhadores e máquinas por id torna a escrita barata e permite que um percurso sobreviva a alterações posteriores.

Estrutura por funcionalidade

Cada funcionalidade tem a sua interface, estado e lógica; os widgets só observam providers e todo o I/O vive em notifiers e serviços.

Stack
FlutterDartRiverpodIsarMapboxGeolocatorOpenWeatherMap
Próximos passos
  • Calcular a área trabalhada a partir do percurso registado × largura de trabalho
  • Testes unitários para o motor de orientação
  • Desenhar as linhas paralelas do mapa com o motor geodésico, em vez de uma aproximação plana

© 2026 Daniel Paulino • Feito com Nuxt • Atualizado em outubro de 2026