Nutomic
117323a5e3
* add ci config * fmt * jsonwebtoken opt * add clippy * clippy fixes * install postgres * apt update * -y * path * fix path * fix * no root * sudo * which * path * fmt * env * ls * full path * chown * echo path * more chown * fix * useradd * x * -r * p * env * p * a * env * t * ls * cat * ls * cp * rustup * copy * c * x * cleanup |
||
---|---|---|
assets | ||
migrations | ||
src | ||
tests | ||
.gitignore | ||
.woodpecker.yml | ||
Cargo.lock | ||
Cargo.toml | ||
diesel.toml | ||
LICENSE | ||
README.md | ||
Trunk.toml |
Ibis - A federated Wikipedia Alternative
A federated Wikipedia alternative. Main objects in terms of federation are the Instance
and Article
. Each article belongs to a single origin instance, the one where it was originally created. Articles have a collection of Edit
s a custom ActivityPub type containing a diff. The text of any article can be built by starting from empty string and applying all associated edits in order. Instances can synchronize their articles with each other, and follow each other to receive updates about articles. Edits are done with diffs which are generated on the backend, and allow for conflict resolution similar to git. Editing also works over federation. In this case an activity Update/Edit
is sent to the origin instance. If the diff applies cleanly, the origin instance sends the new text in an Update/Article
activity to its followers. In case there is a conflict, a Reject
activity is sent back, the editor needs to resolve and resubmit the edit.
Name
The Ibis is a bird which is related to the Egyptian god of knowledge and science.
Development
You need to install cargo and trunk. Then run the following commands in separate terminals:
# start backend, with separate target folder to avoid rebuilds from arch change
cargo run --target-dir target/backend
# or with automatic rebuild on changes using cargo-watch
CARGO_TARGET_DIR=target/backend cargo watch -c -x run
# start frontend, automatic rebuild on changes
trunk serve -w src/frontend/