100
2025

Time.

Scroll

hero-image
● 06 — Architecture

How the lab connects.

Cloudflare fronts both VPS. OVH runs staging — portfolio and hobby builds. INET fronts the home lab at home.wliafdew.dev. The HOME server has no public IP and is only reachable through the WireGuard mesh. Google Drive and Dropbox are off-site backup targets for HOME.

PRIVATE · WIREGUARD ONLYCLOUDFLAREDNS · CDN · WAFOVHStagingwliafdew.dev · portfolioweather · tavarian · toibuonbanINETHome LabHome labpublic gatewayHOMEOn-premCore home labbackend · DBGOOGLE DRIVEOff-site backupDROPBOXOff-site backup
● 08 — Build in public product

Kuru

Multi-tenant retail POS + inventory SaaS — barcode scan-driven sales, lot tracking, purchase orders, expenses, taxes and per-store RBAC. Web + Flutter companion, both wired to one backend.

Web · live · dev.simplestore.io.vnClosed source

Web app

  • POS module with barcode-scan checkout, sales orders, customers, distributors, purchase orders, expenses (incl. recurring), tax codes and an overview dashboard — 17+ feature modules on the FE.
  • Multi-tenant by design — Organization is the tenant, Store is a sub-unit under a Warehouse, OrgMemberStoreScope drives per-store RBAC. Every API call carries `orgId`, store-scoped routes also carry `storeId`.
  • Hexagonal backend on Bun + Express + Prisma — 10 bounded contexts (catalog, inventory, warehouse, order, purchase, customer, expense, tax, invite, barcode) talk only via typed in-memory RPC ports — never cross-import Prisma models.
  • Custom codegen pipeline — `.proto` definitions generate Express routes, FE React Query clients, OpenAPI 3.0 specs and shared TS types in one step.
  • BullMQ + Redis offloads image processing; MinIO (S3-compatible) stores product avatars and generated PDFs; SuperTokens session auth + Sentry + Playwright E2E.
  • React 19 + Vite 7 + Tailwind v4 client with Redux (app identity) + Zustand (module state) + React Query (server state). i18n vi/en, dark mode throughout.
Stack
Bun
Express 5
Prisma 7
PostgreSQL
Redis + BullMQ
MinIO
React 19
Vite 7
Tailwind v4
SuperTokens
Sentry
Docker
dev.simplestore.io.vn
Source private
Mobile · companion appOpen source

Mobile app

  • Companion Flutter app — splash → bootstrap → onboarding → login → TOTP + recovery code → multi-tenant org picker → home.
  • Custom design system: KGlass (iOS-26 Liquid Glass surfaces), KFormField with reserved error slot, KOtpInput with paste + backspace nav, KStepDots, animated AuthBackdrop.
  • 4-palette theming (purple / indigo × light / dark) via ThemeExtension, system-driven dark mode.
  • Wired against the same SuperTokens session and multi-tenant REST contract (`x-org-id` header per call, `{ success, data, timestamp }` envelope).
Stack
Flutter 3.41
Dart 3.11
Riverpod
go_router
dio
SuperTokens
freezed
github.com/thewind121212/kuru-mobile
Contact

Get in touch

Have a project, a role, or just want to say hi? Drop a message — I read every one.

Get CV