Farmso es una plataforma moderna, nativa del edge. Los clientes son ligeros y rápidos; la lógica y los datos viven en la red global de Cloudflare; y los registros críticos para la confianza pueden anclarse en una cadena de bloques pública. Esta página explica el diseño técnico y cómo se opera la plataforma.
Visión general del sistema
Clients
Edge API
Data & services
Las piezas
App web
React + TanStack Router/Query, construida con rsbuild/Vite, desplegada en Cloudflare Pages. El back-office: paneles, cumplimiento, facturación, analítica.
App móvil
Expo / React Native (offline-first), distribuida vía EAS a iOS y Android. Captura por cámara + EID Bluetooth + NFC, con una bandeja de salida local que sincroniza.
Backend (cf-back)
Cloudflare Workers + Hono + Drizzle ORM. Una única API para web y móvil, con aislamiento por organización por solicitud y control de funciones según el plan.
Base de datos — D1
Cloudflare D1 (SQLite en el edge). Migraciones versionadas; bases de datos separadas de desarrollo, staging y producción.
Archivos — R2
Almacenamiento de objetos Cloudflare R2 para documentos, fotos de inspección, etiquetas y exportaciones.
On-chain — Solana
El programa Anchor pet_did desplegado ancla un hash del registro de cada animal; Farmso gestiona las claves para que los usuarios nunca toquen monederos.
Autenticación e inquilinos
El inicio de sesión es sin contraseña: AWS SES envía por correo un código de un solo uso y, al validarlo, el backend emite su propio JWT firmado (sin proveedor de identidad externo). Cada solicitud lleva el token más la organización activa, y la API acota todos los datos a esa organización: un inquilino nunca puede ver los registros de otro. El acceso a funciones se controla según el plan de suscripción de la organización, verificado en el servidor, de modo que la misma regla se aplica venga la solicitud de la web o de la app móvil.
Sincronización offline-first
La app móvil está pensada para lugares sin señal. Las lecturas se sirven desde una caché en el dispositivo; las escrituras (registrar un animal, anotar un tratamiento, un escaneo, una inspección) se colocan en una bandeja de salida local y se devuelven como «en cola». Cuando vuelve la conectividad, la bandeja se vacía automáticamente: los escaneos se reproducen como un único lote idempotente para que nada se duplique, y los conflictos se muestran en lugar de descartarse en silencio. Puedes verlo y gestionarlo en la pantalla Cambios pendientes de la app.
Operaciones
Farmso ejecuta tres entornos aislados —desarrollo, staging y producción—, cada uno con su propia base de datos, bucket de almacenamiento y host de API (producción es api.farmso.org). El código fluye mediante pull requests hacia staging y luego a la rama principal. El trabajo en segundo plano (anclaje en cadena de bloques, escaneos nocturnos de anomalías, facturación mensual del uso de IA, expiración de certificaciones) se ejecuta en Cloudflare Queues y disparadores cron programados. La facturación y el uso medido de IA se gestionan a través de Stripe.
Postura de seguridad: JWT firmados, aislamiento estricto de datos por organización, aplicación del plan en el servidor, transporte cifrado (HTTPS) en todas partes y evidencia de manipulación opcional en cadena de bloques pública para los registros más importantes.