This website chooses a "true" random winner for CS:GO case openings.
Table of Contents
What is this website for?
This website chooses a "true" random winner for any type of raffle. It's made especially for CS:GO Case openings.
A "true" random winner?
How do I start?
All the information RandomWinPicker needs is given in 2 simple steps:
- Tell RandomWinPicker who participates in your raffle and how great the chance of winning for each user is. For example, the chances of winning may depend on the amount of CS:GO keys a user has donated.
- Choose all items that can be won by any user in a certain winning category. Maybe a knife skin can be won on the first place.
One day a YouTuber, Megaquest, who I was subscribed to, asked in one of his CS:GO case opening videos if a subscriber of his channel could create a way for him to improve the way he draws the case opening's winner. Until then he made lists and used random.org to pick a winner manually from the list. This method was relatively unoptimized visually as well as methodically. I decided to jump in, contact him and create a website for that purpose.
This website was not my absolutely first one to create, but the first one to finish. I stopped working on other projects and focused on finishing this one. I was by no way a professional in creating websites and thus the original code contains many flaws. Another step I skipped was building and deploying. I had no idea that tools like Gulp or Travis existed. Therefore there was only production mode: I developed the live site. On one hand the site was up as fast as possible, on the other hand it contained many bugs. Those can be seen in Megaquest's first videos, in which he used my website for his case openings.
Regarding hosting and availability I completely relied on my Raspberry Pi at home. It served the site via Apache and went down a few times rendering the site unusable. This was especially critical when I was not at home and not able to restart the Pi right away. I had a website downtime alert service in place though.
Well, one way or another, the website found its use in some of Megaquests videos. Unfortunately not for a long time. Pretty soon new case opening videos became less and less until he created no new ones any more. I can't tell whether he was completely satisfied with my website. He made the impression that he liked this new and comfortable way to arrange his case opening videos, but did not like it when he found bugs ... of course. Sadly he stopped making those videos and, as far as I can tell, noone else used my site as extensively as he did. I decided to stop paying for the domain randomwinpicker.de in mid-2017. Megaquest stopped uploading videos in January 2018. The repository is archived since January 2020.
This website is not available at the original domain anymore. It is now available at randomwinpicker.jonas-thelemann.de, a subdomain of my personal website.
The original creation of this website consumed way too many hours of my free time to let it vanish somewhere on my harddrive. Thus, I decided to publish the source code to GitHub. Creating this repository from the legacy code I initially wrote was time consuming too, but I learned to use tools like Gulp, Yarn, Docker, Composer, environment variables and a reverse proxy, which moves me one step closer to publishing the source code of my main website. I learned many best practises on how to create a website repository and about state of the art web technologies (which this website does not but could include). I hope someone else finds this repository useful. Be it that you want to create your own website or try to hack mine ;)
Dockerfile lets you build an Apache-PHP server image with the configuration files in the
docker folder. Build it with the following command:
docker build -t dargmuesli/randomwinpicker .
The following information is therefore only useful if you decide to deploy this project containerless.
All required Node.js dependencies can be installed using Yarn. By default the
yarn command utilizes the
package.json file to automatically install the dependencies to a local
node_modules folder. Instructions on how to install Yarn can be found here.
This repository contains all scripts required to build this project. The
gulpfile.js automatically manages tasks like cleaning the build (
dist) folder, copying files to it, managing dependencies with composer and yarn, creating symlinks and a zip file and, finally, watching for changes too.
By default the
gulp command executes all necessary functions to build the website. If the gulp-cli is not installed globally, you need to run
yarn global add gulp-cli first.
credentials/randomwinpicker.env file using the provided template to enable complete functionality.
PHP needs to be installed for the Gulp
composerUpdate task to be executed. Make sure that the following settings are set in your
# Linux date.timezone = UTC extension=gd # Windows date.timezone = UTC extension=gd2 extension_dir = "ext"