
Demo

Inspired by the heorics of lichess.org’s single developer, I decided to try to create a similar web-based online chess app, with matchmaking. The main goal of this project is to use my knowledge of system design to make a robust and scalable app that could theoretically handle a large number of users. This involves knowlege of infastructure tools, and overcoming dificulties such as scaling a Web-Socket app (hint: you will need sticky sessions for your load-balancer!).
Another goal of this project was to put to use my Rust knowledge, I’d been learning in my spare time and wanted to try and integrate what I knew into something practical.
Back-end Technologies
- Rust 🦀 for the entire back-end
- tokio and axum for async and networking
- Redis for scalable state memory
- JSON Web Token for secure authentication
- MySQL for storing persistent user data
Front-end Technologies
- VueJs for front-end + WebSocket client
- Vue-axios for API consumption
- Auth0 for secure authentication and Single Sign-On (Google accounts)
- Vue3-Chessboard for chess GUI, built on Lichess
Architecture
Note: The project is yet to be hosted as it is under development, but these will be the technologies used:
- CloudFront for serving the static site
- AWS EC2 for hosting the back-end servers
- Docker for containerization
- NGINX for load balancing
- Redis for state management and pub/sub
Note- this project has since been shelved as I’ve had other responsibilities, but I learnt a lot and was glad to be able to deliver a working prototype.