This is a monorepo for the Revolt backend.
Crate | Path | Description |
---|---|---|
core/config |
crates/core/config | Core: Configuration |
core/database |
crates/core/database | Core: Database Implementation |
core/models |
crates/core/models | Core: API Models |
core/permissions |
crates/core/permissions | Core: Permission Logic |
core/presence |
crates/core/presence | Core: User Presence |
core/result |
crates/core/result | Core: Result and Error types |
delta |
crates/delta | REST API server |
bonfire |
crates/bonfire | WebSocket events server |
Note: january
, autumn
, and vortex
are yet to be moved into this monorepo.
Rust 1.70 or higher.
Before getting started, you'll want to install:
- Rust toolchain (rustup recommended)
- Docker
- Git
- mold (optional, faster compilation)
A default.nix is available for Nix users! Just run
nix-shell
and continue.
Now you can clone and build the project:
git clone https://github.com/revoltchat/backend revolt-backend
cd revolt-backend
cargo build
If you want to run the API and event servers:
# create environment file (will be deprecated in future)
cp .env.example .env
# (optionally) copy the default configuration file
cp crates/core/config/Revolt.toml Revolt.toml
# configure as necessary...
You may want to copy the following configuration:
# Revolt.toml
[database]
mongodb = "mongodb://localhost"
redis = "redis://localhost"
[hosts]
app = "http://local.revolt.chat"
api = "http://local.revolt.chat:8000"
events = "ws://local.revolt.chat:9000"
autumn = "http://local.revolt.chat:3000"
january = "http://local.revolt.chat:7000"
voso_legacy = ""
voso_legacy_ws = ""
Then continue:
# start other necessary services
docker compose up -d
# run the API server
cargo run --bin revolt-delta
# run the events server
cargo run --bin revolt-bonfire
# hint:
# mold -run <cargo build, cargo run, etc...>
You can start a web client by doing the following:
# if you do not have yarn yet and have a modern Node.js:
corepack enable
# clone the web client and run it:
git clone --recursive https://github.com/revoltchat/revite
cd revite
yarn
yarn build:deps
yarn dev --port 3001
Then go to https://local.revolt.chat:3001
Begin by bumping crate versions:
just patch # 0.0.X
just minor # 0.X.0
just major # X.0.0
Then commit the changes to package files.
Proceed to publish all the new crates:
just publish
Tag and push a new release by running:
just release
If you have bumped the crate versions, proceed to GitHub releases to create a changelog.
First, start the required services:
docker compose -f docker-compose.db.yml up -d
Now run tests for whichever database:
TEST_DB=REFERENCE cargo nextest run
TEST_DB=MONGOBD cargo nextest run
The Revolt backend is generally licensed under the GNU Affero General Public License v3.0.
Individual crates may supply their own licenses!