-
Notifications
You must be signed in to change notification settings - Fork 2
Design Document
Chess Online is a HTTP Chess Web API that allows its consumers to create and play chess games via HTTP requests.
There is a React JS front end served as the root resource that allows you to play and keep start new, and keep track of all your in-progress games.
Modern browser (latest Firefox or Chrome)
Spring Boot Framework / Java juint React JS / WebPack / Yarn Bootstrap /css / html5 & canvas / js / jquery Python 3 / unittest / pydoc Hibernate (Database) MySQL Maven photoshop git/github
See the Project Structure to see the project structure.
Spring Boot Java server
connected to a MySQL database Serving up a React JS app as the root resource Python bot that connects to the HTTP API as a user.
Provides various HTTP endpoints which facilitate managing chess games programmatically via HTTP.
React js front end allows users to play and manage their on-going chess games via a convenient web application.
The Python bot is a python CLI tool that interacts with the HTTP api via the requests library.
A docker image and docker-compose file are available which will set up multiple containers running Chess Online.
The current implementation of the server won't scale well with a large user base. Every time a new game is started a new process starts when each python bot is started.
Castling, En passant and promoting pawns are unimplemented, and so these moves are not valid currently.
Web app doesn't fit the screen on smaller resolutions.
Using modern css techniques which won't work on older browsers.
The web application doesn't work correctly on mobile devices, this is due to the css resizing the chess board on smaller devices and interfering with the calculations which determine which tile is currently selected.
- Add unimplemented chess rules.
- Improve the Python bot AI.
- Add authentication and a better login mechanism.
- Improvements such as friend list, matchmaking, chat window
- Add React Redux and React router to make front end development easier.
- Look into alternatives to HTML canvas.
- Make web app more responsive on mobile devices.
- Add additional board games.
- Add email authentication.
In terms of developing the front end, it would have been preferable to have used Node.js and Express.js to develop the backend instead of Spring Boot. Needing to restart the server any time a change was made to the UI slowed down development.
It was very difficult to determine where the project should finish, due to constantly wanting to improve the project and add new features.