Portfolio / System Ops / mikrofarm

Kein POS aus dem Play Store
hat gepasst.

Mikro Farm verkauft Tierfutter, Tierarzneimittel, Saatgut, Pestizide und Dünger — kiloweise, sackweise, containerweise. Der Inhaber hatte jeden Standard-POS ausprobiert: Keiner trennte Lager vom Ladenregal, keiner passte Preise an, wenn Lieferanten nachjustierten, und keiner zeigte dem Kunden, was auf dem Regal lag, bevor er eine Stunde fuhr. Also haben wir einen gebaut, der das kann.

KundeMikro Farm
LeistungenKatalog · POS · Lager · Lieferant
Standorte1 Laden + 1 Lager
Bestellgröße1–2 Container / Lieferung
Jahr2026
Die Probleme des Inhabers

Fünf Dinge, die jede Woche wehtaten.

Bevor wir eine einzige Zeile schrieben, hat uns der Inhaber denselben Samstag fünf Mal erklärt. Das sind die Stellen, die immer wieder aufgetaucht sind.

Problem 01

Kunde fährt eine Stunde. Der Sack Futter liegt nicht im Regal.

Der Laden liegt weit von den meisten Landwirten entfernt. Wenn das Gesuchte nicht vorrätig ist, war die Fahrt umsonst — und das Vertrauen gleich mit.

„Es tut mir jedes Mal leid. Die sind so weit gefahren, für nichts."
Problem 02

Samstagvormittag ist voll. Kunden wissen nicht, was sie wollen.

Laufkundschaft kommt ohne Plan in einen überfüllten Laden — steht vor dem Regal und liest Etiketten, während zehn andere warten. Das Ergebnis: Personalzeit geht für Beratung drauf.

Problem 03

Bestand liegt an zwei Orten. Das System zählt ihn als einen Haufen.

Lager und Ladenregal sind räumlich getrennt, aber jeder Standard-POS wirft beides zusammen. Das System zeigt 40 Säcke, das Regal hat 3 und hinten stehen 37 — niemand merkt es, bis ein Kunde fragt.

Problem 04

Nachschau, was knapp wird, heißt: Lager mit Klemmbrett ablaufen.

Jeden Freitag zählt jemand. Manuell. Mit dem Auge. Fehler zeigen sich zwei Wochen später, wenn eine Bestellung mit weniger ankommt, als tatsächlich gebraucht wurde.

Problem 05

Eine Lieferung sind ein bis zwei Container. Wer falsch bestellt, sitzt drauf.

Hier geht es nicht um sackweise Mengen. Eine einzelne Lieferantenbestellung ist ein Container Futter. Zu wenig — ein Monat ohne Ware. Zu viel — Kapital gebunden, Verfallsdaten bei Medikamenten und Saatgut rücken heran.

„Und Lieferanten ändern die Preise alle paar Wochen. Die Marge schmilzt, ohne dass ich es merke."
● Probleme 01 + 02

Wer eine Stunde fährt, will vorher wissen, was im Regal liegt.

Was wir als Erstes gebaut haben, ist nicht für das Personal. Es ist ein öffentlicher, wissensorientierter Katalog, den der Kunde öffnet, bevor er ins Auto steigt. Jedes Produkt zeigt den Live-Bestand je Standort, Dosierungshinweise für Medikamente und Saatgut sowie einen „Reservieren / Bestellen"-Button, damit der Sack bereits bereitgelegt ist, wenn der Kunde eintrifft.

Das Regalrätsel löst sich von selbst: Wer zuhause bereits gewählt hat, muss in der Warteschlange keine Etiketten mehr lesen. Das Fahrtenproblem löst sich von selbst: Ist es rot, fährt man nicht.

„Jetzt schreiben sie mir und fragen, welcher Dünger für Kohl in der Trockenzeit passt. Früher kamen sie einfach verwirrt rein." — Inhaber, Mikro Farm
9:41
•••▮▮
Mikro Farm
Toko · Live-Bestand
Warenkorb · 0
Alle Pakan Obat Benih Pupuk
Pakan Ayam Petelur 50kg
CP · Sak
12 sak
Rp 425k
Vitamin B-Complex 1L
Medion · Botol
Noch 2
Rp 78k
▸ Warum das wichtig ist
Kohl in der Trockenzeit → Urea + KNO3
Stickstoff für Blattwachstum, Kalium gegen Trockenstress. Beides vorrätig — zusammen bestellen, kostenlose Abholpackung.
Pupuk Urea 50kg
Pusri · Sak
Restock 3d
Rp 280k
● Problem 03

