As you may well know, I’m taking CS75: Building Dynamic Websites from Open Course Ware material available through the internet. Right now, I’m developing my final project, which is a virtual pet site.
Why virtual petsites? Because I’m a big fan of them! Also, Virtual Pet Sites are actually a very good example of a dynamic website. You have to store data about the users, their pets, their various stats, while also making a nice polished client.
I plan to have the main ‘game’ content to be served up with AJAX (along window.history.pushState), so that I can control and actually have animations while the page loads. That way, the site will actually feel very close to a real game, with animated transitions between pages. This is dynamism to a whole new level!
For nerds, here are the things I’ll be using:
CodeIgniter -The class mainly teaches CodeIgniter (though previous assignments were actually written without a framework), and I must say I’ve fallen in love with it. The API is very straightforward and is pretty loose, so I can really get crazy with how I design the code base (though I will follow good practices on the project).
PHP and MySQL – both mature, proven technology, no need for further discussion.
NoSQL – I’m also planning to use a NoSQL solution for virtual pet battles, that way, since an RDBMS isn’t really fit for those kind of things. It’s only a consideration though.
Node.js – This is where it gets interesting. Node.js, if you’re not aware, is a platform that uses an “event-driven, non-blocking I/O model”, which makes it perfect for data-intensive real-time applications, ie. games. It’s going to be a real challenge integrating it with CodeIgniter and PHP in general, but the potential opportunities of having it work hand-in-hand are immense.
Because of the fact that I’ll be using Node, I will be deploying my site, (or really, my app) on Heroku. I might however, just deploy it on heliohost like my other projects, while using CORS to get my data, though it might introduce significant latency especially since I’m also going to have to query my database.