Crates.io | rooky-core |
lib.rs | rooky-core |
version | 0.1.0 |
created_at | 2025-06-19 22:42:26.40101+00 |
updated_at | 2025-06-19 22:42:26.40101+00 |
description | Nostr based protocol for sharing chess data. |
homepage | |
repository | https://github.com/satsangatech/rooky-chess-protocol |
max_upload_size | |
id | 1718969 |
size | 473,657 |
Rooky is a protocol for sharing chess games and annotations using the Nostr protocol. It allows users to publish, share, and view chess games in a decentralized and secure manner.
Rooky extends NIP-64, using PGN format for the chess data interoperability.
The main library rooky-core
provides the common structures and definition to create
Nostr messages with PGN content. It uses the shakmaty
and pgn-reader
crates to provide
an easy data structure to parse, manage, and serialize chess games.
This include WebAssembly bindings for the ChessboardJS library, used to display interactive chess boards on the application. WebAssembly allows for high-performance rendering of chess boards in the browser.
This defines a set of helper functions to interact with external APIs from sites like lichess
and Chess.com
.
Uses browser native code to create efficient streams of games to avoid overhead on the connections.
Rooky
is built on Rust and leverages the nostro2
to create easy Nostr structures that can be used with
both software signers and signing extensions.
The RookyGame
structures support full serde
serializations to ensure easy compatibility with other
systems and libraries.
The RookyGame
struct also uses the shakmaty
crate to provide a rich set of chess functionalities, including
checking the legality of the moves before applying them, and managing and interacting with the game state.
The RookyGame
can be converted to a Nostr note for interaction with the network, or can produce the raw PGN
if needed, eg for text downloads.
To use Rooky in your project, add the following to your Cargo.toml
:
[dependencies]
rooky-core = "0.1"
Thank you for your interest in contributing to Rooky! We follow a GitFlow forking model, similar to how Bitcoin development works. Below is the process for contributing.
This project follows a GitFlow forking model, inspired by how contributions are made to Bitcoin Core. Instead of pushing directly to the main repository, contributors fork the repository and submit changes via pull requests (PRs). Maintainers review, test, and merge contributions accordingly.
Ensure you have the following tools installed:
git clone https://github.com/your-username/repository-name.git
cd repository-name
git remote add upstream https://github.com/satsangatech/rooky-chess-protocol
git fetch upstream
git checkout develop
git pull upstream develop
git checkout -b feature/your-feature-name
git add .
git commit -m "Describe your change concisely"
git push origin feature/your-feature-name
git fetch upstream
git rebase upstream/develop
git push --force
To keep your local fork in sync with the upstream repository:
git checkout develop
git pull upstream develop