Portfolio / Ops & Systèmes / mikrofarm

Aucune appli du Play Store
ne convenait.

Mikro Farm vend de l'aliment pour bétail, des médicaments vétérinaires, des semences, des pesticides et des engrais — au kilo, au sac, au container. Le propriétaire avait testé tous les POS du marché : aucun ne séparait l'entrepôt de la boutique, aucun ne recalculait les prix quand les fournisseurs bougeaient, et aucun n'indiquait au client ce qui était en rayon avant qu'il fasse une heure de route pour rien. On a donc construit celui qui le fait.

ClientMikro Farm
PérimètreCatalogue · POS · Entrepôt · Fournisseur
Sites1 boutique + 1 entrepôt
Taille des commandes1–2 containers / livraison
Année2026
Les problèmes du propriétaire

Cinq irritants qui revenaient chaque semaine.

Avant d'écrire la moindre ligne de code, le propriétaire nous a raconté le même samedi cinq fois de suite. Voici les plaies qui revenaient sans cesse.

Problème 01

Le client fait une heure de route. Le sac d'aliment n'est plus en rayon.

Le magasin est loin de la plupart des éleveurs. Quand ce qu'ils sont venus chercher est en rupture, le déplacement est perdu — et la confiance aussi.

« Ça me fait mal à chaque fois. Ils ont fait tout ce chemin pour rien. »
Problème 02

Le samedi matin, c'est plein. Les clients ne savent pas ce qu'ils veulent.

Les clients arrivent dans une boutique bondée sans avoir préparé leur liste — ils lisent les étiquettes en rayon pendant que dix autres personnes font la queue. Le temps du personnel en prend un coup.

Problème 03

Le stock est à deux endroits. Le système le compte comme un seul tas.

L'entrepôt et la boutique sont physiquement séparés, mais chaque POS du marché les fusionne. L'écran affiche 40 sacs, le rayon en a 3 et le dépôt 37 — et personne ne le sait jusqu'à ce qu'un client pose la question.

Problème 04

Connaître les niveaux bas oblige à arpenter l'entrepôt avec un carnet.

Chaque vendredi, quelqu'un compte. À la main. À l'œil. Les erreurs remontent deux semaines plus tard, quand une commande arrive en dessous de ce dont ils avaient vraiment besoin.

Problème 05

Une livraison, c'est un ou deux containers. Une mauvaise commande et vous la portez.

Ce n'est pas un sac à la fois. Une commande fournisseur, c'est un container d'aliment. Trop peu — rupture pendant un mois. Trop — capital immobilisé, péremption qui approche sur les médicaments et les semences.

« Et les fournisseurs bougent leurs prix toutes les quelques semaines. La marge se rogne sans que je m'en aperçoive. »
● Problèmes 01 + 02

Un client qui fait une heure de route doit savoir ce qui est en rayon.

La première chose que nous avons construite n'est pas pour le personnel. C'est un catalogue public, pédagogique, que le client ouvre avant de monter en voiture. Chaque produit affiche le stock en temps réel par site, des notes de dosage pour les médicaments et les semences, et un bouton « réserver / commander » pour que le sac soit mis de côté à l'arrivée.

Le problème en rayon se résout de lui-même : les clients qui ont déjà choisi chez eux n'ont pas besoin de lire des étiquettes dans la file. Le problème de l'heure de route aussi : si c'est en rouge, ils ne bougent pas.

« Maintenant ils m'envoient des messages pour demander quel engrais pour les choux en saison sèche. Avant, ils arrivaient juste en ne sachant pas. » — Propriétaire, Mikro Farm
9:41
•••▮▮
Mikro Farm
Toko · stock en direct
Panier · 0
All Pakan Obat Benih Pupuk
Pakan Ayam Petelur 50kg
CP · Sak
12 sak
Rp 425k
Vitamin B-Complex 1L
Medion · Botol
2 restants
Rp 78k
▸ Pourquoi c'est important
Chou en saison sèche → Urea + KNO3
Azote pour la croissance des feuilles, potassium pour la résistance au stress hydrique. Les deux sont en stock — commandez ensemble pour un retrait gratuit.
Pupuk Urea 50kg
Pusri · Sak
Réappro 3j
Rp 280k
● Problème 03

