Sitenna
Marketing site for an infrastructure asset platform — static, fast, and CMS-driven.

Sitenna is an infrastructure project and asset-management platform for telecom, energy, and utility teams. I built the public marketing site as part of a Next.js 16 monorepo alongside a custom CMS. Every page is statically generated and reads its content from Firestore at build time, so a visitor gets pure static HTML from the CDN with effectively zero database reads per visit.
The problem
An infrastructure platform's marketing site has to move fast and stay editable by a non-technical team — without paying a database read on every visit or coupling the site to a heavyweight CMS.
The approach
Content lives in Firestore, not in code. At build time the site reads each collection once — wrapped in Next's cache with per-collection tags — and prerenders every page. Visitors are served static HTML from Firebase App Hosting's CDN. When an editor saves in the CMS, it posts to the site's /api/revalidate endpoint (revalidatePath + revalidateTag), so only the affected pages regenerate, in seconds.
Design system
The site wears a 'Survey Register' identity: an engineering survey-sheet look built on a navy coordinate lattice, a coral survey-pin motif, and a Fraunces / Inter Tight / IBM Plex Mono type system. The CMS reuses the same tokens and fonts so the two apps feel like one product.
Highlights
- Next.js 16 App Router + Turbopack, React 19, TypeScript
- Static generation with per-collection cache tags and near-zero runtime Firestore reads
- Six connected platform modules: Site Acquisition, Site Control, Project Management, Asset Management, Site Marketing, Leasing Operations
- CMS-triggered ISR — publishing revalidates only the pages that changed
- Firestore content, Firebase Storage media, Firebase App Hosting deploy
- Tailwind CSS v4 @theme tokens shared with the CMS




