FlowOS Web
A zero-dependency, zero-build FlowOS in vanilla JavaScript. One file, localStorage, done.
The problem
The original FlowOS web app was Capacitor-wrapped and depended on a Vite build, a dozen npm packages, and a framework I’d eventually have to upgrade. For a tool I use every day, that’s way too much surface area. I wanted a version that would still work in ten years with no maintenance.
The approach
FlowOS Web is a single-page app written in vanilla JavaScript. No framework, no bundler, no transpilation. HTML and CSS handle structure and style; localStorage holds the canonical state; a tiny proxy relays writes to Notion so the web version stays in sync with the native app and the widget suite. Opening the site in a browser loads the entire app in one network round-trip.
How it works
A single index.html loads a single app.js. State lives in one object kept in localStorage; rendering is manual DOM manipulation scoped to a few well-named functions. The Notion proxy runs on localhost:3001 during dev and on a Cloudflare Worker in production. Shared schema with the native app means the same Notion database drives both versions without translation.
Results
- Zero dependencies — no framework, no build tool, no transpilation
- Single HTML file loads the entire app on first paint
- Notion sync shares the same database as the native app and widgets
- Self-hosting friendly — drop the files on any static host, point the proxy at Notion