Gudang et Toko sont deux endroits. On en a fait deux colonnes.

Chaque article a un enregistrement maître unique, mais deux lignes de stock — une pour l'entrepôt, une pour la surface de vente. Le coût unitaire (HPP) est également suivi par site, de sorte qu'un transfert emporte son coût tel quel et que les rapports de marge restent fiables.

Les ventes sont d'abord déduites de Toko. Si Toko vient à manquer, le système bascule automatiquement sur Gudang — mais enregistre le prélèvement, afin que le calcul de réapprovisionnement sache que c'est le rayon qui doit être réalimenté, pas seulement le dépôt.

Gudang réserve
Pakan Ayam 50kg37
Pupuk Urea 50kg82
Vitamin B-Complex 1L14
Pestisida Decis 100ml26
Toko en rayon
Pakan Ayam 50kg3
Pupuk Urea 50kg8
Vitamin B-Complex 1L2
Pestisida Decis 100ml5
● Problème 04

Les rondes au carnet deviennent un écran que le propriétaire consulte déjà.

Les alertes de stock bas fonctionnent par site, pas en agrégat. L'onglet « Quoi commander » fait la même logique qu'on effectuait à la main le vendredi soir — sauf qu'il ne se trompe jamais et affiche les articles par urgence, pas par ordre alphabétique.

Les catégories avec suivi de péremption (médicaments, semences, pesticides) bénéficient d'un second passage : tout ce qui expire dans moins de 60 jours apparaît dans le même onglet pour être vendu ou déplacé avant d'être sans valeur.

mikrofarm / quoi commander
direct
Sous le min.
14
Péremption <60j
06
Heures économisées / sem.
4–6
ArticleSiteEn stockMinAction
Pakan Ayam Petelur 50kgToko310Pindah
Pupuk Urea 50kgGudang82120Réappro
Vit. B-Complex 1L (exp 09/26)Toko24Vendre d'abord
Decis 100mlGudang2650Réappro
● Problème 05 — quantité

Le calcul du container, pas du sac.

Pour un détaillant au sac, « commander plus quand le stock baisse » suffit. Pour Mikro Farm, la question est combien de sacs remplissent un container de 20 pieds sans dépasser six mois de demande. Le réapprovisionnement n'est donc pas un bouton — c'est une calculatrice que le propriétaire peut ajuster.

Le système agrège les 12 dernières semaines de ventes, les multiplie par le délai fournisseur, et arrondit le résultat à la MOQ fournisseur et à la prochaine ligne de remplissage du container. Le propriétaire voit le calcul, pas seulement la réponse, et peut le régler avant d'envoyer.

▸ Calculateur de réappro · Pakan Ayam 50kg
avg_weekly_sales × lead_time_weeks × safety
32 sak/sem × 6 sem × 1.25 = 240 sak
arrondi à la MOQ (50 sak) → 250 sak
arrondi au container (300 sak) → 300 sak ✓
Suggestion
300 sak
Remplissage
100%
Couverture
~9 sem
● Problème 05 — prix

Les fournisseurs bougent leurs prix. La marge recule en silence. Plus maintenant.

Chaque réception recalcule le coût unitaire moyen pondéré (HPP) par site. Si le nouveau HPP franchit la plage de marge définie par le propriétaire, le prix de vente se met à jour automatiquement et est consigné — aussi bien dans le POS que dans le catalogue client.

Le propriétaire dispose d'un fil unique de tous les mouvements : ce qui a changé, pourquoi, et de combien. Fini le « attends, pourquoi la marge a chuté ce mois-ci ».

▸ Mouvements de prix · 7 derniers jours
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%
Comment on a construit

Cinq semaines. Sur la base d'un POS existant.

On n'est pas partis de zéro. Le squelette du POS venait de notre propre modèle Floural — ventes, dépenses, présences, paiements. Le travail sur mesure portait sur l'inventaire : le séparer, le coûter, et le rendre visible.

