Revolt backend API server, built with Rust.

Overview

Delta

Description

Delta is a blazing fast API server built with Rust for Revolt.

Features:

  • Robust and efficient API routes for running a chat platform.
  • Distributed notification system, allowing any node to be seamlessly connected.
  • Simple deployment, based mostly on pure Rust code and libraries.
  • Hooks up to a MongoDB deployment, provide URI and no extra work needed.

Stack

Resources

Revolt

CLI Commands

Command Description
./publish.sh Publish a Docker Image.
./set_version.sh Update the version. Not intended for PR use.
cargo build Build/compile Delta.
cargo run Run Delta.
cargo fmt Format Delta. Not intended for PR use to avoid accidentally formatting unformatted files.

Contributing

The contribution guide is located at developers.revolt.chat/contributing. Please note that a pull request should only take care of one issue so that we can review it quickly.

License

Delta is licensed under the GNU Affero General Public License v3.0.

Comments
  • feature request: self-banning

    feature request: self-banning

    What do you want to see?

    A user should be able to ban itself from a guild or entire instance even. For safety reasons, guild and instance moderators should not be able to view and/or revoke self-bans.

    enhancement 
    opened by erkinalp 13
  • feature request: Matrix support

    feature request: Matrix support

    What do you want to see?

    Hear me out, if you can't implement Matrix on your own you're free to get help from the Matrix community. Having a proper alternative to the Synapse/Element ecosystem would make Matrix a thousand times better.

    enhancement 
    opened by koyuawsmbrtn 6
  • fix: set the cap to 100

    fix: set the cap to 100

    Please make sure to check the following tasks before opening and submitting a PR

    • [x] I understand and have followed the contribution guide
    • [ ] I have tested my changes locally and they are working as intended
    • [x] These changes do not have any notable side effects on other Revolt projects

    dietz

    opened by Rexogamer 5
  • Fixed username new line bypass & mention disrupt

    Fixed username new line bypass & mention disrupt

    I'm not sure If blacklisting [ & ] is right but I'd recommend it also It looks like we are fixing the symptom rather than the cause. One way to fix this errors is by fixing the mention system(Which is I don't know how) and make it to not parse the strings like Discord.

    Please make sure to check the following tasks before opening and submitting a PR

    • [X] I understand and have followed the contribution guide
    • [X] I have tested my changes locally and they are working as intended
    • [X] These changes do not have any notable side effects on other Revolt projects
    opened by I2rys 4
  • Create report message endpoint

    Create report message endpoint

    I've created the foundation for the message reporting endpoint.

    My rust skills are pretty basic so any issues please let me know.

    You'll also need to add the table to the database

    enhancement 
    opened by ryanalexander 4
  • chore: bump rauth version

    chore: bump rauth version

    Please make sure to check the following tasks before opening and submitting a PR

    • [x] I understand and have followed the contribution guide
    • [x] I have tested my changes locally and they are working as intended
    • [x] These changes do not have any notable side effects on other Revolt projects
    opened by brecert 2
  • Fixed username new line bypass & mention disrupt

    Fixed username new line bypass & mention disrupt

    I'm not sure If blacklisting [ & ] is right but I'd recommend it also It looks like we are fixing the symptom rather than the cause. One way to fix this errors is by fixing the mention system(Which is I don't know how) and make it to not parse the strings like Discord.

    I have read the CLA Document and I hereby sign the CLA

    opened by I2rys 2
  • The edit note is overlapping with the time a message was sent

    The edit note is overlapping with the time a message was sent

    This is how it looks like after a message has been edited. 1

    Now, after you're hovering over the edited message it's overlapping with the time the message was sent. Screenshot (11)

    A simple soulution would be moving the edit note at the end of a message. Example on Discord: Screenshot 2022-04-28 192534

    opened by sEbi3 2
  • Use nightly toolchain

    Use nightly toolchain

    delta seem to currently require the nightly toolchain. In order to reduce the friction of adoption we could specify it explicitly.

    $ cargo +stable test
     <snip>
    error[E0554]: `#![feature]` may not be used on the stable release channel
     --> src/main.rs:1:1
      |
    1 | #![feature(proc_macro_hygiene, decl_macro)]
      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    
    error[E0554]: `#![feature]` may not be used on the stable release channel
     --> src/main.rs:2:1
      |
    2 | #![feature(async_closure)]
      | ^^^^^^^^^^^^^^^^^^^^^^^^^^
    
    error[E0554]: `#![feature]` may not be used on the stable release channel
     --> src/main.rs:3:1
      |
    3 | #![feature(const_option)]
      | ^^^^^^^^^^^^^^^^^^^^^^^^^
    
    For more information about this error, try `rustc --explain E0554`.
    
    opened by alexxroche 2
  • API Server fails after Update from 0.5.3-alpha.6 to version 0.5.3-alpha.9

    API Server fails after Update from 0.5.3-alpha.6 to version 0.5.3-alpha.9

    After changing docker image tag from 0.5.3-alpha.6 to version 0.5.3-alpha.9.

    Logs entries:

    [2021-11-23T08:45:07Z` INFO  revolt] Starting REVOLT server [version 0.5.3-alpha.9].
    
    [2021-11-23T08:45:07Z` INFO  revolt::database::migrations::scripts] Starting database migration.
    
    [2021-11-23T08:45:07Z` INFO  revolt::database::migrations::scripts] Running migration [revision 10 / 2021-11-01]: Remove nonce values on channels and servers.
    
    [2021-11-23T08:45:07Z` INFO  revolt::database::migrations::scripts] Running migration [revision 11 / 2021-11-14]: Add indexes to database.
    
    thread` 'main' panicked at 'Failed to create server_members index.: Error { kind: CommandError(CommandError { code: 86, code_name: "IndexKeySpecsConflict", message: "An existing index has the same name as the requested index. When index names are not specified, they are auto generated and can cause conflicts. Please refer to our documentation. Requested index: { v: 2, key: { _id.server: 1, _id.user: 1 }, name: \"compound_id\" }, existing index: { v: 2, key: { _id.channel: 1, _id.user: 1 }, name: \"compound_id\" }", labels: [] }), labels: [] }', src/database/migrations/scripts.rs:444:10`
    
    opened by kiguigui 2
  • Deleting bot didn't free name

    Deleting bot didn't free name

    Hello. The bot name in question is 'Fhantom'. This issue has persisted from right after after the deletion of said bot to today (about 40 hrs or so).

    I've since chosen a new name, so I won't be needing this name but I digress this seems like a bug.

    invalid 
    opened by Osamu01 2
  • Add webhook support

    Add webhook support

    This includes regular webhook support and specific github webhook support.

    • [x] I understand and have followed the contribution guide
    • [ ] I have tested my changes locally and they are working as intended
    • [ ] These changes do not have any notable side effects on other Revolt projects
    opened by Zomatree 3
  • fix: raise masquerade avatar URL length limit

    fix: raise masquerade avatar URL length limit

    Please make sure to check the following tasks before opening and submitting a PR

    • [x] I understand and have followed the contribution guide
    • [ ] I have tested my changes locally and they are working as intended
    • [x] These changes do not have any notable side effects on other Revolt projects

    Discord server profile avatar URLs are longer than 128 characters. Raising the length limit would allow bridge bots to bridge server avatars.

    opened by janderedev 1
  • feature request: Outgoing WebHooks

    feature request: Outgoing WebHooks

    What do you want to see?

    Outgoing WebHooks: a listener on specified/all public channels and direct messages.

    Each trigger should result in an outgoing http request to a specified endpoint. The http request should contain the message id, the message content, the author, the channel id and the channel name.

    Use case: externally process the content of the message and, based on your logic, take action (eg. let a bot add a reaction to the message and send a reply message)

    enhancement 
    opened by JeroenAdam 1
  • Pull Request Preview Environments for increasing maintainer productivity

    Pull Request Preview Environments for increasing maintainer productivity

    I would like to make life easier for Revolt maintainers by implementing Uffizzi previews. Disclaimer: I work on Uffizzi Uffizzi is a Open Source full stack previews engine and is completely free for Revolt (and all open source projects). This will provide maintainers with previews of their PRs in the cloud, allowing them iterate faster and reduce time to merge.

    TODO:

    • [ ] Intial POC
    opened by waveywaves 0
  • fix: update reset value

    fix: update reset value

    If the bucket has reset left_until_reset will return 0 which will be inaccurate after deduct is called. So we need to update the reset value.

    Please make sure to check the following tasks before opening and submitting a PR

    • [x] I understand and have followed the contribution guide
    • [x] I have tested my changes locally and they are working as intended
    • [x] These changes do not have any notable side effects on other Revolt projects
    opened by TheBobBobs 3
Owner
Revolt
User-first chat platform built with modern web technologies.
Revolt
STAC server, built in Rust, backed by pgstac

stac-server-rs A simple STAC server written in Rust. To run an example server: stac-server 0.0.0.0:3000 example-config.toml --href data/joplin/collect

Pete Gadomski 5 Dec 4, 2022
Minimal DNS server built in Rust with rule system and logging.

MinDNS MinDNS is a minimal DNS server written in Rust. It is intended to be used as a firewall, black-hole or proxy DNS server. ⚡ Features Fully async

Sammwy 142 Oct 23, 2023
A sample API Gateway built in Rust (work in progress) for learning purposes

rust-api-gateway A sample API Gateway built in Rust (work in progress) for learning purposes. You can follow along by reading the tutorial articles: P

Luis Soares 4 Oct 29, 2023
DNS Server written in Rust for fun, see https://dev.to/xfbs/writing-a-dns-server-in-rust-1gpn

DNS Fun Ever wondered how you can write a DNS server in Rust? No? Well, too bad, I'm telling you anyways. But don't worry, this is going to be a fun o

Patrick Elsen 26 Jan 13, 2023
Dav-server-rs - Rust WebDAV server library. A fork of the webdav-handler crate.

dav-server-rs A fork of the webdav-handler-rs project. Generic async HTTP/Webdav handler Webdav (RFC4918) is defined as HTTP (GET/HEAD/PUT/DELETE) plu

messense 30 Dec 29, 2022
`prometheus` backend for `metrics` crate

metrics + prometheus = ❤️ API Docs | Changelog prometheus backend for metrics crate. Motivation Rust has at least two ecosystems regarding metrics col

Instrumentisto Team 2 Dec 17, 2022
axum-server is a hyper server implementation designed to be used with axum framework.

axum-server axum-server is a hyper server implementation designed to be used with axum framework. Features Conveniently bind to any number of addresse

null 79 Jan 4, 2023
Jex Compiler Server - Server that runs Jex code

Server that compiles and runs Jex code.

furetur 3 Nov 18, 2021
A simple web server(and library) to display server stats over HTTP and Websockets/SSE or stream it to other systems.

x-server-stats A simple web server(and library) to display server stats over HTTP and Websockets/SSE or stream it to other systems. x-server(in x-serv

Pratyaksh 11 Oct 17, 2022
QUIC proxy that allows to use QUIC to connect to an SSH server without needing to patch the client or the server.

quicssh-rs ?? quicssh-rs is a QUIC proxy that allows to use QUIC to connect to an SSH server without needing to patch the client or the server. quicss

Jun Ouyang 18 May 5, 2023
🔌 A curseforge proxy server, keeping your API key safe and sound.

?? CFPROXY - The curseforge proxy server Curseforge has locked down their API and now restricts access without authentification. This spells trouble f

null 6 Nov 7, 2022
Modrinth API is a simple library for using Modrinth's API in Rust projects

Ferinth is a simple library for using the Modrinth API in Rust projects. It uses reqwest as its HTTP(S) client and deserialises responses to typed structs using serde.

null 20 Dec 8, 2022
The Safe Network Core. API message definitions, routing and nodes, client core api.

safe_network The Safe Network Core. API message definitions, routing and nodes, client core api. License This Safe Network repository is licensed unde

MaidSafe 101 Dec 19, 2022
Proxy copilot api to openai's gpt-4 api

Proxying Copilot API to OpenAI's GPT-4 API Usage Start the Server export GHU_TOKEN=ghu_xxxx; ./copilot2chat Or sh start.sh start # start the server th

Smark 3 Dec 6, 2023
The gRPC library for Rust built on C Core library and futures

gRPC-rs gRPC-rs is a Rust wrapper of gRPC Core. gRPC is a high performance, open source universal RPC framework that puts mobile and HTTP/2 first. Sta

TiKV Project 1.6k Jan 7, 2023
A multiplayer web based roguelike built on Rust and WebRTC

Gorgon A multiplayer web-based roguelike build on Rust and WebRTC. License This project is licensed under either of Apache License, Version 2.0, (LICE

RICHΛRD ΛNΛYΛ 2 Sep 19, 2022
A CLI test program for HNU Cloud Computing Lab 2, built with Rust.

HTTP Server Tester This is a CLI test program for HNU Cloud Computing Lab 2. Install For most student, you don't neet to rebuild this project. We prov

null 5 Apr 21, 2022
An easy-to-use tunnel to localhost built in Rust. An alternative to ngrok and frp.

rslocal English | 中文 What is rslocal? Rslocal is like ngrok built in Rust, it builds a tunnel to localhost. Project status support http support tcp su

saltbo 220 Jan 7, 2023
The true next-gen L7 minecraft proxy and load balancer. Built in Rust.

Lure The true next-gen L7 minecraft proxy and load balancer. Built in Rust, Tokio and Valence. Why? Rust is a powerful programming language and a grea

Sammwy 67 Apr 16, 2023