Home

Awesome

ci.yml tchatchers-stars tchatchers-license github-issues instance-health

<p align="center"><img height="300" src="https://raw.githubusercontent.com/nag763/tchatchers/main/.github/gh_logo.png"></img></p> <h2 align="center">tchatchers</h2> <h4 align="center">A blazing fast chat application built with Axum and yew.rs :rocket:</h4> <p align="center"><img src="https://raw.githubusercontent.com/nag763/tchatchers/main/.github/app_screens.png"></img></p>

TL;DR

How to access the application

The application is deployed on https://tchatche.xyz and should be compatible with any modern navigator.

It was formerly on tchatchers but the domain name renewal fee was too expensive.

About

tchatchers is an application used to help clients to communicate between each others. It is built with yew.rs and axum server in order to provide blazing fast responses and strong API.

The main application's usage is to create rooms to talk between people being connected to the application. You like football ? Try the football room. You like philosophy ? Try the philosophy one.

All depends on you to chat how you want to .

:new: Installing the application locally and starting developping

Follow this guide.

Project structure

.
├── Cargo.lock => Dependency lock file generated by Cargo
├── Cargo.toml => Main configuration file for the Rust project
├── CODE_OF_CONDUCT.md => Code of conduct for contributors
├── docker-compose_dev.yml => Docker compose file for development environment
├── docker-compose.yml => Docker compose file for production environment
├── Dockerfile_back => Dockerfile for building the backend service
├── Dockerfile_front => Dockerfile for building the frontend service
├── Dockerfile_tct => Dockerfile for building the TCT tool
├── LICENSE.MD => License file for the project
├── Makefile.toml => Makefile for building and testing the project
├── README.md => Project README file
├── SETUP.md => Instructions for setting up the development environment
├── setup.sh => Shell script for setting up the development environment
├── tchatchers_back => Rust crate for the backend service
├── tchatchers_cli_tools => Rust crate for command-line tools
├── tchatchers_core => Rust crate for shared core functionality
└── tchatchers_front => Rust crate for the frontend service
└── tchatchers_async => Rust crate for the asynchronous service

Rustdoc

The rustdoc can be found for each subproject at :

Technologies used

Technology/FrameworkUtilityVersion
RustProgramming language1.68.2
TailwindStylesheets3.X
yew.rsWASM Frontend framework0.20
axumRust server0.6.12
trunk-rsRust development WASM server0.16
nginxReverse proxy serverlatest
PostgresSQL enginelatest
RedisMessaging and cachelatest

CICD

Production project architecture

The production architecture consists of several layers :

Postgres schema

Made with one of my other tools, doteur.

img

Personnal objectives behind this project, feedback

My goal with this project was to learn more about both WASM and Websocket technologies besides of perfecting my Rust knowledge. It was really nice to build such a project and I hope it can inspire or help other peoples to built similar tools. I think the code is pretty good (even though it should be perfectible) on the back and core projects, but quite perfectible on the front one. It is to note that there are still some bugs remaining.

My feeling is that both Rust and WASM have a pretty good future when it comes to frontend apps. The backend side of Rust already has several frameworks that are making it a reliable language when it comes to handling data logic, and the development of yew.rs or similar technologies in the future could be a game changer for the interest users and firms have toward the language.

Special thanks

Thanks to the Rust community for all their advices and their time reviewing my project, it's always a pleasure to be part of such a community. :blush: :crab: