Maison, a smart home app: a complete Xcode project with a radial device hub, climate control, rooms and scenes, energy, widgets and three brand presets.
A smart home app built around a radial hub. First run names the home, picks its rooms and invites the household before a StoreKit 2 paywall. Home puts the room at the centre with its devices in a ring; Climate is the thermostat dial; Rooms holds scenes and every device; Energy shows the week's use; household members open settings.
$199 once, every piece included. See how installing works · Sign in
The screens this template wires together, in the order someone meets them.
First run
Name the home, pick rooms, invite the household, then the StoreKit 2 paywall. Runs once, then records completion.
Tabs
Home, Climate, Rooms and Energy on a floating dock. Home is the radial hub; Climate is the dial.
From the tabs
Scenes and room detail push from Rooms; household and settings open from the avatars.
SwiftUI source you own, built on Apple frameworks only.
How it behaves, what it handles, and the decisions behind it.
HomeApp is one root view. On first launch it asks for the home's name on an input pill and its rooms as block chips, then hands off to the Purchase screen's StoreKit 2 paywall. Closing, purchasing or restoring finishes first run and records it under a completion key, so the root switches to the app on its own.
The app sits under Maison's dock: a keyboard button, a wide accent capsule with a dot matrix holding the four destinations, and a cameras button. The destination you're on is a solid pill on the capsule; on Home that pill is the voice button, and the dots ripple while it listens. Home is the Home screen's DeviceHub: the room at the centre, its devices in a ring of blocks, tap to switch, swipe the centre to change rooms. Climate is the Climate screen's ClimateDial with modes and today's schedule. Rooms holds one-tap scenes and a tile for every room. Energy shows the week's use as columns of capsules and the devices that used most. The household's avatars, top right, open Settings.
MaisonSample in HomeApp.swift is the sample home behind HomeRepository. Conform one type with your device client (HomeKit, Matter or your own cloud): return rooms with up to eight HubDevices each and send changes in save(_:).MaisonShell.run(_:) matches a few phrases against the home, and speak() stands in for speech recognition. Replace both with your assistant.productIDs. Until they exist, the paywall shows its designed "plans didn't load" state and its close button still finishes first run.HomeApp. Without a brand it wears Maison Velvet; SPBrandTheme(.maisonFrost) or .maisonStudio re-skin every destination, including the hub, the dial and the room tiles.The download is a complete project on Tuist: the home as one JSON document in an App Group behind HomeRepository; a first run on a hub that fills in as you name the home, pick rooms, invite the household and allow door alerts; device controls with a brightness slider and hold to unlock; a command sheet and a pretend voice turn that run through a tested command matcher; room detail, a scene editor and Maison Plus gating for automations and camera history; household invitations and settings; Scenes and Climate widgets with buttons that run a scene or nudge the thermostat without opening the app; three presets; unit tests and a first-run UI test.
@main: put HomeApp() in your own WindowGroup.NSMicrophoneUsageDescription and NSSpeechRecognitionUsageDescription once you connect real speech recognition.Pieces that work well next to this one.