An infinite whiteboard for recording those big ideas.
Nibriboard is a product of an initial idea that I thought I could get done in about 3 weeks in February 2017, but some considerable time later I'm still going strong, but not quite there yet :P
- Infinite whiteboard that can be panned around (limited only by your hard drive space and floating-point number limits)
- Real-time multi-user support
- User input is simplified to reduce disk space / bandwidth
- Authentication + user accounts
- Multi-whiteboard support (the backend supports it - it's just not exposed correctly yet)
- Improve client-side multi-user cursor support (disconnected users' cursors don't disappear correctly)
- Improve colour palette
- Improve left-hand user interface panel
- Make debug info hidden by default + toggleable
- Implement WebSockets gzip support in the GlidingSquirrel
Nibriboard is not ready for general consumption just yet. It's got no authentication yet for one! If you'd like to play around with it, then you'll need the following:
- Node.JS + npm
- mono if you're on Linux / macOS / etc. (See below for Ubuntu 20.04 instructions)
Once you've verified that you've got the above installed and in your PATH, simply run
dotnet msbuild, or
xbuild) in the root of this repository to build Nibriboard.
Windows users may need to use a Visual Studio Command Prompt if the
msbuild command isn't in your
PATH environment variable.
Note that if you're intending to use Nibriboard over the internet or an untrusted network, you should proxy it behind nginx to provide TLS, as Nirbiboard doesn't handle HTTPS on it's own.
Getting Started with Ubuntu 20.04 (and probably others)
This may or may not work with Ubuntu's provided mono packages, though was tested with those provided by mono-project. Note: if for whatever reason you don't have
mono-roslyn (which provides
xbuild in their respective places.
sudo apt install mono-devel mono-roslyn
- nuget for dependencies:
msbuild -restoredid not work)
mono nuget.exe restore
Finally, run with
If you have any trouble with nuget and the JSON dependencies, there's a package you can try installing:
- Main code - Starbeamrainbowlabs
- HTTP + WebSockets implementation: my library GlidingSquirrel (bug reports welcome!)
- Client-Side Libraries:
- event-emitter-es6 - For ES6 class event generation and consumption
- color - For colour generation and manipulation
- cuid - For Id generation (Also available for .NET - todo look into using that here too)
- fps-indicator - The fps graph in the top right
- pan-zoom - Handles panning & zooming delta calculations
- keycode - Key code -> key name translation
- acorn - Syntax checking etc. during
npm build .
- webpack - Building and packing the client-sided js into a single bundle
- Future reference: Libraries I am considering
- Paper.js - Client-side rendering
- IotWeb - Underlying HTTP / WebSocket server