/Chirp

A chat app built from scratch using GTK4 in Rust

Primary LanguageRustMIT LicenseMIT

Chirp: Exploring GTK4-rs through Chat

wakatime

Chirp is my playground for exploring the world of GTK4-rs while working on a chat application. Currently, it's a practice project with a straightforward and functional UI.

Features

🎨 User Interface: Chirp features an interface crafted using GTK4-rs.

🌐 Server: A WebSocket server created with actix-web the GUI can communicate with, allowing usage of multiple clients with auto-reconnecting.

🛡️ Security: The application incorporates several security measures, including TLS-encrypted server communication and token-based authentication for the GUI client.

💬 Messaging: The app supports basic messaging capabilities including sending and deleting messages, adding new chat, and message synchronization upon startup.

🔒 Message Encryption: A combination of RSA and AES is used to add encryption to every single message and is decrypted locally to show it in the UI.

App Screenshots

Current Status

No further development is planned for the project as it served its purpose

Project Components

  • gui/: Contains the UI interface built with GTK4-rs along with all the logic and UI components to make it run.
  • server/: Hosts a WebSocket server created with actix-web, facilitating communication with the GUI and managing the DB.
  • migrations/: Contains DB migrations details, should be handled with diesel-rs

Explore the Project

  • Clone this project onto your local machine git clone https://github.com/TheRustyPickle/Chirp.git.
  • Ensure you have the required dependencies, including the latest GTK4, Libadwaita libraries, and Postgres.
  • Install diesel cli cargo install diesel_cli
  • Update Postgres credentials on .env file
  • Setup DB and run migrations
diesel setup
diesel migration run
  • Setup GTK Schema settings
mkdir -p $HOME/.local/share/glib-2.0/schemas
cp ./gui/src/com.github.therustypickle.chirp.gschema.xml $HOME/.local/share/glib-2.0/schemas/
glib-compile-schemas $HOME/.local/share/glib-2.0/schemas/
  • Start the server cargo run --bin chirp-server --release
  • Launch the GUI using the command cargo run --bin chirp-gui --release

License

Chirp is under the MIT License.