Full-Stack · Climate Automation
Mansfield Ridge
Control
A full-stack climate automation app built for a large rental property with nine separate HVAC zones. Instead of manually adjusting nine thermostats around every guest arrival, the app centralizes stay scheduling and drives heating automatically — pre-heat before check-in, occupied temps during the stay, and setback after checkout.
Features
Dashboard
Live 9-Zone Overview
Central dashboard showing live status for every thermostat zone at the property, sync history, and the stay calendar — everything visible at a glance without touching a single physical thermostat.
Scheduling
Stay Calendar
Monthly calendar view for managing guest stays — add, edit, and delete bookings. Each stay drives the automated climate state machine: the system knows when guests arrive and depart without any manual input at check-in or checkout.
Automation
Climate State Machine
Four automated states: vacant (setback or off), pre-heat (warms before check-in), occupied (guest comfort temps), back to vacant after checkout. Configurable pre-heat lead time and temperature setpoints per state.
Zone Management
Per-Zone Control
Each zone can be individually enabled or disabled, renamed for clarity, and linked to a specific Honeywell device. Background auto-sync keeps all zones current, with a manual sync option and a full activity log.
Tech Stack
Frontend + Framework
Next.js 16 (App Router)
Built on Next.js 16 with the App Router and React 19, fully typed in TypeScript. Tailwind CSS handles styling. REST API routes serve property, zones, stays, sync, and the Honeywell OAuth callback.
Data + Persistence
SQLite + Drizzle ORM
SQLite with Drizzle ORM stores properties, zones, stays, and sync logs. Lightweight and self-contained — no external database server required for a property-management workload of this scale.
Provider Abstraction
Mock / Live Switching
Developed without waiting for API approval
The Honeywell Home (Resideo) API requires an approval process before live credentials are issued. Rather than blocking development, a provider abstraction layer was designed so the same codebase runs in demo mode — with fully simulated thermostats — during the approval window, then switches to live mode via Honeywell OAuth with no rewrite required once credentials arrive.