Coder Social home page Coder Social logo

pheyvaer / solid-chess Goto Github PK

View Code? Open in Web Editor NEW
51.0 7.0 12.0 3.99 MB

A decentralized chess app build on top of Solid.

Home Page: https://pheyvaer.github.io/solid-chess/

License: MIT License

CSS 0.83% HTML 53.56% JavaScript 45.61%
chess solid-app proofofconcept game

solid-chess's Introduction

Solid Chess

This is a decentralized Chess game, build on top of Solid. No central sever is required to run or set up a game. All personal data about the game is stored on your POD. Requests to join a game are sent to the inbox of your opponent directly. You have two types of games: a non-real-time and a real-time game. With a non-real-time game all updates are sent to the inbox of your opponent, who can interact with it when (s)he wants. With a real-time game WebRTC is used to allow for a direct communication between two instances of the Web app.

The game is available in the browser and terminal. Check the live version or one of the following screencasts:

WARNING: The "Clear inbox" button removes all files with (chess) game data in your inbox! So be careful!

Documentation

  • Code documentation can be found here.
  • If you want to know more about how the application interacts with different Solid PODs, you can read this.

What you can do

  • Create a new game, which will send a request to join to your opponent.
  • Join a game, which will send a response back to your opponent.
  • Continue a game you started earlier.

Used technologies/concepts/libraries

Install

Web app

You can run the game locally by doing the following:

  • Clone this repo.
  • npm i: install Node.js dependencies.
  • npm run build:web: bundle the JavaScript via Webpack. The result can be found in web-app/dist/main.js.
  • Serve the contents of the root folder, e.g., via http-server.

CLI

  • npm i solid-chess -g: install the game.
  • solid-chess:launch the game.

Credits

License

ยฉ 2018 Pieter Heyvaert, MIT License

solid-chess's People

Contributors

pheyvaer 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

solid-chess's Issues

add RDF to index.html

Add a description (in RDF) of the application to the index.html.
Ideally, we would have conneg for the different RDF serializations, but we are currently serving it via Github pages, so that is not possible.

Use table to show join requests

At the moment we use a <select> for that, but it refreshes when new options are async added, which is annoying for the user. Also a table allows to sort and filter.

use websockets to detect new entries in inbox

Use websockets to detect new entries in a user's inbox instead of pulling. At the moment, however, I only get updates via websockets for ack and not pub.

EDIT: This the expected behaviour. At the moment you cannot get this information via websockets. It would be nice to have though, see this issue of the Node Solid Server.

Update screencast

The UI has been updated a bit, so we should make a new screencast.

Realtime chess

Can't you use solid'/Notification or solid'/websocket first to use realtime, and if the opponent is not connected send to mailbox ?

Store response to invitation in POD

Once a response to invitation is received, we also need to store the url of the response on the POD of the person who send the invitation.

Use table to show games to continue

At the moment we use a for that, but it refreshes when new options are async added, which is annoying for the user. Also a table allows to sort and filter.

Send acceptance of invitation

At the moment a player that joins a game only stores some game data on his POD and waits for updates, but never actually lets the other player know that he accepted the invitation. Therefore, we need to send a notification with the acceptance to the inbox of the other player. This is related to #32, because we also need to model how you accept/refuse requests.

ontology for join requests

At the moment we use http://example.org/game/ as namespace for join requests. Thus, we need a real ontology to model the requests to join the game. We either find an existing one or make one ourselves.

Add documentation

At the moment there is basically no documentation in the code. Not good.

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.