Project 430
Work-in-progress Windows tray personal assistant: local notes, reminders, Home Assistant controls, time-based automations, and planned AI features if funding allows.
Overview
Project 430 is a work-in-progress Windows-first desktop personal assistant built with Electron, React, and TypeScript. It runs from the system tray, keeps notes and reminders locally in SQLite, sends desktop notifications when reminders are due, connects to Home Assistant for light/switch control, and lets me define time-based automation rules with execution logs. The next bigger direction is adding AI-assisted workflows if enough funding is found to support the model/API costs and development time. The project is packaged as a Windows installer with smoke checks and versioned release artifacts.
Highlights
- ▸ System tray assistant with command-launcher style shortcuts and a minimal desktop workflow.
- ▸ Local-first data model: notes, reminders, automation rules, device cache, settings, and execution logs stored in SQLite.
- ▸ Reminder scheduler with desktop notifications, daily recurrence, snooze, completion, and renderer refresh events.
- ▸ Home Assistant integration: URL/token setup, connection test, entity sync, cached lights/switches, and safe toggle actions.
- ▸ Time-based automations that can create local reminders or toggle Home Assistant entities, with retries, timeouts, and execution logs.
- ▸ Planned AI layer if funding allows: natural-language commands, smarter reminder/note workflows, and assistant-style automation suggestions.
- ▸ Secure-ish desktop boundary: isolated preload API, keytar-backed Home Assistant token storage, and validated IPC payloads.
- ▸ Windows release pipeline with electron-builder NSIS installer, versioned release folders, smoke checks, clean-git validation, and artifact cleanup scripts.
Context
I wanted a small desktop assistant that actually fits my own workflow instead of another giant cloud dashboard: quick notes, reminders, smart-home controls, and simple automations sitting one click away in the Windows tray. Project 430 is the first real version of that idea.
What it does
- Creates and searches local notes with tags and pinned ordering.
- Creates reminders with one-off or daily recurrence, then fires native desktop notifications when they are due.
- Connects to a Home Assistant instance, syncs light/switch entities, and toggles supported devices from the app.
- Defines time-based automation rules, currently localReminder and haToggle actions.
- Records automation execution status, attempt counts, retry counts, timings, and errors for debugging.
Architecture
The app splits desktop responsibilities cleanly between Electron main, a constrained preload bridge, and a React renderer. The main process owns SQLite, notifications, Home Assistant calls, scheduling, settings, and secrets. The renderer only talks through the exposed assistantApi IPC surface.
- src/main/main.ts wires windows, tray behavior, IPC handlers, reminder scheduling, and automation cycles.
- src/main/db.ts owns SQLite migrations for notes, reminders, automations, cached devices, logs, and app settings.
- src/main/services/* keeps feature logic separate: notes, reminders, Home Assistant, automation, settings, and secrets.
- src/main/preload.ts exposes a narrow assistantApi instead of giving the UI direct Node access.
- src/renderer/App.tsx is the main React surface for setup, command hints, notes, reminders, devices, rules, and logs.
Reliability work
- Home Assistant requests have timeout handling, limited retries for safe methods, token validation, and clear HTTP error messages.
- Automation actions run with retry and timeout guards so one bad device call does not silently stall the loop.
- Reminder scheduling is guarded against overlapping ticks and catches notification failures per reminder.
- Release scripts validate required commands, optionally enforce a clean git tree, stage installer outputs, run smoke checks, and refuse to overwrite existing versioned releases unless explicitly requested.
Status
Work in progress / MVP. The core loop works: local notes, reminders, Home Assistant sync/toggles, automation rules, logs, and Windows installer packaging. The current push is mostly UX polish, reliability hardening, and making the release flow repeatable. AI features are planned, but depend on finding enough funding to cover model/API costs and the time needed to build them properly.
Recent releases
v1.2.0
- · Polished onboarding, themes, logo, and minimal workflow UX.
- · Hardened reminders, automation confidence, Home Assistant handling, accessibility, and release safety.
- · Improved Windows release packaging with smoke validation and versioned installer history.