An interactive shell environment for exploring the p2panda protocol

Overview

panda-playground

Every panda needs a playground!

An interactive shell environment for exploring the p2panda protocol. Uses a mock node and clients to simulate network logic.

NB: This is not a "real world" application of the p2panda library, it exists as a way to explore p2panda functionality in a mocked environment because this is a fun and educational thing to do.

asciicast

Development

You will need the following tools to start development:

# Generate test data json output (from `main.rs`)
cargo run

Use

The interactive shell is intended as a playground area for exploring the p2panda library. It utilizes current (and some future) p2panda features and runs a mock node and client (there is no networking involved).

Available commands:

├── author
│   ├── new
│   ├── list
│   ├── set
│   └── whoami
├── create
│   └── chat
├── update
│   └── chat
├── delete
│   └── chat
├── instances
│   ├── list
│   └── find
└── entries
    └── list


Builtins
├── help
├── helptree
├── exit
└── history

Examples

# create a new author called panda
author new panda

# list all authors
author list

# become a different author (author must already exist)
author set penguin

# check who you are
author whoami

# publish a create message following the 'chat' schema, all trailing arguments make up chat message value
create chat Hello my name is panda!

# publish an update message
update chat 0040a8cec28dea11a4ba299cc1b0f246dfe8a5f71af61281085beff90b8564b9e4d9f07cd6f048399a2b73a8dc499a9b5d647f32223b190832cdeed087b1a074f698 Hello my name is Hungry Panda!

# publish a delete message
delete chat 0040a8cec28dea11a4ba299cc1b0f246dfe8a5f71af61281085beff90b8564b9e4d9f07cd6f048399a2b73a8dc499a9b5d647f32223b190832cdeed087b1a074f698

# list all entries
entries list

# list all instances
instances list

# retrieve a full instance id from a sub string (needed for publishing UPDATE and DELETE messages)
instances find 087b1a074f698

License

GNU Affero General Public License v3.0 AGPL-3.0-or-later

Supported by


This project has received funding from the European Union’s Horizon 2020 research and innovation programme within the framework of the NGI-POINTER Project funded under grant agreement No 871528

You might also like...
A Rust library for building interactive prompts
A Rust library for building interactive prompts

inquire is a library for building interactive prompts on terminals. Demo Source Usage Put this line in your Cargo.toml, under [dependencies]. inquire

ruborute is an interactive command-line tool to get asphyxia@sdvx gaming data.

ruborute Are you 暴龍天 ?. The ruborute is an interactive command-line tool to get asphyxia@sdvx gaming data. asphyxia-core/plugins: https://github.com/a

Native cross-platform full feature terminal-based sequence editor for git interactive rebase.
Native cross-platform full feature terminal-based sequence editor for git interactive rebase.

Native cross-platform full feature terminal-based sequence editor for git interactive rebase.

Requestty - An easy-to-use collection of interactive cli prompts inspired by Inquirer.js.
Requestty - An easy-to-use collection of interactive cli prompts inspired by Inquirer.js.

Requestty requestty (request-tty) is an easy-to-use collection of interactive cli prompts inspired by Inquirer.js. Easy-to-use - The builder API and m

Terminal based, feature rich, interactive SQL tool

datafusion-tui (dft) DataFusion-tui provides a feature rich terminal application, built with tui-rs, for using DataFusion (and eventually Ballista). I

A toolkit for building your own interactive command-line tools in Rust

promkit A toolkit for building your own interactive command-line tools in Rust, utilizing crossterm. Getting Started Put the package in your Cargo.tom

Tricking shells into interactive mode when local PTY's are not available
Tricking shells into interactive mode when local PTY's are not available

Remote Pseudoterminals Remote Pseudoterminals or "RPTY" is a Rust library which intercepts calls to the Linux kernel's TTY/PTY-related libc functions

A simple interactive OSC (Open Sound Control) debugger for terminal
A simple interactive OSC (Open Sound Control) debugger for terminal

oscd, a simple interactive OSC debugger for the terminal by using nom as a lexer/parser, oscd offers auto type casting and support sending multiple osc arguments.

YARI - An interactive debugger for YARA Language
YARI - An interactive debugger for YARA Language

Interactive debugger for the YARA language written in Rust. Debugger directly calls libyara avoiding emulation to get the most accurate results.

Owner
p2panda is a user-friendly peer-to-peer communications protocol for secure, energy-efficient, offline- and local-first web applications
null
Non-interactive nREPL client for shell scripts and command-line

nreplops-tool (nr) nreplops-tool (nr) is a non-interactive nREPL client designed to be used in shell scripts and on the command-line. Early α warning:

Matti Hänninen 3 Jul 1, 2022
Set Shell Environment Variables across multiple shells with a single configuration file.

Xshe – Cross-Shell Environment Vars xshe allows for setting Shell Environment Variables across multiple shells with a single TOML configuration file.

Ethan Kinnear 9 Dec 16, 2022
Remote-Archive is a utility for exploring remote archive files without downloading the entire contents of the archive.

[WIP] REMOTE-ARCHIVE Remote-Archive is a utility for exploring remote archive files without downloading the entire contents of the archive. The idea b

null 4 Nov 7, 2022
✨ A simple and cute tool for exploring Wikipedia from the terminal ✨

Wikipe ✨ Wikipe ✨ is a tool to search Wikipedia from the command-line. Given a search query, it returns a list of matching Wikipedia articles, which c

Harvey 4 Dec 20, 2022
A TUI for exploring crates.io using Ratatui

crates-tui crates-tui is a simple terminal user interface explorer for crates.io based on Ratatui. crates-tui.mov It supports features like: copy carg

Ratatui 28 Mar 11, 2024
Configurable, extensible, interactive line reader

linefeed linefeed is a configurable, concurrent, extensible, interactive input reader for Unix terminals and Windows console. API Documentation linefe

Murarth 176 Jan 3, 2023
An interactive cheatsheet tool for the command-line

navi An interactive cheatsheet tool for the command-line. navi allows you to browse through cheatsheets (that you may write yourself or download from

Denis Isidoro 12.2k Dec 30, 2022
Simple Interactive Terminal Todo App in Rust

todo-rs Simple Interactive Terminal Todo App in Rust Quick Start $ cargo run TODO Controls Keys Description k, j Move cursor up and down Shift+K, Shif

Tsoding 56 Dec 8, 2022
Coinlive is an interactive command line tool that displays live cryptocurrency prices.

Coinlive is an interactive command line tool that displays live cryptocurrency prices. It can also display simple historical price charts.

Mayer Analytics 9 Dec 7, 2022