A Social Media Messaging App which features some of the core functionalities of Discord.
- Register to gain access to the app.
- Join a single test server consisting of authenticated users.
- Create channels inside the server.
- Talk via text on each created channels
- Check users who are online/offline.
- Update your Profile
- Log-in/Log-out
This is my 2nd Full Stack app made after the Photo-Tagging App. I got to learn more and be better at using Firebase. This is my last project before I delve into the Backend stuff.
Some of the hurdles along the way:
-
Routing with
react-router-dom. I had to figure out nested routing. Clicking one of thechannelsshould only re-render/route to theChatPanelcomponent that corresponds to the channel. Thankfully, the docs were enough. Got to useOutletanduseOutletContext. Pretty nice! -
Authentication. It was a bit hard for me since Firebase docs for me isn't clear enough. I learned how to make an
AuthContextProviderthat consists of all the Auth actions likeloginorlogout. Also learned more about Firestore rules. -
Talking to the Database (
Firestore). Was really nice playing with all the Firebase Store actions likeonSnapshot,getDocs, etc. Not as hard as the Auth. -
User Interface.
CSSwill always be my final boss. The mobile view isn't 100% responsive yet.
- Clone the repository. (
git clone ...) - Install/Update
node_modulesin the project directory. (npm install) - Create a Firebase Web App in Google Firebase.
- Copy the configs into
firebase-config.js. - Run the app. (
npm start)
Made with mainly ReactJS and bootsrapped with create-react-app.
- React / CRA
styled-componentsreact-router-domfor routing pages.Google Firebaseas backend.Jestfor testing.react-testing-libraryfor testing.unique-names-generatorto randomly create usernames.styled-iconsfor the awesome icons.
- Implement changing display/profile picture.
- UI/UX improvements especially on mobile.
- Performance updates.
- More testing!
