MemeNNIT is an app for people who love sharing and making memes.
A memennit user can upload his own memes and view memes uploaded by other users,
the users are rewarded points on the basis of number of uploads and upvotes they recieve.
These points are used for computing the rank and generating a leaderboard listing all the users.
On launching the app, a splashscreen is displayed, here the app checks whether the user is logged-in through his/her google account
or not and accordingly redirects the user to the Login Screen or the Home Screen.
The users can register using their google account only.
After logging-in, the user is brought to the Post Activity. This activity contains a Bottom Navigation Bar using
which the user can navigate to different fragments in the app.
The fragment first displayed to the user is the Home Fragment which lists the posts uploaded by all other users in a RecyclerView.
Here the user can interact with these posts. He/She can like and comment on the posts and also report the post if they find it inappropriate.
The Post Activity also contains a toolbar at the top displaying the logo of the app, and a settings icon.
On clicking the icon, an options menu is displayed. Through this menu, the user can sign-out of MemeNNIT or can edit his profile.
The user can edit his profile in the EditProfileActivity

Using bottom navigation bar, the user can navigate to the PostFragment. Here, he can can add a new post by choosing an image from his device storage. He can write a suitable caption and then upload this post by clicking on the upload button.
In case the user wishes to edit the caption he used, he can always do so in the Edit Post Dialog.
The user can view his profile by navigating to ProfileFragment1 through navigation bar, and to view the profile of any other user, he has to navigate to ProfileFragment2.
In the profile fragment, the user-info is displayed and from here we can navigate to other activities which display the user's uploads and his achievements(which are not yet added :P).
The uploads are displayed in the UploadsActivity
All the users are alloted a rank on the basis of their score. The users are then displayed rank-wise in the LeaderboardFragment
This fragment also contains a searchview which is used to filter the items present in the LeaderboardRecyclerView

The users recieve the notification of various activities taking place. These notifications are sent to the users using firebase cloud messaging service. The notifications are first stored in a firestore collection, and then a cloud function is used to read this notification and then send it to user by obtaining the user's FCM Token.
You can find the cloud function here :
MemeNNIT-Notifications
The notifications are also listed in NotificationFragment, on clicking the notification, the post attached to the notification is displayed and then, the notification gets deleted from the collection.
