Baanchao
LiveSolo full-stack developer — design, build, and deploy
Visit live siteThe 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