This repository contains the Node.js back-end code for a Yelp-like social media and restaurant reviews web application. The web application with 6 distinct screens: Login/Register, Home, Profile, Search/results, Details. The back-end uses MongoDB to store its data in the following collections: users, follow, ratings, restaurants, reviews, and reviewsmodels. The corresponding front-end code can be found at the GitHub repository linked here.
Please see a demo video of this web application linked here.
Please see a visual overview of the project's overarching structure below:
The landing page of the web application, the home page, is the first page when visiting the website. It displays generic content for anonymous users and specific content for the logged-in user. The content is dynamic and based on the latest data entered by the user. The home page looks polished and finished and is mapped to either the root context /
or /home
.
The profile page is accessible to all users and displays personal information, links to related content, and groups similar data into distinguishable categories. The profile page allows users to change their personal information if they are logged in, but hides sensitive information from others visiting the profile. The profile page is mapped to /profile
for displaying the profile of the currently logged-in user and to /profile/{profileId}
for displaying someone else's profile.
The web application provides users the capability to search content from a remote service and display a summary of the results. The search and results page includes a form to search a remote API and a summarized list of results matching the search criteria. The results come from the remote API and can be augmented with related data in the local databases. The search and results page is mapped to /search
when no search has been executed and no results exist and to /search/{search criteria}
or /search?criteria={search criteria}
when a search has been executed and the corresponding results shown.
The details page allows users to view a detailed view of the search result, including additional related data from the local database and links to related data/users. The details page is mapped to /details/{unique identifier}
or /details?identifier={unique identifier}
, where the unique identifier uniquely identifies the item being displayed.
The login and register page allow users to register with the website and then login later on. Users can choose a role when signing up or select an admin role later. The login and register page disallows access one web page (namely, /profile
) unless logged in and adapts content based on whether the user is logged in or not. The login and register pages are mapped to /login
and /register
respectively.
- Melanie Becker and Mohammed Amer, my partners for this project.
- Professor Jose Annunziato, my Web Development professor.