54 lines
2.9 KiB
Markdown
54 lines
2.9 KiB
Markdown
# Nibriboard
|
|
|
|
> 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 9 months later I'm going strong, but not quite there yet :P
|
|
|
|
## Features
|
|
- 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
|
|
|
|
### Todo
|
|
- 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](https://git.starbeamrainbowlabs.com/sbrl/GlidingSquirrel)
|
|
|
|
## Getting Started
|
|
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.
|
|
|
|
Next, run
|
|
|
|
|
|
## Credits
|
|
- Main code - [Starbeamrainbowlabs](https://starbeamrainbowlabs.com/)
|
|
- Client-Side Libraries:
|
|
- [favicon-notification](https://www.npmjs.com/package/favicon-notification)
|
|
- [event-emitter-es6](https://www.npmjs.com/package/event-emitter-es6) - For ES6 class event generation and consumption
|
|
- [color](https://www.npmjs.com/package/color) - For colour generation and manipulation
|
|
- [cuid](https://www.npmjs.com/package/cuid) - For Id generation (Also available for .NET - todo look into using that here too)
|
|
- [fps-indicator](https://www.npmjs.com/package/fps-indicator) - The fps graph in the top right
|
|
- [pan-zoom](https://www.npmjs.com/package/pan-zoom) - Handles panning & zooming delta calculations
|
|
- [keycode](https://www.npmjs.com/package/keycode) - Key code -> key name translation
|
|
- [acorn](https://www.npmjs.com/package/acorn) - Syntax checking etc. during `npm build .`
|
|
- [webpack](https://webpack.js.org/) - Building and packing the client-sided js into a single bundle
|
|
- Images:
|
|
- [Transparent Square Tiles](https://www.toptal.com/designers/subtlepatterns/transparent-square-tiles/) from [subtlepatterns.com](https://subtlepatterns.com/)
|
|
- Icons:
|
|
- [OpenIconic](https://useiconic.com/open) - brush, move -> pan, sun -> point
|
|
- Future reference: Libraries I am considering
|
|
- [Paper.js](http://paperjs.org/) - Client-side rendering
|
|
- [IotWeb](http://sensaura.org/pages/tools/iotweb/) - Underlying HTTP / WebSocket server
|
|
|
|
|
|
## Useful Links
|
|
- MSBuild:
|
|
- [`Exec` task](https://docs.microsoft.com/en-gb/visualstudio/msbuild/exec-task)
|
|
- [Dynamic wildcarded embedded resources](https://ayende.com/blog/4446/how-to-setup-dynamic-groups-in-msbuild-without-visual-studio-ruining-them) |