SAL Home
A model of our actual home where every project, system, and appointment lives on the spot it belongs.
- 1📅CalendarGutter clean · Sat
- 2🔧MaintenancePool filter · due
- 3🚗VehicleSUV · oil change Tue
- 4🌱GardenWater beds · today
- 5🔧MaintenanceSump pump · overdue
Every part of the property is a place data can live — the roof knows when the gutters are due, the driveway tracks the cars, the beds know what needs watering. Toggle Before / After to move from the list-style app to the model of the home.
Interior Studio
Design ModeThe story
SAL Home started as a PWA my wife and I built to run our properties, projects and contractor quotes and maintenance that used to live in our inboxes and in our heads. It worked, but it still felt like an app. Lists of things to remember.
So it shifted into something different: a model of the actual house. The whole property is rendered as a place, and everything we track hangs off the spot it belongs to. The roof knows when the gutters are due. The driveway tracks the cars. The basement flags the water filter and the sump pump. The vegetable garden out back knows what needs watering. You can step inside and walk the first floor, and when a project finishes the model changes, the worn deck goes new, the wood stove becomes the fireplace we put in.
You still just tell SAL what happened in plain language and the right part of the house updates. It isn't a product, it's ours, which is why it lives in the lab. But building it changed how I think about software that's a place instead of a list.
Under the hood
- Next.js 16
- App Router PWA, installable on the phone and used daily from the home screen.
- Three.js / R3F
- The home rendered as a real 3D model, with sculpted terrain, live sky, interior cutaways, and before/after transforms.
- Supabase
- Postgres + Google Auth holding projects, budgets, contractors, and maintenance cycles, each pinned to a spot on the house.
- Claude (SAL)
- Natural-language input. Say what happened and it updates the right room or system, with no fields to fill.