Portafolio / Sistemas de negocio / mikrofarm

Un POS que ninguna app de Play Store
podía igualar.

Mikro Farm vende alimento para animales, medicamentos, semillas, pesticidas y fertilizantes — por kilo, por saco, por contenedor. El dueño había probado todos los POS del mercado y ninguno separaba el almacén de la tienda, ninguno actualizaba precios cuando los proveedores se movían, y ninguno le decía al cliente qué había en el estante antes de manejar una hora para averiguarlo. Así que construimos uno que sí lo hacía.

ClienteMikro Farm
AlcanceCatálogo · POS · Almacén · Proveedor
Ubicaciones1 tienda + 1 almacén
Tamaño de pedido1–2 contenedores / envío
Año2026
Los problemas del dueño

Cinco cosas que dolían cada semana.

Antes de escribir una sola línea, el dueño nos llevó por el mismo sábado cinco veces. Estos son los golpes que aparecieron una y otra vez.

Problema 01

El cliente maneja una hora. El saco de alimento no está en el estante.

La tienda queda lejos de donde vive la mayoría de los agricultores. Cuando lo que vinieron a buscar no está en stock, el viaje se pierde — y también la confianza.

"Me duele cada vez. Vinieron hasta aquí para nada."
Problema 02

El sábado por la mañana está lleno. Los clientes no saben qué quieren.

Los que llegan sin reserva entran a una tienda ocupada sin plan — se quedan frente al estante tratando de leer etiquetas mientras diez personas más hacen cola. El tiempo del personal es el gran damnificado.

Problema 03

El stock está en dos lugares. El sistema lo cuenta como uno solo.

El almacén y la tienda están físicamente separados, pero todos los POS del mercado los mezclan. Entonces la pantalla dice 40 sacos, el estante tiene 3, y el fondo tiene 37 — y nadie lo sabe hasta que un cliente pregunta.

Problema 04

Saber qué está bajo implica recorrer el almacén con un portapapeles.

Cada viernes, alguien cuenta. A mano. A ojo. Los errores aparecen dos semanas después cuando llega un pedido con menos de lo que realmente necesitaban.

Problema 05

Un envío es uno o dos contenedores. Equivocarse en el pedido cuesta caro.

No es una bolsa a la vez. Un pedido a un solo proveedor es un contenedor de alimento. Pedir de menos — sin stock por un mes. Pedir de más — capital congelado, fecha de vencimiento acechando en medicamentos y semillas.

"Encima los proveedores mueven precios cada pocas semanas. El margen se come solo sin que me dé cuenta."
● Problemas 01 + 02

Los clientes que manejan una hora necesitan saber qué hay en el estante.

Lo primero que construimos no es para el personal. Es un catálogo público, orientado a la educación, que el cliente abre antes de subirse al auto. Cada producto tiene stock en tiempo real por ubicación, notas de dosificación para medicamentos y semillas, y un botón de "reservar / pedir" para que el saco esté apartado cuando lleguen.

El problema del estante se resuelve solo: los clientes que ya eligieron en casa no necesitan leer etiquetas en una cola. El problema de manejar una hora se resuelve solo: si está en rojo, no manejan.

"Ahora me escriben preguntando qué fertilizante usar para repollo en temporada seca. Antes simplemente llegaban confundidos." — Dueño, Mikro Farm
9:41
•••▮▮
Mikro Farm
Tienda · stock en vivo
Carrito · 0
Todo Pakan Obat Benih Pupuk
Pakan Ayam Petelur 50kg
CP · Sak
12 sacos
Rp 425k
Vitamin B-Complex 1L
Medion · Botol
Quedan 2
Rp 78k
▸ Por qué importa
Repollo en temporada seca → Urea + KNO3
Agregue nitrógeno para el crecimiento foliar, potasio para la tolerancia al estrés hídrico. Tenemos ambos en stock — pida juntos y reciba un pack de retiro gratuito.
Pupuk Urea 50kg
Pusri · Sak
Reposición en 3d
Rp 280k
● Problema 03

Gudang y Toko son dos lugares. Así que los pusimos en dos columnas.

