All selected work
Walnut HomeNative application

A native home-control app for Apple devices

A native home-control app for iPhone, iPad, and Mac, with a shared model and an interface shaped for each screen.

Private app · Active development

One shared modelWalnut HomeAt a glanceHome
Architecture illustration

The problem

A home-control interface has to explain what is happening now, including when a connection or a camera recording is unavailable. It also has to work comfortably on a phone and at a desk.

What I built

I built the SwiftUI client and integration backend, connecting home controls and camera history in one application.

  • A shared SwiftUI application with tab-based iOS navigation and a native Mac sidebar.
  • An integration backend that connects Home Assistant state and Frigate camera history to the native client.
  • Explicit loading, unavailable, and recovery states, with parity checks to keep behavior aligned across platforms.

The engineering decision

Sharing behavior while adapting the interface

The shared model gives the app a common understanding of state. The presentation changes with the device: a phone needs focused navigation; the Mac can keep context visible in a sidebar.

Camera history adds another kind of state: a recording may exist while playback is still unavailable. Handling those transitions explicitly is part of the product, rather than leaving the user with an unexplained empty view.

Interactive model · synthetic data

One model. Two ways to move through it.

Switch the illustrated layout. The shared destinations stay the same.

Walnut Home Illustrated layout
Shared capabilities

Familiar, on every screen.

Everyday controls, camera history, and clear recovery states.

HomeControlsSecurityEnvironment

Phone illustration: focused content with navigation below.

A simplified composition of the app’s navigation pattern. No household data, camera media, or device controls.

What I checked

  • Implemented phone, tablet, and desktop shells in the shared SwiftUI codebase.
  • Integration contracts and regression checks cover client/backend parity and camera-history recovery behavior.
  • I continue to use and develop the private app across its Apple-device releases.

Limits

  • A private personal application, with ongoing interface and playback work; it is not presented as a public App Store release.
  • The illustration uses synthetic state. It contains no camera footage, household details, or live controls.

Tools and foundations

I built the client and integration layer. Home Assistant supplies the underlying home-automation platform; Frigate supplies camera recording and event data. SwiftUI and Express are the application foundations.