The idea of Widgets started with a simple question: why don't most programmers write software for their own personal use? Many professionals use their skillset for personal benefit, in addition to their day job. Chefs cook for their families, lawyers manage their own legal disputes, carpenters build their own furniture. So why do most programmers not build software for themselves? It's not that code is hard to write. Some code is difficult, but there are a lot of simple but useful applications that are quite easy to build.

The theory of WebWidgets is that the reason many programmers do not write software for themselves is not that software is hard to write. Instead, the obstacle is that configuring, hosting, and monitoring the system architecture - databases, backups, servers, DNS records, and so on. The Widget framework takes care of all the tedious backend stuff so that developers can build webapps for their own personal use.

Status of Project

At the moment, WebWidgets.IO is a personal project that is maintained by me, Dan Burfoot. I am inviting other people to use the system as my guests, free of charge. While I cannot promise 99.99% uptime, I can guarantee that I will address any problems with the site immediately, because my Widgets are an absolutely integral part of my life.

The core WWIO source code is now open source, you can see the code in the Java Code section of the repo. You should be able to install the core server on any machine that runs Linux, see our Installation Instructions. The community version has everything necessary for basic Widget operation, but lacks some extra features like Blob Storage, Email Sending, and Google Export.


I started building the Widget framework almost 10 years ago. Prior to that, I had been relying on a kludgy combination of Google Docs, spreadsheets, and handwritten notes to help with productivity and time management. Initially, I never planned to open up the framework for anyone else. I figured I was the only one who was eccentric enough to want to invest a lot of time in writing my own life-logging apps.

But over the years, several things happened. First, I improved and simplified the framework, so that it became easier and easier to write widgets. Second, I started to find more and more areas where a Widget could be helpful. For example, recently I built a Widget to help myself memorize Chinese characters, and that has been absolutely transformative for my Chinese reading level. Third, my "core" widgets started to become an integral part of my lifestyle and work habits. I start every day by going through the activities listed in my Morning Routine Widget (inspired by Atul Gawande's book the Checklist Manifesto), and this has been amazing in helping me stay organized. So at the same time that the difficulty of building Widgets went down, their value went up.

A Love Letter to SQLite

In my opinion, the world is full of lousy software - I appreciate this Jonathan Blow talk about how the failures of software engineering could actually threaten our civilization. Among all this garbage, SQLite stands out as one of the best pieces of software ever written. Part of my reason for building WebWidgets was that I wanted to use SQLite, and convince other people to use it also.

You can think of WebWidgets as a JavaScript ORM for SQLite, that runs over HTTP. WebWidgets would not be possible without SQLite. If the Widget data were backed by a standard RDBMS, it would be impossible to allow users to create their own schemas. If JSON were used as the backing store, it would be awkward or impossible for the system to correctly deduce the data schema by examining a user's upload.