My wife and I needed a collaborative shopping list that we could update
from our phones. There are proprietary solutions to this but after some
research I was surprised to discover that there is no Free Software
application that meets the following criteria:
- Web based.
- Easy to deploy.
- Self-hosted & FLOSS.
- Allows multiple people to update a list.
- Simple text based format for easy editing.
- Mobile friendly - "Add to Home Screen" webapp.
- Satisfies the single use-case of collaborative TODO editing.
Of course I built one with
ClojureScript.
We've been using this "in production" for 3 months and so far it fills
our need without issue.
- Authentication can be accomplished with a .htaccess file or similar.
- The text-file format is designed so that you can edit lists with a
text-editor directly if you want to.
- If you want to support multiple users you can set up two instances
in two different folders and symlink the textfile of the list you want
to share between them. Each folder can have its own authentication.
- You can also do other textfile things like make a symlink into a
Syncthing folder which enables you to modify
your TODO lists on your laptop or server as well as through the web app.
The realtime updating is accomplished via long-polling. Primarily I used
this instead of websockets because when it comes to browsers, older tech
is more robust to different operating environments than newer tech.
I resorted to using PHP for a very lightweight server backend because it
has the property that basically anybody with web hosting is able to
upload a PHP script and I think it's good to give software as
egalitarian a deployment surface as possible. Luckily it is only 150
lines of not-too-painful PHP.
Click here to get the source and download/install
it.