Cada artículo tiene un registro maestro pero dos filas de stock — una para el almacén, una para el piso de tienda. El costo promedio ponderado (HPP) se rastrea por ubicación también, así que una transferencia lleva el costo tal cual y los reportes de margen se mantienen honestos.

Las ventas descuentan primero de Toko. Si Toko queda corto, el sistema cae a Gudang sin confirmación — pero registra el movimiento, para que el cálculo de reabastecimiento sepa que el estante necesita llenarse, no solo el fondo.

Gudang reserva
Pakan Ayam 50kg37
Pupuk Urea 50kg82
Vitamin B-Complex 1L14
Pestisida Decis 100ml26
Toko en estante
Pakan Ayam 50kg3
Pupuk Urea 50kg8
Vitamin B-Complex 1L2
Pestisida Decis 100ml5
● Problema 04

Las rondas con portapapeles se convierten en una pantalla en la que el dueño ya confía.

Las alertas de stock bajo corren por ubicación, no en conjunto. La pestaña "Qué comprar" hace lo mismo que los viernes por la noche se hacía a mano — salvo que nunca se equivoca, y muestra los artículos por urgencia, no por orden alfabético.

Las categorías con seguimiento de vencimiento (medicamentos, semillas, pesticidas) reciben una segunda revisión: cualquier artículo a menos de 60 días de vencimiento aparece en la misma pestaña para que se venda o se mueva antes de que no valga nada.

mikrofarm / qué comprar
en vivo
Bajo mínimo
14
Vence <60d
06
Horas ahorradas / sem
4–6
ArtículoUbic.En manoMín.Acción
Pakan Ayam Petelur 50kgToko310Transferir
Pupuk Urea 50kgGudang82120Reabastecer
Vit. B-Complex 1L (vence 09/26)Toko24Vender primero
Decis 100mlGudang2650Reabastecer
● Problema 05 — cantidad

Cálculo por contenedor, no por saco.

Para un minorista que vende de a una bolsa, "pedir más cuando baja" alcanza. Para Mikro Farm, la pregunta es cuántos sacos llenan un contenedor de 20 pies sin sobrepasar seis meses de demanda. Así que el reabastecimiento no es un botón — es una calculadora que el dueño puede ajustar.

El sistema toma las últimas 12 semanas de ventas, multiplica por el tiempo de entrega del proveedor, y ajusta el resultado hacia arriba hasta el MOQ del proveedor y la siguiente línea de llenado del contenedor. El dueño ve el cálculo, no solo la respuesta, y puede ajustarlo antes de enviar.

▸ Calculadora de reabastecimiento · Pakan Ayam 50kg
ventas_promedio_semanal × semanas_entrega × seguridad
32 sacos/sem × 6 sem × 1.25 = 240 sacos
ajustar a MOQ (50 sacos) → 250 sacos
ajustar a contenedor (300 sacos) → 300 sacos ✓
Sugerencia
300 sacos
Llenado contenedor
100%
Cobertura
~9 sem
● Problema 05 — precio

Los proveedores mueven precios. El margen se mueve en silencio. Ya no más.

Cada recepción de mercadería recalcula el costo promedio ponderado (HPP) por ubicación. Si el nuevo HPP cruza la banda de margen que define el dueño, el precio de venta se actualiza automáticamente y queda registrado — tanto en el POS como en el catálogo para clientes.

El dueño ve un único registro de cada movimiento: qué cambió, por qué, y cuánto. Se acabó el "espera, ¿por qué bajó el margen este mes?"

▸ Movimientos de precio · últimos 7 días
Pakan Ayam 50kg Rp 410k Rp 425k ▲ +3.7%
Pupuk Urea 50kg Rp 295k Rp 280k ▼ −5.1%
Decis 100ml Rp 64k Rp 68k ▲ +6.3%
Benih Cabai 10g Rp 28k Rp 26k ▼ −7.1%
Cómo lo construimos

Cinco semanas. Construido sobre una base de POS existente.

No empezamos de cero. El esqueleto del POS vino de nuestra propia plantilla de Floural — ventas, gastos, asistencia, pagos. El trabajo personalizado fue el inventario: dividirlo, costear y visualizarlo.

01

Semana 1 — Recorrer el almacén

