Stoatchat
The software powering Stoat
Install / Use
/learn @stoatchat/StoatchatREADME
| 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:
- mise
- Docker
- Git
- mold (optional, faster compilation)
A default.nix is available for Nix users! Run
nix-shellto activate mise.
As a heads-up, the development environment uses the following ports:
| Service | Port |
| ------------------------- | :------------: |
| MongoDB | 27017 |
| Redis | 6379 |
| MinIO | 14009 |
| Maildev | 14025<br>14080 |
| Revolt Web App | 14701 |
| RabbitMQ | 5672<br>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/stoatchat/stoatchat stoat-backend
cd stoat-backend
mise 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
