I once played the popular game Cards Against Humanity with some friends while I was on holiday for a weekend, but was unable to really play it any other time, as it was difficult getting us all in one place. So I decided to create Cards Against The Internet. I had two main goals with the project. Goal one was to see if it was actually possible to make this work in a browser to the point where it is playable. Goal two was to prove it could be done using only free software / services. This was important, as I wanted to show that cool things can be developed and hosted, without having to spend money on things. So people have no excuse for not coding things.
- For a place to keep the code, I use BitBucket. I used this over GitHub as it has integration with other services I use, and for me it seems easier to use and more flexible. Despite this, GitHub is still a great platform to use if you already have an account there. I see no real reason to switch for just one project.
- To push the code to BitBucket, I use the git client SourceTree, as it is very flexible and makes pushing code to git nice and easy, which I like.
- To build my code when it was pushed to git, I used CodeShip as it can automatically deploy the code to the next step. I'm using the free tier, so some months where I do a lot of small builds I may just push directly to Heroku without going through BitBucket/CodeShip, to avoid going over the 100 build limit.
- To host the main server for the game, I used the node.js option of Heroku, again mainly because it is free. However, I've found it works very well for my purpose and, other than the occasional service-wide outage, it seems very reliable.
- For the domain registration, I used dot.tk, as it can provide free domains. There is a range of different domain extensions I could have picked, but I went with .tk because it's the oldest of the options. I don't really have another reason for it.
- I also used Hostinger, despite it being quite unpopular with developers, as it was free and provided a place I could redirect the domain to Heroku, while still providing a free MySQL database and access for data storage.
- Communications between the clients and the server were handled by Socket.IO, as it provided a simple, easy, and highly flexible platform for sending messages between browsers and the server.
- For some of the client-side code, JQuery was used, as it was simple and easy to make things I wanted to happen, happen.
- For getting data from my API on my server, I used the Node.JS module request. I have no real reason for using this one over others, aside from the fact that this was the first one I saw.
I tried to make it easy for other people to see how I've done this, as it is also ment to be a learning tool for people who are wanting to start developing. Because of that, you can see the full code repository and all its history over at my BitBucket Repo, where you can also report bugs if something goes wrong. If you're looking to make something using Cards Against Humanity cards, then you might be interested in my API, which can provide a range of different tools for you to use. I use it quite a lot when making this website.