Skip ke konten
KB.consultingKB.consulting

POS SaaS · Multi-tenant · Mobile + AI

kazir.co.id

kazir.co.id

Platform POS SaaS multi-tenant (database-per-tenant) dengan mobile Flutter offline-first + sync otomatis, web admin Next.js, dan AI Gemini built-in untuk forecasting demand, reorder suggestion, anomaly detection, sampai receipt OCR. Subdomain per merchant + custom domain Pro tier — siap white-label untuk regional partner / industry vertical.

kazir.co.id
POS SaaS · Multi-tenant · Mobile + AI
kazir.co.id
live
DB-per-tenant
stancl/tenancy v3.8 + PostgreSQL
3 platform
Next.js admin + Flutter mobile + API
6 fitur AI
forecast, reorder, anomaly, OCR, kategorisasi, chat
01True multi-tenancy database-per-tenant (PostgreSQL via stancl/tenancy v3.8) — bukan row-level isolation
02Mobile Flutter offline-first dgn Drift SQLite — kasir bisa jualan tanpa internet, sync otomatis pas online
036 fitur AI Gemini terintegrasi (demand forecast, reorder suggestion, anomaly detection, receipt OCR, kategorisasi, chat insight)
04Real-time order broadcast via Laravel Reverb WebSocket (channel orders.{outletId})
01Ceritanya

Konteks

Internal R&D KB Consulting — produk yang kami bangun untuk diri sendiri sebagai POS reference architecture, supaya bisa white-label untuk klien UMKM & retail Indonesia. Pemain existing (Moka, Pawoon, Olsera) bagus tapi billing per-outlet bulanan terlalu berat untuk warung & toko kecil; aplikasi gratis seperti Kasir Pintar belum punya AI, multi-outlet, atau multi-tenant yang serius. Celahnya jelas: platform POS lokal yang affordable, AI-native, dan siap di-fork sebagai starting point project klien.

Keputusan arsitektur

Multi-tenancy: database-per-tenant via stancl/tenancy v3.8 di PostgreSQL — bukan row-level. Trade-off biaya infra sedikit lebih tinggi, tapi compliance + audit per-tenant jauh lebih bersih, query gak pernah scan ribuan row tenant lain, dan kalau klien enterprise butuh data residency tertentu kami bisa kasih. Mobile offline-first jadi non-negotiable: cashier harus bisa jualan walau WiFi mati 8 jam, lalu sync rapi pas online — Drift SQLite + reconciliation queue yang handle conflict (out-of-stock di server vs sold di mobile, harga berubah, dll). Hardware integration (thermal printer Bluetooth ESC/POS, barcode scanner) yang reliable di Android device kelas Rp 1–2 juta, bukan cuma di flagship.

Engineering depth

Backend Laravel 11: Sanctum auth (password + PIN khusus terminal kasir), Horizon queue Redis, Reverb WebSocket untuk broadcast order real-time per outlet, Meilisearch full-text, repository pattern (Controllers → Services → Repositories), event-driven accounting double-entry (OrderCompleted → CreateSaleJournalEntry, OrderVoided → ReverseJournalEntry). AI subsystem: AIServiceManager + GeminiProvider dengan tiered models (fast/pro/lite), AIUsageTracker per-plan limit harian, prompt template classes, AICache untuk hemat token. Scheduled commands: GenerateDailyInsights, GenerateDemandForecast, GenerateReorderSuggestions, CheckAnomalies. Tenant isolation safety net middleware yang fire critical kalau koneksi DB ke-leak ke central.

Hasil & status

Live di kazir.co.id — apex Next.js untuk marketing + login + dashboard, api.kazir.co.id untuk Laravel API, ws.kazir.co.id untuk Reverb, wildcard *.kazir.co.id untuk subdomain tenant, plus on-demand cert untuk Pro tier custom domain. Deployment via GitHub Actions + Docker Compose + Caddy. Currently dalam fase onboarding tenant beta sambil rolling-out fitur AI lanjutan. Reference architecture untuk klien yang butuh POS / multi-tenant SaaS custom — bisa di-fork sebagai starting point, hemat 6–10 minggu setup vs build from scratch.

02Highlights teknis

Yang bikin
proyek ini menarik.

  • True multi-tenancy database-per-tenant (PostgreSQL via stancl/tenancy v3.8) — bukan row-level isolation
  • Mobile Flutter offline-first dgn Drift SQLite — kasir bisa jualan tanpa internet, sync otomatis pas online
  • 6 fitur AI Gemini terintegrasi (demand forecast, reorder suggestion, anomaly detection, receipt OCR, kategorisasi, chat insight)
  • Real-time order broadcast via Laravel Reverb WebSocket (channel orders.{outletId})
  • Hardware-ready: barcode scanner + thermal printer ESC/POS Bluetooth siap pakai
  • Caddy wildcard TLS untuk *.kazir.co.id + on-demand cert untuk Pro tier custom domain
  • PIN login khusus terminal kasir + role permission (owner/manager/cashier) via spatie/laravel-permission

Mau lihat idemu jadi seperti kazir.co.id?

Mari kita obrolin
ide kamu, 30 menit.

Konsultasi Gratis

Mulai sekarang

Punya ide?
Mari kita validasi dulu.

30 menit, gratis, tanpa komitmen. Kalau kami klop, kita lanjut ke sesi validasi. Kalau tidak, kami rekomendasikan rekan lain yang lebih pas — tetap tanpa biaya.