Back

Baanchao

Live

Solo full-stack developer — design, build, and deploy

Visit live site

The problem

Thai small landlords (4–20 rooms) run their rentals on Excel and LINE chat: rent and utility amounts are calculated by hand, bills are retyped every month, and there is no reliable record of who paid. It is error-prone and time-consuming.

What I built

  • Built the entire product end to end as a pnpm monorepo: a responsive Next.js web dashboard for landlords and a NestJS API.
  • Implemented auth with Passport (JWT plus Google and Facebook OAuth), validated input with Zod and class-validator, and hardened the API with Helmet and rate limiting.
  • Automated monthly billing: generate rent and utility bills, render a Thai-compliant receipt PDF (pdf-lib, baht-in-words), and attach a PromptPay QR for payment.
  • Wired up email delivery (Resend), error monitoring (Sentry), and end-to-end tests (Playwright); shipped to production behind a custom domain.

Outcome

  • Live in production at koya.krittanut.com, serving Thai landlords.
  • Replaces manual Excel/LINE workflows with structured rooms, tenants, bills, and payment records.
  • Mobile-first: a landlord can issue a bill and receipt from their phone in under a minute.

Tech stack

Frontend
Next.js 15React 19TypeScriptTailwind CSSRadix UIZustandReact Hook Form + Zod
Backend
NestJSPassport (JWT / OAuth)PromptPay QRpdf-libStripe / OmiseResend
Tooling
pnpm workspacesSentryPlaywrightDocker