This project contains the core source code of The Chess Centre application including its associated services and deployment configuration.
- Motivation
- Objective
- Examples
- Getting started
- Tech Overview
- Contributing
- Special thanks 👏
- License 📒
- Contributors ✨
The Chess Centre was born through a love of Chess and built for the amazing community which surrounds it. Here we will provide keen chess players who enjoy playing over-the-board chess with a platform to utilise modern, accessible and easy to use features that enables them to easily find upcoming events, register and effortlessly track results of their games and those of others.
To support this goal a dedicated centre has been established for players to come, learn and play the game face to face. Seamlessly linking the physical face to face game at our fantastic venue with our digital platform, enabling new and existing players to participate and track their progress effortlessly.
- ♟️ website: chesscentre.online
Our mission is entirely #NotForProfit so we gladly welcome volunteers.
Intentionally open and transparent and striving to make it easy to reproduce and contribute to our model, our long term goals include the following technical objectives:
- 💰 Low cost
- Infrastructure
- Support
- 🌻 Scalable
- White-label (independent deployments)
- Internationalisation
- 🏗️ Maintainable
- Admin capabilities (non-technical users)
- Documentation (technical / non-technical)
- 🚀 Feature rich
- Embracing other chess projects / useful public APIs
- Node.js - 14.16.0 ++
- AWS Amplify CLI - 7.6.3 ++
Clone the project:
$ git clone [email protected]:chess-centre/platform.git && cd platform
Change directory to the root of the React application:
$ cd chess-centre-app
Checkout our develop branch - this is where PRs are merged pre-live
$ git fetch && git checkout develop
Install dependencies
$ yarn install
At this point you now have everything you need for the frontend UI, now you need the AWS Amplify
backend.
- Our current practise is to manually set up your AWS IAM user (contact @matt-d-webb for this), providing you with the requisite configuration to pull the necessay backend environment(s).
Example configuration:
const config = {
aws_project_region: "eu-west-1",
aws_cognito_identity_pool_id: "eu-west-1:xxxxx-xxxx-xxxxx-xxxx-xxxx",
aws_cognito_region: "eu-west-1",
aws_user_pools_id: "eu-west-1_xxxxxxxx",
aws_user_pools_web_client_id: "123xyz456ABC789dEFg",
};
Once you are setup with an IAM user, add your config in the app root named aws-exports.js
Then pull down the backend environment:
amplify env pull dev
You will now have a development environment! 🥳
Finally, start the project:
$ yarn start # default port 3000
Env | Player API | Public API | Travel API |
---|---|---|---|
Develop | mgsigrqo6 | bd7p7atax7 | qxbqiiv6nc |
Staging | 21bx1c1zlk | vrhqu5b9u6 | qrqz8sdqtd |
Production | ms60qr0ljj | zkxiggnvb5 | 1mif6e1fj6 |
The front-end app uses create-react-app
and tailwindcss
. The backend is entirely serverless using AWS (see Architecture).
- JavaScript
- React
- Tailwind CSS
- GraphQL
- Node
- DynamoDB
Key Details
Taking advantage of the fantastic online chess sites, we pull in live data from the following sources:
- Bullet Rating
- Blitz Rating
- Rapid Rating
- Profile Image
- Puzzle Rating
- Online Status
- Bullet Rating
- Blitz Rating
- Rapid Rating
- Online Status
- Pgn Game Import
- Standard Rating
- Rapidplay Rating
- FIDE ID
- ECF Membership Status
- Recent Game History
- Latest Rating
- Train departures
- Bus departures
See our welcome respository for guidelines on helping us develop this platform.
This project uses many amazing open source libraries but for chess specifically, we are grateful for the efforts of:
Thanks goes to these wonderful people (emoji key):
Matt D. Webb 💻 |
jbeasley123 📖 |
AndyW359 🖋 |
Cat Varley 🤔 |
Adam Elmore 💻 |
AKASH SIDDAMSHETTY 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!