top of page

THINGS ABOUT SOFTWARE DEVELOPMENT

Home: Welcome
Home: Blog2
Search
Writer's pictureZeCoder

Weekend Project: Shared Whiteboard

I wanted to play with WebSockets so I was thinking "what service can I write that will provide a nice project that uses the WebSockets". I love working with other developers and the whiteboard is the main tool we use for brainstorming, design sessions, etc. so I thought it would an interesting project to have a shared whiteboard that people can interact with from different devices. Of course this will not be a commercial level application but it would be fun and the end result should be interesting enough to play with.


A demo video of the final result




The Story


It started with a simple high level design, 3 main parts:

  • The web client front end - The user interface made of a Canvas HTML element for the drawing area, a select control for selecting different whiteboards and a color picker so it will not be too boring. I went with Vue because I am not really a front end developer and Vue was simple enough to have something up in a few minutes of reading.

  • The server - I thought it would fun to also learn Rust as part of this project but after implementing a basic Rust Http server I decided to focus on the project's functionality instead of wrestling with the Rust compiler. I find Rust very interesting and I plan to continue my Rust education in a different context. So I went back to my good old friend C#. Going with C# the obvious choice was to use ASP.NET Core and SignalR.

  • The persistent storage - The standard choice here was to pick a database engine and just store the stuff in that. I always wanted to test a "database" that worked like Git, so I implemented a simple storage engine that uses Git as the file manager. Ya ya I know, "don't reinvent the wheel" and all that, but what's the fun in that. I want each line stroke on the whiteboard to have it's own commit so the git log will reflect the sequence of lines as they are drawn on the whiteboard.

To be honest there was nothing special in this project except having fun writing it. You can review the code here:

I plan to create a Docker image for the server.


If you find the GitEngineDB interesting please feel free to share your thoughts on the project's GitHub page. Also pull requests are welcomed.


Overall it was a fun project, I know I need to work on my front end skills, as the saying goes "presentation is everything" but moving pixels around ain't my idea of fun, it is a necessary evil.

39 views0 comments

Recent Posts

See All

5 Levels of Maturity

I remembered a lecture I attended a while back about the Capability Maturity Model (CMM) and I thought I write my version of it from my...

Development Priorities

When developing software there are many things that need to be done: features, bugs, testing, etc. and not all of them have the same...

Software Development Roles

Who are those people that actually do the development work? I've worked for companies that had a nicely defined hierarchy of roles and...

Subscribe Form

Home: Subscribe
Home: Contact
  • facebook
  • twitter
  • linkedin

©2020 by OfirNoy. Proudly created with Wix.com

bottom of page