Coder Social home page Coder Social logo

gokibitz's Introduction

GoKibitz: Move-by-move conversations about go games Build Status

GoKibitz is a web app that lets users upload and review kifu (go game records in sgf format) and leave comments on individual moves.

I developed this app because I found it frustrating to try to comment on games other players would post for review: instructions like "on move 140, black should consider e14..." are frustrating to write and to read.

License

GoKibitz is currently free to all users, and its code is open source.

Feature Requests

Feature requests are welcome! Timely delivery is, of course, not guaranteed. But knowing what people would like to see is very helpful.

Bugs

I'm grateful for any and all bug submissions. GoKibitz is in alpha, and I expect a lot of them.

Please have patience with me, though: I'm a one-father development shop, which means most coding gets done during naps and after bedtime.

Support

There are two ways you can support development of GoKibitz:

  1. Feedback! I wrote this to help go players. If you use GoKibitz and tell me so, it's great encouragement to keep plugging away at features and bugs.
  2. Pull Requests: it's asking a lot to ask other developers to dive into your code and contribute, but if anyone feels especially generous, I'd welcome collaboration.

Development Setup

If you like GoKibitz enough to feel motivated to fix a bug or implement a new feature, I'd like to give you a virtual hug right now.

First, fork this repo on Github. Once you've got it cloned, Here's how to get set up:

Warning: I've only tested this on OS X and Ubuntu.

1. Install Node and MongoDB

2. Install gulp globally:

$ npm install --global gulp

3. Install the project's npm packages:

(project directory)
$ npm install

4. Start up MongoDB:

$ mongod

Note: If you see the following error - "ERROR: dbpath (/data/db) does not exist," you need to create a directory path for Mongo. The following commands will help you setup the standard directory:

$ sudo mkdir -p /data/db/
$ sudo chown `id -u` /data/db

5. Create your .env file (In your project directory)

MONGO_URI=mongodb://localhost

6. Run gulp to build your files:

(project directory)
$ gulp default

7. Start up a local node server and gulp watcher:

(project directory)
$ gulp watch

8. Open your local GoKibitz at http://localhost:3434

(Port named after the traditional alternating komoku opening.)

9. Create a new branch, and start working

$ git checkout -B my-bug

When you're done, just submit a pull request.


If you have any issues following these instructions, please let me know so that I can make the road smoother for others. Thanks!

Development Notes

If you're fixing a bug, do me a solid and create an issue and mention that you're working on it. That way I won't try to fix it while you're working.

If you're working on a feature, feel free to work on it and then unveil it to see what I think, but I'm also happy to give you feedback beforehand via an issue.

Error: listen EADDRINUSE

