1
0
Fork 0
mirror of https://github.com/Nutomic/ibis.git synced 2024-12-23 17:41:22 +00:00
A federated online encyclopedia
Find a file
2024-02-13 13:30:38 +01:00
assets simplify trunk setup 2024-01-11 16:21:44 +01:00
config various changes 2024-02-08 12:22:15 +01:00
migrations Add frontend button for instance follow, add instance.domain column 2024-02-12 16:37:12 +01:00
scripts correctly link remote articles 2024-02-09 16:54:46 +01:00
src Basic user profile page 2024-02-13 13:30:38 +01:00
tests Basic user profile page 2024-02-13 13:30:38 +01:00
.gitignore simplify trunk setup 2024-01-11 16:21:44 +01:00
.woodpecker.yml add config file 2024-02-08 11:38:46 +01:00
Cargo.lock local federation setup 2024-02-08 17:04:56 +01:00
Cargo.toml local federation setup 2024-02-08 17:04:56 +01:00
diesel.toml wip: Add diesel and postgres 2023-11-30 11:46:42 +01:00
LICENSE add agpl license 2023-11-15 01:38:16 +01:00
README.md add scripts for watch/federate 2024-01-30 12:32:02 +01:00
Trunk.toml add scripts for watch/federate 2024-01-30 12:32:02 +01:00

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 Edits 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
cargo run

# start frontend with automatic rebuild on changes
trunk serve -w src/frontend/

Then open the site at 127.0.0.1:8080. Alternatively you can run ./scripts/watch.sh to rebuild backend and frontend automatically on code changes (requires cargo-watch).

By default the frontend runs on port 8080, which can be changed with env var TRUNK_SERVE_PORT. The backend port is 8081 and can be changed with IBIS_BACKEND_PORT.

License

AGPL