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 thechannels
should only re-render/route to theChatPanel
component that corresponds to the channel. Thankfully, the docs were enough. Got to useOutlet
anduseOutletContext
. 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
AuthContextProvider
that consists of all the Auth actions likelogin
orlogout
. 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.
CSS
will always be my final boss. The mobile view isn't 100% responsive yet.
- Clone the repository. (
git clone ...
) - Install/Update
node_modules
in 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-components
react-router-dom
for routing pages.Google Firebase
as backend.Jest
for testing.react-testing-library
for testing.unique-names-generator
to randomly create usernames.styled-icons
for the awesome icons.
- Implement changing display/profile picture.
- UI/UX improvements especially on mobile.
- Performance updates.
- More testing!