Movie reviews bot playground.
Find a file
2022-02-13 18:16:59 +00:00
.cargo Use profile importer in verify_http_signature function 2021-12-28 20:54:21 +00:00
contracts Update IAdapter interface artifact 2022-02-05 23:51:07 +00:00
docs Validate content of incoming Note objects 2022-02-09 13:53:11 +00:00
files Add files directory, update readme 2021-11-26 22:39:54 +00:00
migrations Save subscription state to database when processing blockchain event 2022-02-06 12:05:14 +00:00
src Require replies to non-public posts to have direct visibility 2022-02-13 18:16:59 +00:00
.editorconfig Set indent size in JSON files to 2 2021-09-14 13:35:41 +00:00
.env Initial commit 2021-09-14 12:24:05 +00:00
.gitignore Add files directory, update readme 2021-11-26 22:39:54 +00:00
Cargo.lock Allow non-standard wrap width when parsing public keys in PEM format 2022-02-13 15:44:28 +00:00
Cargo.toml Allow non-standard wrap width when parsing public keys in PEM format 2022-02-13 15:44:28 +00:00
config.yaml.example Update IAdapter interface artifact 2022-02-05 23:51:07 +00:00
docker-compose.yaml Initial commit 2021-09-14 12:24:05 +00:00
LICENSE Initial commit 2021-09-14 12:24:05 +00:00
README.md Update readme 2022-02-08 01:48:59 +00:00

Mitra

Federated social network with smart contracts.

Built on ActivityPub protocol, self-hosted, lightweight.

Unique features enabled by blockchain integration:

  • Sign-in with Ethereum.
  • Proving membership with a token.
  • Paid subscriptions.
  • Converting posts into NFTs.

Smart contracts repo: https://codeberg.org/silverpill/mitra-contracts

Frontend repo: https://codeberg.org/silverpill/mitra-web

Matrix chat: #mitra:halogen.city

Demo instance: https://mitra.social/ (invite-only)

Requirements

  • Rust 1.51+
  • PostgreSQL 10.2+
  • IPFS node (optional, see guide)
  • Ethereum node (optional)

Development

Create database

docker-compose up

Test connection:

psql -h localhost -p 5432 -U mitra mitra

Run web service

Generate instance key:

cargo run --bin mitractl generate-rsa-key

Create config file, set instance_rsa_key, adjust other settings if needed:

cp config.yaml.example config.yaml

Compile and run service:

cargo run

Run CLI

cargo run --bin mitractl

Run linter

cargo clippy

Run tests

cargo test

Build for production

cargo build --release

Federation

The following activities are supported:

  • Accept(Follow)
  • Reject(Follow)
  • Undo(Follow)
  • Create(Note)
  • Delete(Note)
  • Like(Note)
  • Undo(Like)
  • Announce(Note)
  • Undo(Announce)
  • Follow(Person)
  • Update(Person)

And these additional standards:

Client API

Mastodon API

Most methods are similar to Mastodon API, but Mitra is not fully compatible.

OpenAPI spec (incomplete)

CLI commands

Generate RSA private key:

mitractl generate-rsa-key

Generate invite code:

mitractl generate-invite-code

List generated invites:

mitractl list-invite-codes

Delete profile:

mitractl delete-profile -i 55a3005f-f293-4168-ab70-6ab09a879679

Delete post:

mitractl delete-post -i 55a3005f-f293-4168-ab70-6ab09a879679

Generate ethereum address:

mitractl generate-ethereum-address

License

AGPL-3.0