The source is found in GitHub. It's rather clean because the entire source in packed in nullboard.html, and assets are locally stored (jQuery javascript, fonts, images...).
There are several upgrades by others:
4jag: Using webserver to store and retrieve boards.
-
-
Usage for @4jag fork
Here's a spawn of nullboard. I created a fork on Github, but then found the complex token system to push files into it via command line git, and said to myself: not-gonna-maintain-this... I'll see if it's easier on the web UI. If I spice up the UI a bit then I might give in and fork...
This adaptation is expressly for using NullBoard via a web server, allowing to "Send" and "Fetch" individual boards to/from files on the server. Thus allowing you to share your lists with someone else, or on another device. (Many of us have personal hosting accounts in the cloud, or run a sever at home. You get the idea.) This version maintains the author's local export/import functions, and is still all-contained in one .html file (except images and fonts). I changed the main file to "index.html" so you can just load the path. If you want you could put original nullboard.html along side it and open the two in separate browser windows to compare the differences -- visually it's just the two menu items "Fetch" and "Send" ... keeping it simple.
New functions:
sendBoard() -- send (save) a file to the web server with the name of your loaded board.
fetchBoard() -- fetch (load) a file from the web server that matches the name (& ID) of your currently loaded board.
insertBoard() -- like importBoard(), but deals with a blob handed by fetchboard().
stuffBoard() -- makes fetched board active and and saves it to localStorage.
save_json.php -- PHP script to store the file on the server.
How to Use:
Create a new Board and populate lists.
Click on Send -- that sends json data to the server and creates a file in the "boards" folder: boards/board-name.nbx
In another browser window (or other device, etc), add a new board of the same name; this will serve as a local dummy just for the purpose of fetching the desired board name. Click on Fetch, and it will retrieve the file that matches the board-name from the server. NOTE: This will create and populate new board of the same name but with the correct board-ID from the file, which is different from the dummy board's ID, so you'll have to switch to the new board via the menu; you can then delete the empty/dummy board (I'm not sure that I want to correct this, as it could be considered a feature--to not clobber a board of the same name if it's ID doesn't match.)
Once you've switched to the new board the ID matches the file on the server and on other devices' browsers, so subsequent Fetch'es will act on (overwrite) the loaded board and you won't need to switch to or use dummys.
Last, there's no visual cue that the Send or Fetch has taken place except for a note in the browser console log, so I'll add that with possible future enhancements.
In updatePageTitle() I added NB.board.id to the Window title -- this makes it apparent which board is loaded when you have more than one by the same name. Maybe take that out once you get the hang of it, if you don't like it.
title = 'NB - ' + (title + " - " + NB.board.id || '(untitled board)');
Sorry to have bailed on forking for now. I rushed to post this (cuz y'all asked) so no doubt it will need fixes, and that'll force me to put it into a fork (sigh)....
nullboard_4jag.zip
.
If using the remote backup method with nbagent, one would probably need to host it with a webserver to avoid CORS-related issues (two main considerations: accessing a more private localhost or internal network scope, and backing with HTTPS from HTTPS context).
If using the fork by @4jag, make the following change (to fix the //save_json.php URI) and ensure the boards/ directory is writable by the webserver:
3486c3486
< url: location.origin+"/"+location.pathname.split('/')[1]+"/save_json.php",
---
> url: location.origin+"/"+location.pathname.split('/')[1]+"save_json.php",