If you're like me and you close your laptop without shutting down your gulp watch process, sometimes when you come back you'll close your gulp watch, but you'll still be able to access the site locally and if you try to start up gulp watch again, you'll get an EADDRESSINUSE error. (And you'll still get console output about requests.) Just type killall node on a Mac (Command for Windows?) to shut down the node process and you should be able to start gulp watch again. If anyone wants to let me know how to fix this, I'd be much obliged.

Running Tests

There are two kinds of tests in this project: acceptance tests (sometimes called functional or end-to-end tests) and unit tests. Acceptance tests make sure that the system is working as a whole and unit tests make sure that the logic of individual functions is correct.

Acceptance tests:

Assuming you have already run npm install you should already have links to the binaries you need in ./bin.

First you will need to get the Selenium Webdriver driver for Chrome. This is a one-time task.

./bin/webdriver-manager update

Then you will need to open the webdriver-manager in a separate terminal window, terminal tab, tmux pane, etc.

./bin/webdriver-manager start

In your main terminal you can run the tests with:

./bin/protractor spec/acceptance/conf.js

Note: You do not need to be running a development server, but you do need to have MongoDB running. The acceptance test starts up its own test app server that needs to connect to Mongo.

If all goes well you should see a Chrome window open briefly and you should see information about passing (and failing) tests in your terminal.

For examples of how to write acceptance tests look in the spec/acceptance folder. You can also look at the documentation for Protractor and Chai for information about the syntax.

Unit tests

These haven't been implemented yet.

Tmuxinator

If you use Tmuxinator this workspace file might be helpful.

gokibitz's People

Contributors

bhong84 avatar keram avatar levelonedev avatar mabako avatar neagle avatar sphaso avatar tristil avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gokibitz's Issues

Displays as not logged in till reload

I've been noticing that every once in a while, the site seems to show that I'm not logged in, even when I think I am. And when I reload the page, bam: I'm logged in again. Today I stumbled upon a totally reproducible path for getting this error:

login-eror

Go to http://gokibitz.com/user/cloudbrows, click on the link to Gravatar, then go back. Not logged in. Reload: logged in.

Fix, plz.

Error running npm install involving karma

I'm trying to figure this out on my own but putting this here to document it.

From a fresh install when I type npm install I get the below error. It mentions karma, which isn't an explicit dependency in package.json but is the test runner for Angular. Possibly it's required in angular-socket-io? I use karma on other Node projects but I only have it installed locally, not as a global executable.

[~/Projects/opensource/gokibitz]$ npm install
npm WARN package.json [email protected] No repository field.
npm ERR! Darwin 14.1.0
npm ERR! argv "node" "/usr/local/bin/npm" "install"
npm ERR! node v0.10.33
npm ERR! npm  v2.7.1
npm ERR! code EPEERINVALID

npm ERR! peerinvalid The package karma does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer [email protected] wants karma@~0.12.0
npm ERR! peerinvalid Peer [email protected] wants karma@>=0.9
npm ERR! peerinvalid Peer [email protected] wants karma@>=0.9
npm ERR! peerinvalid Peer [email protected] wants karma@>=0.9.3
npm ERR! peerinvalid Peer [email protected] wants karma@>=0.9
npm ERR! peerinvalid Peer [email protected] wants karma@>=0.12.8
npm ERR! peerinvalid Peer [email protected] wants karma@>=0.9
npm ERR! peerinvalid Peer [email protected] wants karma@>=0.9
npm ERR! peerinvalid Peer [email protected] wants karma@>=0.9
npm ERR! peerinvalid Peer [email protected] wants karma@>=0.9

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/method/Projects/opensource/gokibitz/npm-debug.log

cross at a given position staying in the goban

Hi, if I place the mouse over a position in a comment, like "C10" for example, an X appear in the goban showing that position, this is great ... but then, if I use the cursor key '->' to go to the next move, the marked 'X' position is not cleared on the goban.

Pre-fetch comments for next / previous moves

It's probably worth figuring out a smart way to fetch comments for nearby moves in advance. It's a pleasant experience when comments are just immediately in place, and on speedy connections that's usually pretty much what happens, but if you're in a coffee shop (as I am now), with a bit more latency, it can take almost a second.

Supplemental: It'd be nice to have some sort of loading indicator. I don't want it to make movement feel sluggish, but it's weird to have comments suddenly show up after a second. "Oh, I thought there weren't any comments on this move!"

Recent Comments Game Link

From martingale:

In the "Recent Comments" tab, you have the option to either click a move that was commented on or the game itself. Both links seem to go to the move, but I was wondering if it might be good to have the game link go to the beginning of the game in case a person wants to play it from the beginning to get the context first, and if they want to go straight to the move they can use the move link.

Agreed.

Upload from smartgo for iPad.

I want to be able to upload some of the games I have recorded in person from my iPad. When I visit the site, I don't know how to select anything to upload other than photos.

I can however paste the SGF contents from smartgo.

Maybe I am just a bad iPad user but I don't think it is a bad idea either way to have a textbox for pasting in games. (I'm sure design wise that sounds ugly though).

Private/shared kifus

Well, what the title says. This would be a neat feature for teachers/private study groups, don't you think?

Email Subscription to Kifu Comments

From Matthew Porreca on Twitter: "The first thing I looked for is 'subscribe to this game', suspecting perhaps an email at most once a day if a game has been updated. Default to none and offer 'weekly digest', 'daily', 'none'.Per game basis, and show a list of active subs for easy manage?"

Feature Request - Skip to next new comment

It will often take days for people to comment on games. It would be nice if there was a way to skip to the next new comment you haven't seen. Right now I start from the beginning of a game and flip through them one by one till i find a name i didn't see before.

