moku
Version, currently master branch1 version
- master branchlatestFeb 27, 2020
github.com/jgaskins/moku
ActivityPub server
15 stars
0 dependents
License: MIT
Installation
# Add this to your shard.yml
dependencies:
moku:
github: jgaskins/moku
branch: mastermaster is a branch, not a release, so this tracks it rather than pinning a version.
Then run:
shards installshard.yml
- Crystal
0.31.1- License
- MIT
- Author
- Jamie Gaskins <jgaskins@gmail.com>
- Target
mokufrom src/moku.cr
Dependencies
Runtime Dependencies
- neo4j*github: jgaskins/neo4j.cr, branch: add-cluster-support
- redis*github: stefanwille/crystal-redis
- dotenv*github: drum445/dotenv
- awscr-s3*github: taylorfinnell/awscr-s3
- amqp-client*github: cloudamqp/amqp-client.cr
- awscr-signer*github: taylorfinnell/awscr-signer
README
# Moku Moku is an ActivityPub server written in Crystal and backed by Neo4j. It is primarily an experiment to see how Neo4j works as the data store for a social graph. One primary difference between Moku and Mastodon is that Moku tries as much as possible to do everything in server-rendered HTML rather than having an API and a JS front end. This is just an experiment, so this may change in the future. We may try the "sprinkles of JS" approach or maybe even move to full-on back-end/front-end separation. ## Installation ``` git clone https://github.com/jgaskins/moku.git shards ``` ## Usage ``` crystal src/moku.cr ``` ## Development ### Database A few notes about how the database is structured: #### Node Labels | Label | Meaning | |-------|---------| | `PartialAccount` | A remote account whose data has not been fully loaded yet | | `Account` | A fully reified account, either local or remote | | `UnverifiedLocalAccount` | An account on this instance whose email address has not been verified | | `LocalAccount` | An account on this instance. These can be queried by handle, which is guaranteed unique. | | `RemoteAccount` | An account on another instance. Handles are not guaranteed unique, so they must be queried by id. | | `Person` | Any person this instance knows about, a superset of all accounts (`Account`, `PartialAccount`, and `LocalAccount`) | | `Moderator` | Can moderate this instance | | `Admin` | Can administer this instance | | `KeyPair` | A public/private keypair. For remote accounts, this is probably only going to contain a public key. | #### Relationship types | Type | Meaning | |------|---------| | `WANTS_TO_FOLLOW` | The origin account has sent a follow request to the target account | | `FOLLOWS` | The target account has accepted the origin account's follow request | | `HAS_KEY_PAIR` | The origin node has the target keypair | | `POSTED` | The origin node has posted the target note | ## Contributing 1. Fork it (<https://github.com/jgaskins/moku/fork>) 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create a new Pull Request ## Contributors - [Jamie Gaskins](https://github.com/jgaskins) - creator and maintainer
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This branch
- Branch
master- Seen
- Feb 27, 2020
- Crystal
0.31.1- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/jgaskins/moku
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 13, 2026
- Synced
- Aug 13, 2026
- Versions
- 1