Instant messaging chat system over TCP.
Written in Rust with tokio-rs.
Packet design and handshake inspired partially by Minecraft.
- Standalone server
- GUI client (using
druidUI toolkit) with customizations via config file - TUI client
- Encryption
- Sending images (via clipboard)
- Server management (banning, whitelists, etc)
Because accord's gui client uses druid, it requires gtk on Linux and BSD.
See druid's Readme notes for more information.
GUI's theme (and some saved data) can be edited in config.toml file.
- On Unix system it's in
$XDG_CONFIG_HOME/accord-gui/config.toml - On Windows system it's in
$LOCALAPPDATA/accord-gui/config.toml
Colors are in hexadecimal format (#rrggbb, #rrggbbaa, #rbg or #rbga).
GUI client can automatically try to load an image from a message with a link, however this is a potential security risk (e.g. IP grabbing), so it's disabled by default.
(If you're using a VPN or a proxy, then the risk should be nonexistent and in worst-case scenario it's still less risky than clicking on a random link.)
- Improve GUI experience (sidebar with active users, loading up past messages and more)
- Verify that the encryption is secure
- Add more features
- Figure out long-term goals
- Server:
- tokio-rs
- postgres
- GUI:
- tokio-rs
- druid
- Clone docker compose repo
git clone https://github.com/LoipesMas/accord-docker.git
cd accord-docker
- Edit
config.toml(you probably only want to change operators) docker compose up -dto run the server in the background
- Compile accord-server
git clone https://github.com/LoipesMas/accord.git
cd accord
cargo b -p accord-server --release
- Set up postgresql database somewhere.
Refer to postgres instructions for how to do that. - Launch
accord-server. It will error something about connecting to the database, but we just need the default config. - Edit the config (probably located in
~/.config/accord-server/config.toml) with correct postgres credentials. - Launch
accord-serveragain, this time it should connect. - Done!
Now clients can connect.
Contributions are very welcome! Features, ideas, bug fixes, anything.
