1 unstable release
Uses new Rust 2024
| 0.9.4 | Jan 21, 2026 |
|---|
#2482 in Database interfaces
610KB
15K
SLoC
Revolt Backend
The services and libraries that power the Revolt service.| Crate | Path | Description | |
|---|---|---|---|
core/config |
crates/core/config | Core: Configuration | |
core/database |
crates/core/database | Core: Database Implementation | |
core/files |
crates/core/files | Core: S3 and encryption subroutines | |
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 | |
core/coalesced |
crates/core/coalesced | Core: Coalescion service | |
delta |
crates/delta | REST API server | |
bonfire |
crates/bonfire | WebSocket events server | |
services/january |
crates/services/january | Proxy server | |
services/gifbox |
crates/services/gifbox | Tenor proxy server | |
services/autumn |
crates/services/autumn | File server | |
daemons/crond |
crates/daemons/crond | Timed data clean up daemon server | |
daemons/pushd |
crates/daemons/pushd | Push notification daemon server |
Minimum Supported Rust Version
Rust 1.86.0 or higher.
Development Guide
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-shelland continue.
As a heads-up, the development environment uses the following ports:
| Service | Port |
|---|---|
| MongoDB | 27017 |
| Redis | 6379 |
| MinIO | 14009 |
| Maildev | 14025 14080 |
| Revolt Web App | 14701 |
| RabbitMQ | 5672 15672 |
crates/delta |
14702 |
crates/bonfire |
14703 |
crates/services/autumn |
14704 |
crates/services/january |
14705 |
crates/services/gifbox |
14706 |
Now you can clone and build the project:
git clone https://github.com/revoltchat/backend revolt-backend
cd revolt-backend
cargo build
A default configuration Revolt.toml is present in this project that is suited for development.
If you'd like to change anything, create a Revolt.overrides.toml file and specify relevant variables.
[!TIP] Use Sentry to catch unexpected service errors:
# Revolt.overrides.toml [sentry] api = "https://abc@your.sentry/1" events = "https://abc@your.sentry/1" files = "https://abc@your.sentry/1" proxy = "https://abc@your.sentry/1"
[!TIP] If you have port conflicts on common services, you can try the following:
# compose.override.yml services: redis: ports: !override - "14079:6379" database: ports: !override - "14017:27017" rabbit: ports: !override - "14072:5672" - "14672:15672"And corresponding Revolt configuration:
# Revolt.overrides.toml # and Revolt.test-overrides.toml [database] mongodb = "mongodb://127.0.0.1:14017" redis = "redis://127.0.0.1:14079/" [rabbit] port = 14072
Then continue:
# start other necessary services
docker compose up -d
# run everything together
./scripts/start.sh
# .. or individually
# run the API server
cargo run --bin revolt-delta
# run the events server
cargo run --bin revolt-bonfire
# run the file server
cargo run --bin revolt-autumn
# run the proxy server
cargo run --bin revolt-january
# run the tenor proxy
cargo run --bin revolt-gifbox
# run the push daemon (not usually needed in regular development)
cargo run --bin revolt-pushd
# hint:
# mold -run <cargo build, cargo run, etc...>
# mold -run ./scripts/start.sh
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
echo "VITE_API_URL=http://local.revolt.chat:14702" > .env.local
yarn dev --port 14701
Then go to http://local.revolt.chat:14701 to create an account/login.
When signing up, go to http://localhost:14080 to find confirmation/password reset emails.
Deployment Guide
Cutting new crate releases
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
Cutting new binary releases
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.
Testing
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
License
The Revolt backend is generally licensed under the GNU Affero General Public License v3.0.
Individual crates may supply their own licenses!
Dependencies
~46–87MB
~1.5M SLoC