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.76 or higher.
Before contributing, make yourself familiar with our contribution guidelines and the technical documentation for this project.
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/upryzing/parrot parrot
cd parrot
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 upryzing-delta
# run the events server
cargo run --bin upryzing-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=MONGODB cargo nextest run
Upryzing's backend is generally licensed under the GNU Affero General Public License v3.0.
Individual crates may supply their own licenses!