Coder Social home page Coder Social logo

go-improve's Introduction

Improve at go Gitter

This is a web app for reviewing Go games, similar to the Go teaching ladder, which is unfortunately no longer accepting new games.

Go is a two player strategy game where players take turns to place stones on intersections of a 19x19 grid, one stone at a time. The aim is to surround the most territory on the board. You can learn to play go at http://playgo.to/iwtg/en/.

The basic idea of this app is to facilitate game reviews so amateur players can help each other get better at go.

The core functionality will be:

  • Players can submit a game record for review by uploading an SGF file
  • Players can submit reviews for games
  • The app pings suitable reviewers when a game is uploaded to ensure a speedy review

This is still a work in progress and is not deployed yet.

Contributing

If you're thinking of contributing, yay! You are awesome!

Here are some ways you can help out:

Create github issues for ideas, or break an existing issue down into actionable tasks

Not much is implemented yet, so creating or commenting on issues is the best way to get involved.

Please tag tickets with beginner if you think they are documented well enough for somebody new to pick up.

Improve the page design

Currently I'm using bootstrap as a way to quickly build something that looks OK. The layout is a bit wonky and there are no images :(

If you can improve the design in any way, please raise a PR!

Code changes

This project is written in Ruby on Rails.

When you are ready to contribute, raise a pull request with your changes.

  • The PR should be as small and self contained as possible.
  • It should have a description that explains what you've done and why
  • It doesn't have to be complete. If it's not done, explain in the description what is left to do and how other people can help.
  • Be nice to everyone else who has volunteered their time to the project.

Translations

If you're willing to translate the UI to another language, please let us know in the gitter channel. There is still a lot of coding to be done before translations can be added to the app, but it's still an incredibly useful way to help the project and having willing translators makes this worth doing sooner.

Beta testing

Coming soon!

How to get in touch and ask questions

Running the application

To run the app you will need to install ruby 2.3.0. I reccommend using rbenv.

On a mac or linux, you can then run the following steps in a terminal:

  1. Checkout the project with git checkout [email protected]:MatMoore/go-improve.git
  2. Install bundler with gem install bundler
  3. Install dependencies with bundle install
  4. Set up the database with ./bin/rake db:setup
  5. Run the rails server with ./bin/rails s

If everything is working, you should be able to open http://localhost:3000/ in your browser.

License

MIT License

Copyright (c) 2016 Mat Moore

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

go-improve's People

Contributors

dependabot[bot] avatar matmoore avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

gitter-badger

go-improve's Issues

Add icons

It would be nice to have some icons for things like the notification area, and possibly the user profile.

Maybe we could use the basic (free) set from https://glyphicons.com/

Game browsing

Users should be able to browse all games uploaded to the site.

Users should be able to quickly get to games they've uploaded, and games they've reviewed.

I plan to use https://datatables.net/ to display them in a sortable table.

Unit testing \_(ใƒ„)_/ยฏ

Write some tests for the stuff that already works.

Particularly useful would be testing what the user can see on each page

  • Depending on login status
  • Depending on whether the thing they are looking for (games? reviews?) actually exists

Uploader/Reviewer matching

When a game is uploaded, the app should try and find a suitable reviewer.

When users sign up to the site they will be able to select how often they are happy to do reviews. We should respect that and not spam them with games.

The process for assigning a reviewer will be something like this:

  • Pick someone ranked appropriately to review the game
  • Send them an email
  • Give them some time to accept or reject the review
  • If they don't accept, notify them and try again with someone else

If the first chosen reviewer doesn't accept, we could try narrowing the pool of reviewers we consider, to maximise the chance the game will get reviewed quickly.

Eventually there should be some kind of reputation system to make this work. Some things we might want to consider are

  • Ratings of previous reviews
  • Number of/recency of completed reviews
  • Expected time taken to complete a review
  • Expected time taken to confirm yes/no

If no reviewers can be found with a suitable rank, then we should notify the uploader straight away - the game will go into a backlog until more reviewers join.

New user experience and instructions

At the moment the landing page has lots of actions but there is no information that explains how the app works.

Perhaps this should be more of a dashboard for logged in users and we should create a better landing page instead.

We don't have to code anything straight away but we need to

  • Decide what we want new users to see
  • Write some explanatory text for the review process
  • Write an FAQ

Switch database to postgres

Currently we're using the rails default of sqlite.

We should switch to postgres. ๐Ÿ˜

More info:


Things to do:

  • Document how to install a postgres server for development
  • Change the development configuration
  • Document anything else you need to do when setting up the project
  • Fix anything that breaks

SGF upload & download

This is quite important ๐Ÿณ

There is currently a basic form accessible from http://localhost:3000/games/new and the Game model has a field for SGF contents. The form will require a logged in user to avoid spam.

SGF or "Smart Game Format" is the standard file format Go games are saved in. It's a text based format, and you can read more about it at
http://www.red-bean.com/sgf/.

Right now the form just has a basic text field at the moment - this should be replaced with an upload widget in the view. See the rails documentation: http://guides.rubyonrails.org/form_helpers.html#uploading-files

In the controller we should take the contents of the uploaded file and store it in Game#sgf_contents.

We should check that the uploaded file actually looks like an SGF file and the file size looks reasonable. I don't think we need to actually parse the SGF - in the future we will probably want to extract game metadata from it, but for now we can have the user enter this.

Add pagination to game lists

Continuing from #3.

We should be able to page through games rather than having a long list. I.e. display the first 20 and have next/previous buttons.

One way of doing this would be to create a json endpoint to return the games for a specified page, and use datatables.net to render the frontend, as in this example: https://datatables.net/examples/server_side/

This would let us add sorting and filtering easily later on (e.g. filter by player rank)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.