Saltar para o conteúdo
Edson Francisco
  • Sistemas de campo offline-first
  • AgriTech e rastreabilidade

FAMS – Farmer & Agent Management System

Plataforma Laravel para agronegócios gerirem produtores, compras no campo, stock e fábrica — com API para a app de campo offline.

Período
2021–2026
Estado
Em produção
Papel
Cofundador e gestor de tecnologia e produto; maior contribuidor do backend Laravel, da API móvel e do CI/CD
Parceiros
GIZ, NIRAS, COMO Consult

Problema

Empresas agrícolas que trabalham com milhares de pequenos produtores geriam cadastros, pesagens, créditos de insumos e pagamentos em papel e Excel. Os técnicos de campo trabalham em zonas sem rede, e os financiadores pediam relatórios que ninguém conseguia produzir a tempo.

Solução

Um sistema central em Laravel (web) com módulos base e plugins activáveis por empresa: produtores, agentes, compras, stock, fábrica, pagamentos M-Pesa e rastreabilidade. O mesmo backend expõe a API que a app Android da equipa usa para trabalhar offline e sincronizar. O Edson é o maior autor da API, das migrations, das vistas, dos testes e dos workflows de deploy.

Contexto: um sistema nascido num programa da GIZ

Em 2020 a GIZ decidiu criar um software de gestão de produtores para as empresas parceiras dos programas ProEcon, ProMove e GIAE, depois de avaliar cerca de 20 empresas. O FAMS foi lançado oficialmente no fim de Fevereiro de 2021.

O problema era o mesmo em todas: cadastros de produtores, pesagens, créditos de insumos e pagamentos em papel ou Excel, feitos por técnicos em zonas sem rede, e relatórios difíceis de consolidar para financiadores.

Um guia de extensão agrária publicado pela NIRAS para a GIZ descreve o FAMS como uma plataforma desenvolvida pela ONG moçambicana Empoderando, com apoio da GIZ, para as empresas registarem e analisarem dados de formação de produtores, venda de insumos e compra da produção. No piloto Kulima ndi Malonda (2022–23), a Luteari usou o FAMS para recolher os dados de base e as notas dos técnicos depois de cada sessão de formação.

O Edson trabalha no backend desde Maio de 2021 e é, desde então, o responsável técnico do produto: código, revisão das contribuições da equipa, decisões de arquitectura e deploy.

Arquitectura: backend Laravel e API para a app de campo

O FAMS tem duas peças. O backend Laravel (web) é o sistema central usado nos escritórios e fábricas. A app Android, feita em Ionic, Angular e Capacitor, é usada pelos técnicos no terreno. A app móvel e uma versão de secretária em Electron foram escritas por colegas da equipa; a parte do Edson é o servidor e a API que elas consomem.

A app guarda tudo localmente e envia quando volta a rede: produtores, inquéritos, treinos, compras, stock e pagamentos. Do lado do servidor, a API v1 usa tokens Sanctum, limita tentativas de login e OTP e regista a última sincronização de cada dispositivo. O Edson é autor da maioria dos commits em routes/api.php e nos controladores da API.

O modelo de dados cresceu para 220 migrations e 88 modelos, com 18 exportações PDF e Excel (livro de compras, rastreabilidade, créditos) e auditoria em 83 modelos.

Plugins: do crédito de insumos à rastreabilidade do mel

Cada cliente tem uma cadeia de valor diferente, por isso o núcleo (produtores, agentes, campos, inquéritos) é comum e o resto são plugins: Stock, Compras, Insumos, Fábrica, ePayment com M-Pesa B2C em lote, SMS e visitas. A terminologia também muda por cliente, através de ficheiros de tradução sobrepostos.

O plugin mais recente é a rastreabilidade do mel: fichas de enchimento, formatos de mel, stock de favo e de produto final, livro de compras e um relatório de produção em PDF assinado. Foi desenvolvido pelo Edson em 2026.

Engenharia de releases: changelog, CI/CD e testes

Todas as versões ficam em changelog.json, em português e inglês: 99 versões do sistema web, de v10 (Abril de 2021) a v114 (Setembro de 2026), e 14 da app móvel. O mesmo ficheiro alimenta a página pública de changelog do site.

Os workflows do GitHub Actions são quase todos do Edson: main vai para testes, production para os servidores dos clientes, com modo de manutenção e migrations automáticas. O repositório tem 61 ficheiros de teste PHPUnit, e o Edson é o maior autor na pasta de testes.

De um servidor por cliente a SaaS multi-empresa

Até 2026 cada cliente tinha uma instalação própria, o que tornava caro servir cooperativas e empresas pequenas. O FAMS Mahala junta várias empresas numa só base de dados, separadas por company_id, com um plano gratuito e caminho para planos pagos.

A base multi-empresa (um global scope Eloquent) foi escrita por um colega. O Edson levou o ramo de deploy até produção: roles Spatie por empresa, troca de Company::first() pela empresa do utilizador autenticado em controladores e exportações, limites do plano com testes, e o registo self-service de empresas.

Próximo passo (proposta): PWA offline-first

A app móvel actual assenta em Angular 11 e Ionic 5, difíceis de manter. O Edson escreveu uma proposta de arquitectura para uma PWA em Next.js com IndexedDB, sincronização por cursor e outbox, eventos idempotentes e detecção de conflitos por versão.

