Fullstack web app (MongoDB, Express, NodeJS) providing a persistent platform for browsing, creating and managing campgrounds and user profiles. Live version:
YelpCampDeployment is a refactored version of the yelpCamp project developed under the instruction of Colt Steele, with a shoutout to Ian Schoonover and Zarko Maslaric. The project is my first fully deployed fullstack app, and is not intended for heavy use. It allows a user to accomplish the following:
browse campgrounds and registered users
no login required
search (fuzzy) for campgrounds and registered users
This app leverages the following strategies. For all installed packages see package.json. For further explanation see the relevant dev notes in each route for the package in question.
express and mongoose for RESTful and CRUD strategies
passport for local authentication/authorization
connect-flash for front-end error handling
ejs for templating
node-geocoder for implementing Google Maps APIs
cloudinary for hosting and moderating user uploaded images
The show page for each campground boasts a fully interactive map via the Google API. On loggin in users can create campgrounds and contributed comments. Options for editing or deleting the campground and/or comments appear if the logged-in user posted them.
The show page for each user is similar but simpler, with the authorization functionality for editing and deleting also present.
Search Results
The search feature is currently limited to campground names and usernames. Like the index pages for all campgrounds and all users, search results are displayed in paginated format. The default number of displayed search results can be adjusted in the search.js route by modifying the perPage variable. The same holds true for the campgrounds and users index pages via the campgrounds.js and users.js, routes, respectively.
Administration
Administration is built into the user profile on the database side, where all registered users are {isAdmin: false} by default. This is where I departed from the course, leaving the option for {isAdmin: true} up to the sole discretion of the one having database permissions to do so. That is, it cannot be accessed through the front-end, but in the current version must be human-moderated. If a user profile is granted administrative authorization, they have the ability to edit or delete any other user profile, campground, and comment.
All images uploaded by registered users are filtered through Cloudinary's moderation tools: WebPurify for human moderation; aws Rekognition for AI moderation. Both are fast, and allow uploaded images to appear right away (presuming they are not flagged).