Project done using:
- Firebase suite (Auth, Firestore with Security rules, Mail Extension, Messaging, Hosting, Emulator)
- React for frontend
- User registration with email, Google, and Facebook using Firebase Authentication.
- Login with email, Google, and Facebook using Firebase Authentication.
- Send friend requests to both registered and non-registered users. Non-registered users receive an invitation via email to join the application using Trigger Email.
- Handling friend requests. Users can accept or reject requests.
- Conversations with friends. The users who are friends of the logged-in user are listed, and when one is selected, the chat between them is displayed.
- View the latest message in the friends' list.
- In-app notifications when receiving messages.
- Security: Security rules are implemented for Firestore to prevent unauthorized access to data.
![image](https://private-user-images.githubusercontent.com/43559181/250569556-f2c82386-36dc-48b0-9c5b-296a352b6d83.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjg1MTcsIm5iZiI6MTczOTAyODIxNywicGF0aCI6Ii80MzU1OTE4MS8yNTA1Njk1NTYtZjJjODIzODYtMzZkYy00OGIwLTljNWItMjk2YTM1MmI2ZDgzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE1MjMzN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThhYTQ1OGY2ZTM1NGRjODhhOTAzOWM4MDFlZDdkOWEyYzc1NThlYjFhMmNiZmE3MzY1MmM5NjBlMjQ5ZmNiMmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.DeP-KRNM-Wxkfn20a09SHtrrldqTmoP-WvZdQea_vCs)
![image](https://private-user-images.githubusercontent.com/43559181/250569511-98a4e76c-4d3a-41d7-adc6-acd625ebc6d9.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjg1MTcsIm5iZiI6MTczOTAyODIxNywicGF0aCI6Ii80MzU1OTE4MS8yNTA1Njk1MTEtOThhNGU3NmMtNGQzYS00MWQ3LWFkYzYtYWNkNjI1ZWJjNmQ5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE1MjMzN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJiNWExNzg4OTRkMzgwYjBiZTNiNWI1OWY3ODdmMGJlMmJhNjg4NTgyYzgzYjk1YjZiOTM2M2MwNGY3M2Y0MzkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.IqfrKw1RJoDlav7kURPzM7XqzzDv_UN1AbBHpIjN-UE)
First, navigate to the root folder of the project. Once in the root folder, run the following commands to run the application:
npm ci
npm start
If you have Firebase Emulators in the root folder of the project, run firebase emulators:start
.
In another console, in the root folder of the project, run:
cd tests
npm ci
npm run test