- Sign in with Facebook and Google
- Link your social media accounts and create one account
- users can upload/edit images to their profile
- cache user avatar images for 3 days
- user can edit their nickname through the use of reusable and editable input component
- users nickname updates concurrently inside firebase storage
- Create a new chat room
- Like messages
- user online / offline status
- see messages
- send a new message
- send files to chat rooms
- send audio files and play audio files
- see room information
- role-based permissions, admin can edit room information
- broadcast message to send notification to other members
- notifications for subscribing or unsubscribing from notifications
- only the admin user of the room can edit the room information and the admin can grant permission to another user
- chats are grouped by dates
- pagination and scroll to bottom of the page when the user types a new message
- REACT SUITE UI LIBRARY and SASS
- React Context API with
useContexthook to get the username for signin and registration - Firebase Realtime database to store profiles, rooms, status of the user(online/offline) and messages
- Firebase Authentication with Facebook and Google
- Firebase Storage to store profile avatar image, chat images and audio
useRefhook to access Canvas element for avatar image- Firebase Cloud Functions to add realtime data and send notifications to the user
- FCM cloud functions Send messages to multiple devices
Service Workerto get a background notification, even if the app is offline, user can get notifications.use-context-selectorhook- Build presence in CLoud Firestore
useHoverhook- User avatar made with React avatar editor
- react-mic for recording audio from a user's microphone
# application
yarn install
yarn start
# runs on http://localhost:3000/
# backend
cd functions
npm install
npm start
# runs on http://localhost:4000/The App is developed using Node v10.
- Inside
src/misc/firebase.jsreplace config with your firebase project config. - Get FCM vapid key for real-time notificaitons from
Firebase dashboard > Cog icon > Project Settings > Cloud Messaging > Web push certificates > Key pairand put it asfcmVapidKeyinsidesrc/misc/firebase.js. - Run
npm run startand develop
- Download a service account from
Firebase dashboard > Cog icon > Project Settings > Service accounts > Generate new private key. - Put the file as
functions/service-account.json - Run
npm run startfrom functions
- Install firebase-cli by running
npm install -g firebase-tools - Run
firebase deploy
