It's just another chat application, and its here to take on the countless other applications vying for your time! Who knows, maybe it'll be the next MSN (hopefully not)
In all honesty though this is a very basic real time chat application. I built it to learn a few technologies and display some basic skills. In the future it may become somthing. Who knows.
I made Not Another Chat App to learn some things.
I've been a react developer for some time. I've tried next.js in the past but wanted to have a bigger project that I've built on my own. Its quite impressive and will probably be one of my gotos for future projects.
Everyone keeps talking about tailwind and for good reason. Its a really great tool, and once I got the hang of it it really was nice to work with. I'm not sure if I like this or Styled Components better, but I really like it.
I decided to go with socket-io to speed up the process of learning sockets. I've used sockets in the past and wrote applications in C with them in School, but I wanted to learn them as well in js/ts. As I slowly developed the app though I realized I was implementing a lot of the things socket-io does for you, like rooms, on my own. I'd like to get rid of the package and switch to basic websockets in the future. But for now this works.
I've never wrote a backend application with Typescript or Javascript, so I wanted to learn how. After getting over some learning hurdles and project setup, express js is quite simple and powerful. It'll never beat a Backend system written in Java, C, Python, or Golang in terms of Performance, but for quick or simple prototypes its really good and easy to work with.
To get over my fear of Authentication I decided to build my own project where you can register and login. I decided to go with JWTs because I wanted to learn about them and they are also just a lot simpler than a session cookie.
I've only had 1 project before where I've deployed my personal project, and I used github pages for a simple CRA app.
For the backend I decided to go with Railway because a lot of people were recommending it. I'm glad I did because Railway made the process quite simple. I had some personal hickups because I decided to go with a monorepo, but overall it was quite simple.
For the frontend since I was using next the obvious choice was just to deploy on Vercel. I was quite surprised again how easy it was and how well it integrates with github. Again, some minor problems because of a monorepo but it worked out really well.
This project isn't going to change the world. But I accomplished all my goals and the skills I've learned will amke my next projects easier and less scary.