Modelo de inventario en papel antes de escribir una sola línea de código. Mapeamos cada categoría, cada unidad (kg / saco / litro / unidades), cada MOQ de proveedor, cada SKU con seguimiento de vencimiento.

02

Semana 2 — Modelo de datos de dos ubicaciones

Construimos inventory_items + unión inventory_stock (un registro maestro, cantidad y HPP por ubicación). Cableamos costo promedio ponderado en cada recepción. El flujo de transferencia ("Pindah ke Toko") salió la misma semana.

03

Semana 3 — Reconfiguración del POS

Las ventas ahora descuentan primero de Toko, caen a Gudang, y guardan el HPP en la línea del pedido. Las alertas de stock bajo y la pestaña "Qué comprar" funcionan con joins en vivo.

04

Semana 4 — Catálogo público + cálculo de reabastecimiento

PWA para clientes que lee la misma tabla de stock que escribe el POS. Calculadora de reabastecimiento con ajuste al llenado del contenedor. Registro de precios alimentado por eventos de recepción.

05

Semana 5 — Correr junto al método anterior

Durante una semana completa, cada conteo se hizo tanto en el sistema como en el portapapeles. Se reconciliaron al final. Discrepancias → errores → corrección → entrega.

Qué está funcionando ahora

Seis cosas que el dueño ya no hace a mano.

Sin números inventados mes a mes — el sistema es nuevo. Estos son los flujos de trabajo que salieron del papel y de la cabeza del dueño.

2

Ubicaciones de stock, separadas

Gudang y Toko tienen su propia cantidad y HPP. Las ventas caen limpiamente. Las transferencias llevan el costo.

0

Actualizaciones de precio manuales

Cada recepción recalcula el HPP y actualiza el precio de venta según la banda de margen del dueño. El catálogo lo refleja al instante.

1

Lugar para ver qué comprar

Una sola pestaña, ordenada por urgencia, incluyendo artículos próximos a vencer. Reemplaza la ronda del viernes con portapapeles.

100%

Stock en tiempo real visible para los clientes

El catálogo público lee la misma tabla que escribe el POS. Sin capas intermedias, sin demora de caché.

1–2

Cálculo por contenedor, automatizado

Las sugerencias de reabastecimiento se ajustan al MOQ y al llenado del contenedor. El dueño ve el cálculo, puede ajustarlo y luego envía.

0

Suscripciones SaaS

Reemplaza cada intento de POS de Play Store que no encajaba. Propio al 100%. Alojado en un VPS pequeño.

La tecnología

Elegida para retail indonesio con prioridad offline.

▸ App POS

React Native + Expo

Corre en la tablet Android del personal en el mostrador. Prioridad offline mediante una cola de sincronización — el mostrador sigue registrando ventas cuando el wifi parpadea, y las replica cuando vuelve. Actualizaciones OTA para enviar correcciones solo de JS sin reinstalar.

React Native · Expo 55 · Zustand · TypeScript
▸ Backend

PHP + MySQL en un VPS pequeño

Un archivo por dominio, enrutamiento por ?action=, PDO sin capas. Autenticación JWT. Log de auditoría en cada mutación para rastrear cualquier cambio de stock hasta una persona y un momento.

PHP · MySQL · PDO · JWT · log de auditoría
▸ Catálogo para clientes

PWA con stock en tiempo real

Aplicación de navegador de cara al público. Lee la misma tabla inventory_stock que escribe el POS — sin sincronización separada. Orientada a la educación: cada producto lleva una nota de "para qué sirve" con contexto de venta cruzada.

PWA · stock en vivo por ubicación · enlace de compartir por WhatsApp
▸ Modelo de inventario

Registro maestro + stock por ubicación

Una fila de inventory_items por SKU. Dos filas de inventory_stock (Gudang, Toko) con clave en (item_id, location). Cada evento de recepción dispara el costo promedio ponderado y una actualización opcional del precio de venta.

tabla de unión · HPP promedio ponderado · seguimiento de vencimiento
Siguiente caso → Floural

¿El POS del mercado
no encaja en su tienda?

Llamada de alcance gratuita. Le decimos la opción más económica que realmente encaja.