Collabazoo is a simple app that allows you to draw on a whiteboard canvas. Other users can observe the drawings in real time. This project is part of the starter kit for the KAZOOcon 2023 hackathon.
The project is composed of 3 parts: this KAZOO application (kapp), an ugly example web client, and a Meta Quest 2 VR application. When users draw in the VR world, the drawings are relayed through KAZOO's blackhole app in real time to the web client! The kapp then broadcasts the drawings to all connected clients, including the web client and the VR application.
Instructions and project ideas can be found here.
- Clone this repository to the
applications
directory of your KAZOO source tree. - Run
make
in theapplications/collabazoo
directory. - Rebuild your KAZOO release, e.g. using
make build-dev-release
in the KAZOO source tree root.
Building from source is not available. If the precompiled build for KAZOO 5.3 does not work for you, please contact me (at the hackathon booth or via email) for a build targeting your KAZOO 5.x version. I will compile one for you.
You can try building the KAZOO 4.3 version and running it on KAZOO 5.x, but it is not guaranteed to work.
Precompiled versions are available in the releases directory for KAZOO 4.3.142 and 5.3.65.
- Extract the
.tar.gz
to/opt/kazoo/lib
.
- Update the Crossbar/Blackhole hosts/ports near the top of the example web client to point to your KAZOO servers.
- Serve the example client
.html
file from a web server. Alternatively, you can just open the file in your browser (file:
protocol). - Visit the URL for the client in your browser.
- Download and extract the app source code
.zip
file. - Follow the instructions in the included
README.md
.
- Start or restart KAZOO after installation (e.g.
systemctl restart kazoo-applications
). - Start the kapp (e.g.
sup kapps_controller start_app collabazoo
) (only necessary if you will build on top of the kapp). - Start the blackhole module (e.g.
sup blackhole_maintenance start_module bh_collabazoo
).
The Blackhole module adds collabazoo
Blackhole bindings that clients can subscribe to. It also accepts commands sent by Blackhole clients to draw on or clear the whiteboard. Those commands result in corresponding AMQP messages being published using the KAPI module to all listeners bound by the Blackhole bindings. Hence, every command is broadcast to all other collaborators (within the same account).
The full collabazoo
kapp is only a formality right now, but it exists to be built on, e.g. for adding whiteboard state persistence.
When the user submits their credentials, a fetch
is made to the Crossbar user authentication endpoint to acquire an auth token. The token is then used to authenticate with the Blackhole module. The Blackhole module then binds the client to the collabazoo
bindings, which allows the client to receive messages from the kapp via WebSocket. draw
and clear
messages update the canvas on the web page accordingly. The client can also send a clear
command to the Blackhole module, which will result in a clear
message being broadcast to all other collaborators and their whiteboards being cleared.