O Farmso é uma plataforma moderna, nativa da borda. Os clientes são leves e rápidos; a lógica e os dados vivem na rede global da Cloudflare; e os registros críticos de confiança podem ser ancorados em uma blockchain pública. Esta página explica o desenho técnico e como a plataforma é operada.
Visão geral do sistema
Clients
Edge API
Data & services
As peças
App web
React + TanStack Router/Query, construído com rsbuild/Vite, implantado no Cloudflare Pages. O back-office: painéis, conformidade, faturamento, análises.
App mobile
Expo / React Native (offline-first), entregue via EAS para iOS e Android. Captura por câmera + EID Bluetooth + NFC, com uma caixa de saída local que sincroniza.
Backend (cf-back)
Cloudflare Workers + Hono + Drizzle ORM. Uma única API para web e mobile, com isolamento de organização por requisição e liberação de recursos por plano.
Banco de dados — D1
Cloudflare D1 (SQLite na borda). Migrações versionadas; bancos de dev, staging e prod separados.
Arquivos — R2
Armazenamento de objetos Cloudflare R2 para documentos, fotos de inspeção, etiquetas e exportações.
On-chain — Solana
O programa Anchor pet_did implantado ancora um hash do registro de cada animal; o Farmso gerencia as chaves para que os usuários nunca toquem em carteiras.
Autenticação e multilocação
O login é sem senha: o AWS SES envia por e-mail um código único e, ao dar certo, o backend emite seu próprio JWT assinado (sem provedor de identidade externo). Cada requisição carrega o token mais a organização ativa, e a API restringe todos os dados a essa organização — um locatário nunca pode ver os registros de outro. O acesso a recursos é liberado pelo plano de assinatura da organização, verificado no servidor, então a mesma regra se aplica quer a requisição venha do web ou do app mobile.
Sincronização offline-first
O app mobile é feito para lugares sem sinal. As leituras são servidas de um cache no dispositivo; as escritas (registrar um animal, lançar um tratamento, uma leitura, uma inspeção) são colocadas em uma caixa de saída local e retornadas como “na fila”. Quando a conectividade volta, a caixa de saída é esvaziada automaticamente — as leituras são reproduzidas como um único lote idempotente, então nada é duplicado, e quaisquer conflitos são exibidos em vez de descartados em silêncio. Você pode acompanhar e gerenciar isso na tela Pending Changes do app.
Operações
O Farmso opera três ambientes isolados — desenvolvimento, staging e produção — cada um com seu próprio banco de dados, bucket de armazenamento e host de API (produção é api.farmso.org). O código flui por pull requests para o staging e depois para o branch main. O trabalho em segundo plano (ancoragem em blockchain, varreduras noturnas de anomalias, cobrança mensal de uso de IA, expiração de certificações) roda em Cloudflare Queues e gatilhos cron agendados. A cobrança e o uso medido de IA são tratados via Stripe.
Postura de segurança: JWTs assinados, isolamento estrito de dados por organização, aplicação de planos no servidor, transporte criptografado (HTTPS) em toda parte e prova de adulteração opcional em blockchain pública para os registros que mais importam.