On reflection (after a few years exposure to “professional” software development) the code I wrote in making CodeFighter is horrible and full of code smells. When I started the project I didn’t wholly appreciate (nor understand!) the purpose and power of Node’s event loop and I pretty much wrote code that was antithesis to it. Despite all of this, it did work and did have some cool features, including (For clarification: this list is taken verbatim from the report I wrote at university regarding the application):
- Single and Multi-player code challenges with user profile badge rewards for completion,
- Robust Matchmaking for multi-player challenges that suitably matches players based on their relative skill levels,
- An easy to use syntax highlighter that matches the features and performance of native editors such as Sublime, Vim and TextMate for writing code,
- Robust error-checking for syntax errors and lint-like behaviors in user-written code,
- A secure Local Authentication strategy, as well as Authentication strategies through social platforms such as Facebook and Twitter.
If anyone wants to visit the application and have a go, it’s (as of this writing) up and running on a free dyno instance provided by Heroku and using a (free) MongoDB “Database as a Service” instance provided by Mlab and can be found here.
(Note: I’m pretty sure I “borrowed” several of the images on the website from Google. I am in no way monetizing it - it was simply my undergraduate project at University. Please don’t sue me. If you are the owner of any of the images and want them removed, just ask!).