It supports much larger images though!
You can find it on Android called "Pixmap".
How I built it:
Server: Client side websocket load balancing against NodeJS servers. Client connection location stored in DB. Separate service to route events between the client facing servers. Separate service which pulls change events from the DB and applies to images and also keeps track of the most popular areas of rooms, so the client can auto zoom you to those areas when you join.
Changing pixels involves two things. 1. Broadcasting the immediate event, and 2. Processing the image. When someone joins a room, they just fetch the image. The image processor is in Node too.
Client architecture: App is in pure Java. There are two rendering engines that we switch between based on zoom level. When you zoom out far, we mostly use the GPU, and individual pixel changes update a bitmap which is then pushed to the GPU. When you zoom in, it mostly uses the CPU and just a canvas as it feels more responsive this way. Also allows us to do things like add annotations to show who is drawing. Getting the transition seemless is tricky.
There's also a whole matchmaking system, which was a fun thing to build.
Anyway my ankle healed and I switched to other projects... :)