Sitful
Calm, on-device macOS posture coach.
Visit sitful.com ↗

The Problem
Posture apps are either creepy (cloud video) or naggy. I wanted a private, accurate coach that runs entirely on-device and respects focus — auto-pausing on calls and working even when minimized.
What I Built
A Tauri 2 app with a Rust core: AVCaptureSession → Apple Vision pose detection → Rust scoring, fused with AirPods head-motion via CoreMotion, SQLite storage, a live 0–100 posture score with adaptive nudges, and a signed, notarized, auto-updating .dmg. Plus a Next.js marketing site with live Stripe checkout and A/B-tested pricing.
Stack
What it is
Sitful is a calm, fully on-device macOS posture coach at sitful.com. A live 0–100 posture score sits in the menu bar, nudges arrive only when a slouch persists, and no video ever leaves the machine.
Architecture
A Tauri 2 app with a Rust core: AVCaptureSession feeds Apple's Vision framework for pose detection, fused with AirPods head-motion via CoreMotion, scored in Rust, stored in SQLite (WAL). The app auto-pauses on video calls, keeps scoring while minimized, and ships as a signed, notarized, auto-updating .dmg. The marketing site is Next.js 16 with live Stripe checkout and A/B-tested pricing.
Why it is built this way
Posture apps fail through creepiness or nagging. On-device inference solves the first — there is no cloud video path at all — and persistence-gated nudging solves the second. Migrating from MediaPipe/Electron to Apple Vision/Tauri cut resource usage dramatically and removed the native-module packaging tax.
Outcomes
- ✓Fully on-device — no video ever leaves the machine
- ✓Native scoring continues while the window is minimized
- ✓Marketing site live on sitful.com with payments + analytics
- ✓App feature-complete, in code-signing / notarization
Last updated: 2026-07-28