Gudang und Toko sind zwei Orte. Also haben wir zwei Spalten gebaut.

Jeder Artikel hat einen zentralen Datensatz, aber zwei Bestandszeilen — eine für das Lager, eine für das Ladenregal. HPP wird ebenfalls je Standort erfasst, sodass ein Transfer die Kosten unverändert mitführt und Margenberichte korrekt bleiben.

Verkäufe ziehen zuerst vom Toko ab. Reicht der Toko nicht, wechselt das System ohne Bestätigung auf den Gudang — protokolliert den Zugriff aber, damit die Nachbestellberechnung weiß: das Regal muss aufgefüllt werden, nicht nur das Lager.

Gudang Lagerbestand
Pakan Ayam 50kg37
Pupuk Urea 50kg82
Vitamin B-Complex 1L14
Pestisida Decis 100ml26
Toko im Regal
Pakan Ayam 50kg3
Pupuk Urea 50kg8
Vitamin B-Complex 1L2
Pestisida Decis 100ml5
● Problem 04

Die Klemmbrettrunden werden zu einem Bildschirm, dem der Inhaber bereits vertraut.

Mindestbestandswarnungen laufen je Standort, nicht aggregiert. Der „Was kaufen"-Tab ist dieselbe Logik, die früher freitags per Hand erledigt wurde — nur dass er sich nie verzählt und Artikel nach Dringlichkeit sortiert, nicht alphabetisch.

Verfallsdatumkategorien (Medikamente, Saatgut, Pestizide) erhalten einen zweiten Durchlauf: Alles, was in weniger als 60 Tagen abläuft, erscheint im selben Tab und kann noch verkauft oder umgelagert werden, bevor es wertlos wird.

mikrofarm / was kaufen
live
Unter Minimum
14
Läuft ab <60d
06
Std. gespart / Woche
4–6
ArtikelOrtVorratMinAktion
Pakan Ayam Petelur 50kgToko310Pindah
Pupuk Urea 50kgGudang82120Nachbestellen
Vit. B-Complex 1L (exp 09/26)Toko24Zuerst verkaufen
Decis 100mlGudang2650Nachbestellen
● Problem 05 — Menge

Container-Rechnung, keine Sack-Rechnung.

Für einen Einzelhandel im Sackbereich reicht „mehr bestellen, wenn knapp." Für Mikro Farm lautet die Frage: Wie viele Säcke füllen einen 20-Fuß-Container, ohne sechs Monate Bedarf zu überschreiten. Nachbestellen ist also keine Schaltfläche — sondern ein Kalkulator, den der Inhaber übersteuern kann.

Das System rollt die letzten 12 Wochen Umsatz auf, multipliziert mit der Lieferantenlaufzeit und rundet das Ergebnis auf die MOQ und die nächste Containerfülllinie. Der Inhaber sieht die Rechnung, nicht nur das Ergebnis, und kann nachjustieren, bevor er abschickt.

▸ Nachbestellrechner · Pakan Ayam 50kg
avg_weekly_sales × lead_time_weeks × safety
32 sak/wk × 6 wk × 1.25 = 240 sak
snap to MOQ (50 sak) → 250 sak
snap to container (300 sak) → 300 sak ✓
Vorschlag
300 sak
Containerfüllung
100%
Reichweite
~9 Wo.
● Problem 05 — Preis

Lieferanten ändern Preise. Marge sinkt still. Nicht mehr.

Jeder Wareneingang berechnet den gewichteten HPP je Standort neu. Überschreitet der neue HPP den Aufschlagsbereich, den der Inhaber festgelegt hat, wird der Verkaufspreis automatisch aktualisiert und protokolliert — sowohl im POS als auch im kundenseitigen Katalog.

Der Inhaber sieht einen einzigen Feed aller Bewegungen: was sich geändert hat, warum und um wie viel. Kein „Moment, warum ist die Marge diesen Monat gesunken" mehr.

▸ Preisbewegungen · letzte 7 Tage
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%
Wie wir es gebaut haben

Fünf Wochen. Aufgebaut auf einem vorhandenen POS-Gerüst.

Wir haben nicht bei null angefangen. Das POS-Grundgerüst stammt aus unserem eigenen Floural-Template — Verkäufe, Ausgaben, Anwesenheit, Zahlungen. Die Maßarbeit lag im Lager: aufteilen, kalkulieren, sichtbar machen.

01

Woche 1 — Lager ablaufen

Inventarmodell auf Papier, bevor eine einzige Codezeile geschrieben wurde. Jede Kategorie, jede Einheit (kg / sak / Liter / Stk.), jede Lieferanten-MOQ, jede verfallsdatumspflichtige SKU erfasst.

