hanshank / chatty

Real-time chat application using Node, Next.js and RxJS

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Welcome to Chatty

Hi! If you are reading this, you must be ready to embark into the universe of Chatty. So let's get you started.

What is this

A real-time chat application that supports multi-room chatting and room creation.

Technologies used

  • Frontend: uses Next.js with React, RxJS, CSS modules and websockets (Native DOM API).
  • Backend: uses a custom Node.js server with a low-db file based database, ws (for websockets), and RxJS.

How to run locally

In order to run locally, please follow the steps outlined below:

  1. clone this repo to a local destination
  2. cd into the newly cloned folder
  3. run npm run setup
  4. run npm run dev - this will start both the frontend and backend
  5. open the app by accessing http://localhost:3000/ in a browser

Some notes

I'm confident in my skills as an engineer/dev, but keep in mind I've never worked with RxJS before and only ever dabbled with the basics of websockets. That's kinda the beauty of engineering though, to pick up something new over a few days and make something cool with it.

Disclaimer

In my day to day job I focus on a high test coverage and also dealing with edge-cases and error handling in general. This app doesn't have all of that. Be aware that there are probably some bugs that I've missed. If you experience something that stops you from running the app locally, please submit a new issue and tag me. I'd be happy to fix it. This might not be Netflix, but there are still patterns and workflows in there that I swear to on a regular basis, such as code abstraction, clean code architechture, separations of concerns and keeping things DRY (though I got lazy at the end - sorry pragmatic programmers...).

Super open to get some feedback on how to take RxJS and WebSockets to the next level if anyone has feedback as well. Looking forward to it!

About

Real-time chat application using Node, Next.js and RxJS


Languages

Language:TypeScript 81.6%Language:CSS 10.7%Language:JavaScript 7.7%