This is a five-week project building a photo sharing app using React and MongoDB. The frontend uses Material-UI with customization. The focuses are more on implementing functionalities than designing and building nice-looking interfaces so please don’t criticize too much on UI/UX :(
Most of the features are explained below; also a demo is linked for reference.
Main Components
Users need to register and login to use our app. Validations are implemented both in the frontend and the backend.
A toolbar on the top supports some users’ actions. A list of existing users on the left, with the current user highlighted, provides navigation to the user details of all the users in our system. The main content on the right can either be users’ profiles, or all photos belonging to that specified user.
Advanced Features: With advanced mode enabled by checking the box on the toolbar, the view changes to a photo viewer that only shows one photo at a time with a mechanism to step forward or backward.
Upload Photos and Add Comments
Users can upload photos from their local machine by pressing the “Add Photo” button. Users can also comment on their or others’ photos.
Advanced Features: The sidebar displays counts of photos (green) and comments (red) by each user; clicking on the comment count will display a collection of all comments by each user, grouped by photos. Clicking on any cell, users will be redirected to the photo view containing that comment.
Additional Features
Users can save a photo to favorite. The toolbar provides an entry to view all photos saved by the current user. By clicking on a photo, users can view the photo in a larger view via a popped-up window.
Users can like and unlike a photo. The photo list is sorted by the number of likes in descending order.
Users can mention any existing users in comments by typing @. On users’ profiles, there is a section displaying all the photos that mention the specified user.