02

Woche 2 — Zweistandort-Datenmodell

inventory_items + inventory_stock-Verbindung gebaut (ein Master, Menge & HPP je Standort). Gewichteten Durchschnittskosten bei jedem Wareneingang verdrahtet. Transfer-Flow („Pindah ke Toko") in derselben Woche ausgeliefert.

03

Woche 3 — POS-Umverkabelung

Verkäufe treffen jetzt zuerst den Toko, fallen durch zum Gudang, fotografieren den HPP auf die Bestellzeile. Mindestbestandswarnungen und „Was kaufen"-Tab aus Live-Joins gespeist.

04

Woche 4 — Öffentlicher Katalog + Nachbestellrechnung

Kundenseitige PWA liest dieselbe Bestandstabelle, in die das POS schreibt. Nachbestellrechner mit Containerfüllrundung. Preisticker aus Wareneingängen gespeist.

05

Woche 5 — Parallel zum alten Weg laufen

Eine volle Woche lang wurde jede Zählung sowohl im System als auch mit dem Klemmbrett durchgeführt. Am Ende abgeglichen. Abweichungen → Fehler → behoben → Übergabe.

Was jetzt funktioniert

Sechs Dinge, die der Inhaber nicht mehr per Hand erledigt.

Keine erfundenen Monatszahlen — das System ist frisch. Das sind die Abläufe, die von Papier und aus dem Kopf des Inhabers in das System gewandert sind.

2

Lagerstandorte, getrennt

Gudang und Toko haben jeweils eigene Menge und HPP. Verkäufe fallen sauber durch. Transfers tragen die Kosten.

0

Manuelle Preisaktualisierungen

Jeder Wareneingang berechnet HPP neu und passt den Verkaufspreis an den Aufschlagsbereich des Inhabers an. Der Katalog übernimmt es sofort.

1

Ein Ort, um zu sehen, was zu kaufen ist

Ein Tab, nach Dringlichkeit sortiert, inklusive bald ablaufender Artikel. Ersetzt die Freitagsrunde mit dem Klemmbrett.

100%

Live-Bestand für Kunden sichtbar

Der öffentliche Katalog liest dieselbe Tabelle, in die das POS schreibt. Kein Staging, keine Cache-Verzögerung.

1–2

Container-Rechnung, automatisiert

Nachbestellvorschläge runden auf MOQ und Containerfüllung. Inhaber sieht die Rechnung, kann nachjustieren, dann abschicken.

0

SaaS-Abonnements

Ersetzt jeden Play-Store-POS-Versuch, der nicht gepasst hat. Vollständig im Eigenbesitz. Läuft auf einem kleinen VPS.

Der Stack

Gewählt für Offline-first, indonesischen Einzelhandel.

▸ POS-App

React Native + Expo

Läuft auf dem Android-Tablet des Personals an der Kasse. Offline-first über einen Queue-Sync-Store — die Kasse nimmt weiter Verkäufe an, wenn das WLAN abbricht, und spielt sie wieder ein, wenn es zurückkommt. OTA-Updates, damit wir reine JS-Fixes ausliefern, ohne Neuinstallation.

React Native · Expo 55 · Zustand · TypeScript
▸ Backend

PHP + MySQL auf einem kleinen VPS

Eine Datei pro Domain, ?action=-Routing, reines PDO. JWT-Authentifizierung. Audit-Log bei jeder Mutation, damit sich jede Bestandsänderung auf eine Person und einen Zeitpunkt zurückverfolgen lässt.

PHP · MySQL · PDO · JWT · audit log
▸ Kundenkatalog

PWA mit Live-Bestand

Öffentliche Browser-App. Liest dieselbe inventory_stock-Tabelle, in die das POS schreibt — kein separater Sync. Wissensorientiert: Jedes Produkt trägt eine „Warum dieses"-Notiz für Cross-Selling-Kontext.

PWA · Live-Bestand je Standort · WhatsApp-Freigabelink
▸ Inventarmodell

Master + standortbezogener Bestand

Eine inventory_items-Zeile pro SKU. Zwei inventory_stock-Zeilen (Gudang, Toko) nach (item_id, location) gegliedert. Jeder Wareneingang löst gewichteten Durchschnitts-HPP und optional eine Verkaufspreisanpassung aus.

junction table · weighted-avg HPP · expiry tracking
Weiter → Floural

Kein Standard-POS passt
zu Ihrem Laden?

Kostenloses Erstgespräch. Wir sagen Ihnen, was wirklich passt — und was es kostet.