You can view the deployed version of the app here
-
Install dependencies by running
yarnornpm install -
Run app in development mode by running
yarn startornpm start -
Open http://localhost:3000 to view app in browser
-
Install dependencies by running
yarnornpm install(if you haven't already done so) -
yarn testornpm test
- Initially I was planning on making a simple websocket server using
socket.iothat would broadcast all incoming messages to connected users.- I then remembered that Firebase offers a realtime database service. After some research, I quickly decided that Firebase's realtime database was the right solution due to the fact that the data is synced across all clients in realtime.
- After deciding to use the Firebase database, I had also initially decided to use their authentication service for the initial login experience.
- The authentication service was very simple to use, but I ultimately decided to keep it simple and just store the current user's
usernameinsessionStorage
- The authentication service was very simple to use, but I ultimately decided to keep it simple and just store the current user's
- I think one of the most challenging things for me was working with React Router in TypeScript
- It's been quite some time since I had worked with React Router so I had to refresh my memory on how to get it working and then came the TS errors. It took me a while to figure out how to properly type router and router component props. I also had a
.tsextension onPrivateRouteinstead of.tsxwhich was really throwing me off 🤦🏻♀️.
- It's been quite some time since I had worked with React Router so I had to refresh my memory on how to get it working and then came the TS errors. It took me a while to figure out how to properly type router and router component props. I also had a
If I had more time to work on the chat app I would love to implement all the features that I thought about along the way including:
- Multiple chat rooms
- Ability to invite specific users to said chat room
- User avatars
- Emoji keyboard 👩🏻💻
- Giphy integration
- Message reactions (like in iMessage)
- Chrome notifications
- Customizable styling of chat dashboard (e.g. dark/light mode)
- Write more tests