É só uma proposta: três documentos de desenho e um esqueleto de monorepo, sem código de aplicação. O âmbito do MVP é produtores, agentes e compras no campo.

Decisões técnicas

  1. 01

    Núcleo comum + plugins activáveis por empresa

    Stock, Compras, Insumos, Fábrica, ePayment, SMS e rastreabilidade do mel vivem em controladores de plugin separados, com permissões Spatie por plugin. Cada cliente liga só o que usa, sem ramos de código por cliente.

  2. 02

    API v1 com Sanctum e registo da última sincronização

    A app de campo autentica agentes e membros com tokens Sanctum, com limite de tentativas no login e no OTP. Um middleware grava a última sincronização de cada dispositivo, para o escritório saber quem está atrasado.

  3. 03

    Auditoria em todos os dados operacionais

    83 modelos implementam Auditable (owen-it/laravel-auditing). Em compras e créditos a produtores é preciso saber quem alterou o quê e quando.

  4. 04

    Deploy por ramo com GitHub Actions

    main vai para o servidor de testes e production para os servidores dos clientes, com um script que faz artisan down, composer --no-dev, migrate --force e up. O mesmo código serve vários deploys de clientes.

  5. 05

    Alertas de erro no Microsoft Teams

    Em vez de montar uma stack de observabilidade, os erros de produção vão para um canal do Teams através de um pacote Composer que o Edson mantém (laravel-teams-logging).

Imagens

01 / 07 — FAMS — recolha directa de dados no campo: registo de novos produtores, compras e insumos, com verificação na sede

Vídeos

  • O que é o FAMS: visão e benefícios, apresentado por Edson Famanda, gestor do sistema (português) · 0:39
  • O que é o FAMS: visão e benefícios, apresentado por Edson Famanda, gestor do sistema (inglês) · 0:40
  • Vídeo de apresentação do FAMS (inglês): campo, sede, SMS, mapas e relatórios · 2:01
  • O Edson apresenta o FAMS (inglês) · 0:58

Tecnologias

  • Laravel
  • PHP
  • MySQL
  • Bootstrap
  • JavaScript
  • GitHub Actions
  • M-Pesa
  • Ionic
  • Angular
  • Capacitor

Resultados verificáveis

produtores digitalizados, 50,5% mulheres
55 422
em rendimento pago aos agricultores (97,6 milhões de MZN)
US$ 1 526 984
valor total de compras registadas no FAMS
US$ 1 775 361
insumos distribuídos e rastreados, em 343 distribuições a 321 produtores
10 126
de área cultivada registada
26 199 ha
cadeias de valor (copra, algodão, milho, soja, mel, gado…) em 7 províncias
9 · 7
versões no changelog do produto (v10 → v114)
99
ficheiros de teste PHPUnit
61
migrations de base de dados
220
versões da app móvel documentadas (v50 → v103)
14
FAMS indicado como ferramenta de registo e monitoria de produtores no guia Kulima ndi Malonda
KnM
niras.com (abre noutro separador)

O que aprendi

Manter um produto durante mais de cinco anos pede disciplina aborrecida: changelog versão a versão, deploy automático por ramo e testes para as regras de negócio que mais doem, como os créditos de campanha.

ODS

  • ODS 2 · Fome Zero e Agricultura Sustentávelprincipal

    Cadastro e acompanhamento georreferenciado de pequenos produtores, monitoria da produção, distribuição de insumos rastreados e formações no terreno (metas 2.3 e 2.4).

  • ODS 8 · Trabalho Digno e Crescimento Económicoprincipal

    Operações digitalizadas em cooperativas e agronegócios, com pesos e pagamentos exactos e transparentes, menos fraude e menos custos administrativos (8.2, 8.3, 8.10).

  • ODS 9 · Indústria, Inovação e Infra-estruturasprincipal

    Aplicações web e móvel com operação offline, ligação entre produtores, pontos de recolha, armazéns e fábricas, e API para integração com outros sistemas (9.3, 9.4, 9.c).

  • ODS 12 · Consumo e Produção Responsáveisprincipal

    Stock, movimentações e rastreabilidade do produtor à indústria, com dados auditáveis para certificações e redução de perdas ao longo da cadeia (12.3, 12.6).

  • ODS 1 · Erradicação da Pobrezacomplementar

    Rendimento e registos financeiros dos produtores guardados no sistema, com histórico de compras, créditos de insumos e pagamentos.

  • ODS 5 · Igualdade de Génerocomplementar

    Dados desagregados por género, quando o cliente os recolhe; no painel de impacto do FAMS, cerca de metade dos produtores digitalizados são mulheres.

  • ODS 10 · Redução das Desigualdadescomplementar

    Inclusão de produtores antes informais e operação offline em zonas sem rede, com sincronização planeada quando volta a ligação.

  • ODS 16 · Paz, Justiça e Instituições Eficazescomplementar

    Pesagens, compras e pagamentos auditáveis, com utilizadores, funções e permissões por empresa e histórico completo para prestação de contas.

  • ODS 13 · Acção Climáticacomplementar

    Contributo apenas habilitador — recolha de dados no terreno e comunicação por SMS. O FAMS ainda não tem funcionalidades climáticas próprias.