Guys, so I've been off and on for the past two weeks because my brother and I came up with this crazy idea of creating an online database of video games. Sure there are similar sites out there but we feel that they don't do gaming culture justice. So, my brother and I set out to use the latest web technologies to try and make it happen. Here is our current progress report.
We believed that presentation, readability, performance, and navigability are key. So, I implemented a breadcrumb, the ability to view games by series, game identities via a 180*180 sized tile that represents the game, and so on. What I wanted was to personalize the vgdb to each individual game, and to you. The website is going to be heavily media-driven and I'll need all the space I can get to store the data. I'm expecting to use 80GB';s by the first year and 512GB's by the end of it's third or fourth years. It doesn't sound like a lot, but god knows how it will be used by it's members, I can easily see terabytes of space once user screenshots and videos are added to the mix (hopefully sites like youtube can reduce the load).
The end result can be spectacular. This website was not made for older browsers. It is however fully responsive and can work on mobile smart phones.
The site is still largely incomplete, there is just so much to work on it can get overwhelming. Each game page is specially curated, and I'm hoping on making tools for the community so people can get their hands dirty in editing the content. I didn't decide to use a CMS because I wanted full control over the data and how it gets processed, plus I'm running a different stack utilizing a different set of technologies.
If you are web-knowledgeable then here is where things get interesting. The website is ran in pure JavaScript. There is no PHP, .NET, or Java to speak of. It's a server stack called the MEAN stack. That means I use these technologies: MongoDB for the database backend which basically stores items as JSON. The benefit of this is that the data can be stored however you want. (Don't worry it's schema-able, so I can define a normalized data structure for each document collection). E is for Express the Node-ran Server side routing engine. This allows me to define a RESTful Api for data modification and collection by the client. A is for
Angular a client-side templating engine. Now, don't get worried about that, in fact Angular is good for sites like this whose content often changes and is loaded in dynamically. A client-side templating engine means less overall html is loaded all the time, and less work that has to be done. Also, Angular makes sure there is a very small template to load, and all of the rendering logic happens on your computer, which is peanuts to render rather than the server to render for everybody (even with caching!). And finally the server is Node.js. Yep, for better or for worse this is what a pure-JS setup looks like. There are no hits casting between some other language and JS, by keeping everything to one lean setup I'm hoping the site can be fast, responsive and most importantly scalable. All these technologies claim to be scalable, and I'll try to put that to the test.
I'm hoping to someday run a kickstarter, but I'm uncertain. My father wants to me to get a job, but what if... this becomes my job? I was hoping to add features to it so at some point a user can have a power-account that grants them access to more features/increased bandwidth for uploading screenshots or videos of their favorite games and even get featured on games pages. It's still a long ways off, but what I'm hoping is that my prototype (designed by my brother, and coded by me) will get us somewhere. Plus ad revenue, that's always a consideration (even if disliked).
You can't demo it right now, it's on localhost and I don't know of a web service right now that I can trust and run both my custom server setup and host my data. I'm likely going to run my own server, or when the time comes to find a home for it (meaning I'll need to factor in external server costs). So, tell me what you think? Am I going crazy???