All work
12 Sites · Live

Next.js Leasing Microsites

A fleet of bespoke Next.js 16 leasing sites for individual apartment properties — each wired to a shared in-house availability API that keeps floor plans, live pricing, and MFTE affordable-housing units in sync, with Matterport tours, Apple MapKit maps, and Mux video.

Why this exists

The portfolio's property sites were aging WordPress builds — slow, hard to keep in sync with live leasing data, and tedious to update site by site. I've been migrating them to bespoke Next.js sites on Vercel, each fed by a single in-house API (api.bonavista.work) so pricing, availability, and unit data stay live without per-site edits, while preserving the old WordPress URLs so nothing drops in search rankings.

Alt Capitol Hill leasing site — full-bleed Mux hero video of the building
Alt Capitol Hill · altapartments.com
Rowlock Seattle leasing site with a live availability call-to-action
Rowlock · rowlockseattle.com
The Clarke leasing site at Green Lake
The Clarke · theclarkegreenlake.com

How it's built

1

One availability API

Every site fetches floor plans, live pricing, units, amenities, and pet policy from a shared in-house endpoint that normalizes RentCafe/SecureCafe data. New pricing appears everywhere without touching a single site.

2

24-hour ISR

Each property page is statically rendered and revalidated on a 24-hour cycle, with a token-gated revalidate route to bust the cache on demand — fast loads, always-current data, no per-request API cost.

3

Rich media, server-safe

Matterport virtual tours, Mux streaming hero video, and Apple MapKit neighborhood maps (with the MapKit token minted server-side), plus Cloudflare Images and RentCafe CDN for photos.

4

SEO-preserving migration

Trailing-slash routing mirrors the legacy WordPress URLs exactly, JSON-LD and sitemaps are generated per property, and apply/current-resident routes redirect into RentCafe so the funnel stays crawlable.

Notes

  • Next.js 16 App Router, React 19, Tailwind v4, TypeScript — deployed on Vercel with Analytics + Speed Insights
  • Live MFTE affordable-housing units surfaced straight from the availability feed
  • Contact and tour-request forms via Resend, with leads posted to the Knock CRM webhook
  • A forked-and-tailored template per property — shared data/SEO layer, bespoke brand and layout for each
  • The same availability API also powers the WordPress property sites, so both hosting tracks stay in sync

Part of the web track: this is the Next.js / Vercel modernization running alongside the 55 in-house WordPress sites — the same portfolio, two hosting stacks, one live data backbone.

12

Live Microsites

1 API

Live Availability Feed

24h

ISR Revalidation

MFTE

Affordable-Housing Filter

Built With

Next.jsTypeScriptTailwind CSSVercelISRApple MapKitMatterportMuxResend