Farmer Field Helper
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.





Como funciona
- 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.
- 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.
- 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.
- 4Lightbar
15 segmentos com leitura numérica: verde até 20 cm, amarelo até 80 cm, vermelho acima disso, numa escala de ±2 m.
- 5Mapa em tempo real
Mapa de satélite Mapbox com o marcador do trator, o percurso registado, a linha AB e as linhas paralelas.
- 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
- 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
NoSQL embutido e rápido, com consultas tipadas e ligações; não precisa de rede no terreno.
Injeção de dependências verificada em compilação e estado reativo; os providers encadeiam-se, por exemplo campanha → atribuições → parcelas filtradas.
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.
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.
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.
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.
- 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