PM Real Estate Laos
A trilingual EN/LO/ZH real estate platform - installable as a PWA, Google OAuth-secured admin, and server-rendered property pages built for Vientiane.

Before this platform, PM Real Estate Laos managed their listings across social media posts and PDF catalogs. There was no central place where buyers could browse all available properties, filter by area, or view high-quality photos - and every update meant editing a file and resending it manually.
The agency also had no system for tracking clients or deals. Pipeline status lived in spreadsheets, follow-ups were missed, and there was no way to see at a glance which properties were active, pending, or sold.
Three problems that needed solving:
- 01No central listing platform - properties scattered across Facebook and PDF files
- 02No client or deal pipeline - everything tracked in disconnected spreadsheets
- 03No multilingual support - missing the Chinese-speaking and international buyer segments entirely
The brief was professional, trustworthy, and built for an international audience. Real estate buyers - especially foreign investors - make decisions based on perceived legitimacy before they ever see a property.
Clean layouts with large property photography at the centre. The UI stays out of the way and lets the listings do the work. Consistent typographic hierarchy ensures property details are scannable at a glance.
The admin dashboard mirrors the public-facing design language - dark, minimal, data-dense. Using the same visual system for both sides means the client feels at home in the CMS from day one.
Three reasons: SEO for individual listings, trilingual routing, and a backend API without a separate server.
SEO-first listing pages
Every property page is server-rendered with full metadata, structured data, and Open Graph tags. When buyers search 'apartment for rent Vientiane' or 'land for sale Laos', individual listing pages show up - not just the homepage.
Trilingual routing that's first-class
All pages live under app/[locale]/ with EN, LO, and ZH as proper first-class routes. next-intl handles translations and locale detection. No redirect hacks, no duplicated templates.
Admin API in the same codebase
Next.js Route Handlers power the entire CMS backend. No separate Express server to deploy, no CORS to configure. The admin dashboard is part of the same deployment as the public site.
A full CMS, built in
The agency needed more than a website - they needed a system. The admin dashboard is a full property management tool: add and edit listings, manage clients, track deal pipeline, and control which areas appear on the site.
Authentication is handled via Google OAuth. No password management, no forgotten credentials - the team signs in with their existing Google accounts.
Server-rendered listing pages with App Router. TypeScript across the entire codebase - no runtime surprises in the admin or the API.
Trilingual EN/LO/ZH routing baked in from day one. Each locale is a first-class route with its own metadata and translated content.
Relational schema for properties, clients, deals, and areas. Prisma keeps migrations safe and typed - no raw SQL in the codebase.
Admin authentication without password management. The client uses their existing Google account - no security liability, no reset emails.
Scoped styles per component - no class-name collisions across a large trilingual app. Each page and component owns its styles without leaking into anything else.
The site installs to the homescreen like a native app. Property agents in the field open it without a browser - and cached listings load even on a weak Lao 4G signal.
Need a platform like this?
I build web platforms for Vientiane businesses - property, tourism, services. Full-stack, multilingual, and built to be managed by the client, not a developer.