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