Table of Content
Introduction - Game On!
I started playing chess more frequently again, and there's actually a lot of similarities between playing chess and writing software. I love the strategy and the tactics, it's almost like solving algorithms in a way, you need to think critically and evaluate edge cases, that sort of stuff. In my latest attempt to infuse programming with other aspects of my life, I decided to build my own online multiplayer chess game from scratch — in a week.
I wanted to challenge myself to build a full scale web application (system design, ui, frontend + backend with real time and deployment) in a week while juggling a plethora of other things. I love a good challenge, so it should be pretty fun. ¯\ _(ツ)_ /¯
The Plan
The plan is to build a system that allows two players to play chess against others via challenge links. I want to keep it simple, so here are the core features the game should have:
1. Real Time Gameplay: The game will be played in real time, with the players taking turns to move their pieces.
2. Challenge Links: Players will be able to create challenge links that allow them to play against each other.
3. Rating System: Players will be rated based on how well they play, using the ELO rating system.
4. Authentication: Users should be able to create an account and log in on a wide range of platforms.
5. LeaderBoard: Players will be able to see their ranking on the leaderboard based on their win rate.
6. Analytics: Simple visualizations of players' win-loss ratios, ELO rating and challenges played.
Tech Stack
1. Frontend: NextJS w/ Typescript, tailwindCSS, Sockets io
2. Backend: ExpressJS w/ Typescript, PostgreSQL, Redis, Sockets io
3. Deployment: Docker, Digital Ocean (or Render).
4. Development Time: 1 week.
Progress so far
So far, I've written out the specifications and some basic system architecture. I've also designed the logo and a few other screens for the game.
And I'm almost done with UI design too, Just trying to make it a bit cozier for people to play on.
Conclusion
That about wraps up the plan for the project. I'm excited to see where this goes. I'll try to document my progress, probably every 2 - 3 days since writing the chess game and this blog at the same time would be overkill lol. See you in the next post!
Questions, comments or suggestions? Ping me a mail at ssh.xero@gmail.com or @_xerodev on Discord, and I'll get back to ya!