FlowOS Web

A zero-dependency, zero-build FlowOS in vanilla JavaScript. One file, localStorage, done.

Vanilla JavaScript HTML CSS localStorage Notion API

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.

FlowOS Web daily anchor view rendered with vanilla JavaScript

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.

FlowOS Web weekly review with domain balance

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