license

hi

id like to clone this repo and make some stuff with it. am i allowed to do that? u share code with world, but yet license is not clear on what i can do with it.

hoping to get a permission :)

best regards
PR

Colored Markers

Functionality: Markers can be changed to four different colors: Black, Red, Blue, Green.

Business Rationale: To allow the reviewers make it easier to distinguish between different groups or markings in their explanations.

Color Rationale: These colors are the easiest to distinguish and should not clash with the board color.

Feature Request

Hello, maybe on the "Go Servers" part of the profile, add the IGS server

Feature Request - displaying sequences

Reading this comment by Yossaria (http://gokibitz.com/kifu/Xyz44v8qE?path=14) :

"Yossarian 2 hours ago
This seems like the wrong direction to me - I would be happy to play out a relatively simple joseki - like R14, R16, Q14, O17, Q10 - to try and build a moyo."

That make me think that would be fine to be able to see sequences in the goban
a bit like it works with individual move that shows an 'X' but in this case that would place stones with numbering starting at 1 to display the varaiation. that last playexd move should certainly also be removed... (showing game position -1)

I think that would be simplier than implementing a full "gobook" format, and still very usefull...

here is a quick picture of what that would look like

capture

Sometimes preview text sticks around

When you're adding a comment on live, occasionally (especially with longer comments), the preview text will remain after a comment has been submitted.

This is due to an outstanding http request coming back after comment submission, and populating the $scope with text that no longer applies.

Add a canceler to prevent this from happening.

Automatic PNG generation

It would be nice to automatically generate PNGs for images in Twitter/Facebook links, etc. from board positions.

Development Setup not working on windows (8)

Hi, just wanna let you know that I tried the Development Setup procedure,
and I still got the following error on windows :

capture

So I just copy WGO.js stuff manually and that do the trick... but just wanna let you know

Improve variation sequence feature to also support a kind of simplified "gobook" format

Improve variation sequence feature to also support a kind of simplified "gobook" format for the sequence. so that we can most of the time use the allready in place "simple" sequence format, but also use this one to to more "complexe" variation with triangle and dots and so on...

This proposition should be way simplier than implementing the full gobook spec.

Example :

::var pl=w mv=A1A2A3 tr=B1B2 cr=C1C2 sq=D1D2 ta=E1E2 tb=F1F2 a=G1G2 b=H1H2

or

::var
pl=w
mv=A1A2A3
tr=B1B2
cr=C1C2
sq=D1D2
ta=E1E2
tb=F1F2
a=G1G2
b=H1H2

::var = start a variation (at current position exactly as the current sequence feature works now)
pl = player, same as what you did with b and w prefix to a seqence, so may or may not remove the last move
mv = the sequence of move
tr = triangles
cr = circles
sq = square
tb = small white filled circle (usefull to mark point in a 'yose value of move' discussion)
tw = small black filled circle (usefull to mark point in a 'yose value of move' discussion)
a..z : place a label

Highlight board coordinates on mouseover

Hey Nate, I had a thought about a possible feature for Go Kibitz. I was wondering if there was a way to have the letter and number associated with a point on the board light up when someone hovers their cursor over that point? (This feature could be toggled on and off.) It's possible that this would be more annoying than helpful, but sometimes it's hard to eyeball the coordinates on a go board when talking about possible moves.

Feature Request - Speak the moves

Perhaps an option to speak aloud the move coordinates, and associated comments when move number is advanced. Might be useful for those with low or no visibility as well as those wanting to practice visualization.

Arrow Markers

Functionality: Users can select one of eight different arrows for markers: North, South, East, West, Northwest, Northeast, Southwest, Southeast.

Business Rationale: Particularly with reviews for lower ranks, direction of play along with direction of influence is something that needs constant emphasis. The arrows would allow for a simple but effective visual representation.

Navbar display and link issues

  1. There's a weird display glitch as GoKibitz initially loads or reloads that shows unpredictable and weird things.

navbar-display-glitch

  1. In mobile, the link to kifu barely works, and other links experience periodic not workyness.

This is obnoxious! Please get us a working navbar, please.

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.