Shin KGS是KGS Go服务器的一个非官方JavaScript
Shin KGS是KGS Go服务器的一个非官方JavaScript
JavaScript 其它杂项
共167Star
详细介绍
Shin KGS
A semi-official JavaScript client for KGS Go Server.
- The official stable version is available at https://shin.gokgs.com.
- A development version (less stable) is available at https://shinkgs-master.now.sh.
Screenshot
Goals
- First-class web and mobile experience
- Retain community vibe of KGS
- Start small, release early
- Work towards native versions (Electron, React Native, Cordova)
- Bus factor > 1
Progress
- Game lists
- Game spectating and chat
- Room chat
- User chat (direct messaging)
- View and edit user details
- Submit challenge proposal (no negotiating)
- Create challenge
- Negotiate challenge
- Automatch
- Basic game playing
- Full-featured game playing (fine-tuned UI, rengo, simul)
- Review tools
- Admin/moderation tools
- Everything else
For more details, look at the milestones
Contributing
Contributions welcome. Please check the milestones and the issues to help coordinate efforts. Feel free to create an issue if there isn't one already for what you have in mind.
Issues with the "difficulty-easy" label are good tasks to get started on. Reach out if you need any guidance!
Discord chat group for anyone interested in helping: https://discord.gg/vwzxdVr
Code Overview
This project uses JavaScript, React, and ES6+ with Flow types. VS Code (with eslint and flow extensions added) is a great editor for this setup.
State is managed with a Redux-like pattern: there is a single, primary source of truth for app state, plus a bit of component-local state. Messages describing actions are dispatched, which handlers then process to produce the next app state. Unlike typical Redux, no implicit context is used. Everything is passed down through props.
Development Setup
To install and start a local dev server, run:
yarn install
yarn start
Note: the dev server will use HTTPS, which is required to interact with the KGS API. You will have to trust the self-signed certificate.
Requests are sent to the official KGS API by default, however CORS prevents the authentication from working. The beta server is configured to allow requests from https://localhost:3000. Set REACT_APP_API_URL='https://beta.gokgs.com/json-cors/access' before you build the server in order to connect to the beta.gokgs.com host. if you're password from the regular kgs doesn't work (or you want another account to test with) you can create a new one at https://beta.gokgs.com/register/index.html.
For setting up a standalone web server you can generate just the optimized production code with yarn build
. This creates a build folder which can be run locally with yarn start
or you can copy the tree to another server and run them from there. The production/beta service is currently served by nginx with a simple config like this:
server {
server_name shin.gokgs.com;
listen [::]:80; # if you want to allow unsecure access, o/w redirect
location / {
root /var/www/shinkgs/;
add_header X-nginx-rule 80-shinkgs always;
try_files $uri $uri/ /;
}
# add letsencrypt config here for https
We use Travis as a continuous integration service. The Travis job will run yarn lint
and yarn flow
and fails if those fail. So make sure to use those commands locally before pushing.
Deployment
The official and stable build lives at https://shin.gokgs.com. Each commits is also build and deployed on now.sh on:
https://shinkgs-BRANCH.now.sh
With BRANCH
being one of the Git branches of this repository. For example, a live version of master is always available at https://shinkgs-master.now.sh. Warning: the master
branch should always work but is certainly not bullet-proof and bug-free. Use the official build for any sensitive games (such as tournaments).
If you are developing the app and want to deploy in the could, use the now.sh service:
yarn global add now
yarn now-deploy
This builds the app then pushes it out to the cloud with a unique URL.