Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork192
Monorepo for Revolt backend services.
License
revoltchat/backend
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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 | |
delta | crates/delta | REST API server | |
bonfire | crates/bonfire | WebSocket events server | |
services/january | crates/services/january | 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 |
Rust 1.86.0 or higher.
Caution
The events server has a significant performance regression between Rust 1.77.2 and 1.78.0 onwards, seeissue #341. This is currently solved by build time options but we are looking for a proper fix.
Before contributing, make yourself familiar withour contribution guidelines and thetechnical documentation for this project.
Before getting started, you'll want to install:
- Rust toolchain (rustup recommended)
- Docker
- Git
- mold (optional, faster compilation)
Adefault.nix is available for Nix users!Just run
nix-shell
and 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 |
Now you can clone and build the project:
git clone https://github.com/revoltchat/backend revolt-backendcd revolt-backendcargo build
A default configurationRevolt.toml
is present in this project that is suited for development.
If you'd like to change anything, create aRevolt.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.ymlservices: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 servicesdocker compose up -d# run everything together./scripts/start.sh# .. or individually# run the API servercargo run --bin revolt-delta# run the events servercargo run --bin revolt-bonfire# run the file servercargo run --bin revolt-autumn# run the proxy servercargo run --bin revolt-january# 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:corepackenable# clone the web client and run it:git clone --recursive https://github.com/revoltchat/revitecd reviteyarnyarn build:depsecho"VITE_API_URL=http://local.revolt.chat:14702"> .env.localyarn dev --port 14701
Then go tohttp://local.revolt.chat:14701 to create an account/login.
When signing up, go tohttp://localhost:14080 to find confirmation/password reset emails.
Begin by bumping crate versions:
just patch# 0.0.Xjust minor# 0.X.0just 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 toGitHub 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 runTEST_DB=MONGODB cargo nextest run
The Revolt backend is generally licensed under theGNU Affero General Public License v3.0.
Individual crates may supply their own licenses!
About
Monorepo for Revolt backend services.
Topics
Resources
License
Code of conduct
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.