Project — 2026
Smart Home
A self-hosted smart home control platform that unifies Govee, Hue, Ring, Roborock, and Home Assistant devices behind a single React dashboard with routines, presence modes, and event automations.
- TypeScript
- React
- Express
- Prisma
- SQLite
- Vite
- TanStack Query
- Tailwind
- Radix UI
- Zod
- PM2
What it is
Smart Home Control is a full-stack TypeScript monorepo (packages/api, packages/web-app, packages/shared) that serves as a unified control surface for heterogeneous smart home hardware. The production instance runs on a Raspberry Pi, served by PM2 behind a Cloudflare tunnel, with SQLite as the database via Prisma.
Device integrations
The API integrates five provider SDKs: Govee (lights and plugs), Philips Hue (bridge-local), Ring (cameras and doorbells), Roborock (vacuums), and Home Assistant (catch-all bridge). On startup, the API initializes device controllers, connects to SQLite, starts the event-automation bridge, and launches both a routine scheduler and a device-state refresh scheduler. Device state is cached via Redis-backed services and periodically polled.
Dashboard surfaces
The React frontend organizes around seven primary surfaces. Devices shows the full paired inventory with quick controls, brightness sliders, power toggles, and a Group Workspace for creating zones and applying shared state across compatible devices. Workflows covers three tabs: Routines (time-triggered sequences), Event Automations (webhook-driven or state-change-driven), and Presence (modes that bind to location or network events). Themes stores reusable lighting presets with tagging, starter packs, and bulk deduplication. Cameras and Cleaning are filtered views over the same device inventory, scoped to Ring cameras and Roborock vacuums respectively. Discover handles provider scanning, pairing, and unpairing.
Admin and auth
Admin tooling includes API key management with scoped integration tokens, inbound webhook sources, outbound notification endpoints, a Home Assistant entity browser, routine reliability insights, a live log tail, and a full API tools panel backed by the OpenAPI spec served at runtime.
Auth uses Google OAuth with JWT sessions; unknown Google users are auto-provisioned on first login.