Case study · Web systems
Mua Đất Quảng Ngãi
Live real-estate marketplace for land in Quang Ngai: map-based search, agencies managing their own listings, price history and buyer–seller messaging.
- Role
- Development and operation
- Period
- Apr 2026 — Present
- Company
- Personal
- Status
- Live


Context
The marketplace puts property listings in Quang Ngai on a map by their real location, so buyers can compare by area, land type and price, then message the seller directly.
Problems & solutions
- 01
Removing Laravel, moving the API into Next.js
The project started with a separate Laravel backend. In production that backend has been removed entirely: the Next.js App Router now hosts its own API under /api/v2, going through Prisma to Postgres on Supabase. One application to deploy, with no Postgres or Redis to install on the VPS.
- 02
Location-based search
Property is searched by location, so the database uses PostGIS. The map shows listings by area, along with Quang Ngai administrative-unit data and nearby amenities for each property.
- 03
A large schema that keeps evolving
Around 49 tables: listings, media, agents and agencies, listing packages, transactions, reviews, reports, conversations, notifications, price history. Schema changes are recorded as dated SQL files — user soft-delete, agent certification, price reports, roles.
- 04
Testing and operations
There is a Playwright test suite. It deploys to a VPS running CyberPanel with Node 22 and PM2, with a managed Supabase database.
Outcomes
- Live at muadatquangngai.com.
- Source code is public on GitHub.
Next project