WikiReveal

December 2, 2022

WikiReveal is a multilingual version of redactle.com published at wikireveal.com

It is a daily browser game where the user tries to determine the subject of a random obfuscated Wikipedia article chosen from Wikipedia's 10,000 Vital Articles (Level 4).

Wikireveal embrace user contributions and open-source, with a focus on implementing multiples languages and letting anyone contribute easily.

If you are interested in contributing to the project, please check out the GitHub repository.

For now, it has English, French and Spanish available! Try a game and share you score!

Read more about the technical after the screenshot ...

Technical Stack

The project was kind of fun to implement. I did not want to have a server running it, so I decided to took advantage of GitHub pages.

The idea was, not to build a web application as usual, but instead build a static page generator. Wikireveal being a daily puzzle it was meant to be. Plus, this version — as opposed to other copies — does not have any user data stored, a perfect match for a static website.

Side effect, it is fully private; no data collecting, no ads; that was something I wanted too.

PHP and Symfony

As you can imagine I went for my tools of predilection: PHP with Symfony.

I build a very simple controller, with some services to fetch the page on Wikipedia and clean the article of the day for the gameplay (removing link, images, etc.). I added a PHP interface for implementing languages, so anyone can create a new one with a few lines of code. Then the controller is called via a symfony command and the result saved into a basic HTML file.

I decided to use a controller and then render it in a second step. That way you can have a local version for developing, I thought it was a good approach to ease feature iteration.

Thanks to that simple base, I could use GitHub actions to run the symfony command every day. And voilà.

Conclusion

There are lots of things that can be improved. The code could be made even more flexible. But for now, I'm happy with the result.

Let's play your first game!

Note: this post has been written with some help from an AI.