HQ
Solo build
HQ runs my devices. Goals, check-ins, and notes live in one PostgreSQL store instead of being scattered across apps.
Every device talks to the same authenticated command API. An ESP32 smart mirror and a Telegram bot both use it, so adding a device costs no new integration work.
Pages, fields, and values are stored as JSONB rows behind a GIN index. That removed schema migrations across five tables. I can add a new page type without touching the database schema.
Webhooks get redelivered, which used to mean duplicate rows. A partial unique index makes those writes impossible, and 25 end-to-end database checks prove it stays that way.
Built with
- TypeScript
- Next.js
- Tailwind
- PostgreSQL
- Supabase
- ESP32
Highlights
Goals and check-ins centralized in a single PostgreSQL store
One authenticated command API shared by every device
Schema-free pages, fields, and values as JSONB behind a GIN index
Partial unique index kills duplicate writes on webhook redelivery
Next
Bruin Tank