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
druid
UI 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 -d
to 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-server
again, this time it should connect. - Done!
Now clients can connect.
Contributions are very welcome! Features, ideas, bug fixes, anything.