Architettura tecnica e operativa

Come è costruito e gestito Farmso: client web + mobile, backend Cloudflare Workers, storage D1/R2, ancoraggio Solana, autenticazione senza password, sincronizzazione offline e operazioni multi-ambiente.

Aggiornato 2026-07-12 · 8 min

Farmso è una piattaforma moderna, nativa dell’edge. I client sono leggeri e veloci; la logica e i dati vivono sulla rete globale di Cloudflare; e i record critici per la fiducia possono essere ancorati su una blockchain pubblica. Questa pagina spiega il progetto tecnico e come viene gestita la piattaforma.

Panoramica del sistema

Clients

Web app
React + TanStack · Cloudflare Pages
Mobile app
Expo / React Native · offline-first · EAS

Edge API

Farmso API — Cloudflare Workers + Hono + Drizzle
Passwordless JWT auth · per-organisation isolation · plan-based feature gating

Data & services

D1
SQLite at the edge
R2
Documents · photos · exports
Solana
pet_did on-chain anchoring
AWS SES
One-time login codes · email
Stripe
Billing · metered AI usage
Queues & Cron
Anchoring · scans · billing jobs

I componenti

Web app

React + TanStack Router/Query, costruita con rsbuild/Vite, distribuita su Cloudflare Pages. Il back-office: dashboard, conformità, fatturazione, analisi.

App mobile

Expo / React Native (offline-first), distribuita tramite EAS su iOS e Android. Acquisizione con fotocamera + EID Bluetooth + NFC, con una outbox locale che si sincronizza.

Backend (cf-back)

Cloudflare Workers + Hono + Drizzle ORM. Un’unica API per web e mobile, con isolamento per organizzazione a ogni richiesta e gating delle funzionalità in base al piano.

Database — D1

Cloudflare D1 (SQLite all’edge). Migrazioni versionate; database separati per dev, staging e prod.

File — R2

Storage a oggetti Cloudflare R2 per documenti, foto delle ispezioni, etichette ed esportazioni.

On-chain — Solana

Il programma Anchor pet_did già distribuito ancora un hash del record di ogni animale; Farmso gestisce le chiavi così gli utenti non toccano mai i wallet.

Autenticazione e multi-tenancy

L’accesso è senza password: AWS SES invia via email un codice monouso e, in caso di successo, il backend emette il proprio JWT firmato (nessun provider di identità di terze parti). Ogni richiesta porta con sé il token più l’organizzazione attiva, e l’API limita tutti i dati a quell’organizzazione — un tenant non può mai vedere i record di un altro. L’accesso alle funzionalità è vincolato al piano di abbonamento dell’organizzazione, verificato sul server, così la stessa regola vale sia che una richiesta arrivi dal web sia dall’app mobile.

Sincronizzazione offline-first

L’app mobile è costruita per i luoghi senza segnale. Le letture sono servite da una cache sul dispositivo; le scritture (registrare un animale, annotare un trattamento, una scansione, un’ispezione) vengono collocate in una outbox locale e restituite come “in coda”. Quando la connettività ritorna, la outbox si svuota automaticamente — le scansioni vengono ripetute come un unico batch idempotente così nulla viene duplicato, e gli eventuali conflitti vengono segnalati anziché scartati silenziosamente. Puoi osservarlo e gestirlo nella schermata Pending Changes dell’app.

Operazioni

Farmso esegue tre ambienti isolati — sviluppo, staging e produzione — ciascuno con il proprio database, bucket di storage e host API (la produzione è api.farmso.org). Il codice attraversa le pull request verso staging e poi verso il ramo main. Il lavoro in background (ancoraggio blockchain, scansioni notturne delle anomalie, fatturazione mensile dell’uso AI, scadenza delle certificazioni) gira su Cloudflare Queues e trigger cron programmati. La fatturazione e l’uso AI a consumo sono gestiti tramite Stripe.

Postura di sicurezza: JWT firmati, rigoroso isolamento dei dati per organizzazione, applicazione del piano lato server, trasporto cifrato (HTTPS) ovunque e prova opzionale di non manomissione su blockchain pubblica per i record più importanti.