01

Semaine 1 — Parcourir l'entrepôt

Modèle d'inventaire sur papier avant la moindre ligne de code. Cartographie de chaque catégorie, chaque unité (kg / sak / litre / pcs), chaque MOQ fournisseur, chaque SKU avec suivi de péremption.

02

Semaine 2 — Modèle de données à deux sites

Construction de la jonction inventory_items + inventory_stock (un maître, quantité et HPP par site). Coût moyen pondéré câblé sur chaque réception. Flux de transfert (« Pindah ke Toko ») livré la même semaine.

03

Semaine 3 — Recâblage du POS

Les ventes touchent d'abord Toko, basculent sur Gudang, capturent le HPP sur la ligne de commande. Alertes de stock bas et onglet « Quoi commander » pilotés par des jointures en temps réel.

04

Semaine 4 — Catalogue public + calcul de réappro

PWA client lisant la même table de stock que le POS alimente. Calculateur de réappro avec arrondi au container. Fil de prix lu sur les événements de réception.

05

Semaine 5 — Fonctionnement en parallèle

Pendant une semaine complète, chaque comptage a été fait à la fois sur le système et sur le carnet. Réconciliation à la fin. Écarts → bugs → correction → remise.

Ce qui fonctionne maintenant

Six tâches que le propriétaire ne fait plus à la main.

Pas de chiffres fabriqués mois par mois — le système est récent. Voici les flux de travail qui sont passés du papier à l'écran.

2

Sites de stock, séparés

Gudang et Toko ont leur propre quantité et HPP. Les ventes se répercutent proprement. Les transferts portent leur coût.

0

Mises à jour de prix manuelles

Chaque réception recalcule le HPP et réajuste le prix de vente selon la plage de marge du propriétaire. Le catalogue le reflète instantanément.

1

Endroit pour voir quoi commander

Un onglet, trié par urgence, incluant les articles proches de la péremption. Remplace la ronde du vendredi au carnet.

100%

Stock en direct visible par les clients

Le catalogue public lit la même table que le POS alimente. Sans staging, sans délai de cache.

1–2

Calcul container, automatisé

Les suggestions de réappro s'arrondissent à la MOQ et au remplissage container. Le propriétaire voit le calcul, peut l'ajuster, puis envoie.

0

Abonnements SaaS

Remplace toutes les tentatives de POS du Play Store qui ne convenaient pas. Entièrement détenu. Hébergé sur un petit VPS.

La stack

Choisie pour un commerce offline-first en Indonésie.

▸ Appli POS

React Native + Expo

Tourne sur la tablette Android du personnel à la caisse. Offline-first via une file de synchronisation — la caisse continue d'enregistrer les ventes quand le wi-fi clignote, et rejoue à la reconnexion. Mises à jour OTA pour déployer des correctifs JS sans réinstallation.

React Native · Expo 55 · Zustand · TypeScript
▸ Backend

PHP + MySQL sur un petit VPS

Un fichier par domaine, routage ?action=, PDO brut. Auth JWT. Journal d'audit sur chaque mutation pour retracer tout changement de stock jusqu'à une personne et un instant.

PHP · MySQL · PDO · JWT · audit log
▸ Catalogue client

PWA lisant le stock en direct

Appli navigateur publique. Lit la même table inventory_stock que le POS alimente — sans synchronisation séparée. Pédagogie d'abord : chaque produit porte une note « pourquoi ce produit » pour le contexte de vente croisée.

PWA · stock en direct par site · lien de partage WhatsApp
▸ Modèle d'inventaire

Maître + stock par site

Une ligne inventory_items par SKU. Deux lignes inventory_stock (Gudang, Toko) indexées par (item_id, location). Chaque réception déclenche un HPP moyen pondéré et un éventuel recalcul du prix de vente.

table de jonction · HPP moyen pondéré · suivi péremption
Suivant → Floural

Votre POS du marché
ne convient pas à votre magasin ?

Appel de cadrage gratuit. On vous dit la solution la moins chère qui convient vraiment.