Give it a try to get the full experience! https://rate-my-gym.herokuapp.com
(Please expect a short delay in loading due to Heroku's web dyno sleeping)
Table of Contents
Leveraging RESTful routing, RateMyGym is a mobile-friendly, full stack gym review web app built using Node.js, Express, and MongoDB.
Functionalities include:
- CRUD operations (gyms and reviews) using Mongoose as the ODM
- Client-side validation with UI indicators
- Server-side validation using joi
- Authentication using Passport.js
- Authorisation, session management, and flash messages using express-session
- Image upload and cloud storage using Cloudinary
- Geocoding using Mapbox API
- Interactive cluster map using Mapbox GL JS
- Basic security using HTML sanitizing and helmet.js
The project implements the MVC architecture.
Main stack
- EJS
- Bootstrap
- Node.js
- Express
- MongoDB
Third-party services
Quick Navigation
Mobile View
Web View
Mobile View
Infinite scroll with vanilla JavaScript and querying /gyms/search
2022-04-14.14-47-18.mp4
Non-users can only view the gym's info and its reviews
Non-owners can add reviews, but cannot edit the gym's info or other users' reviews
Every CRUD action, login/logout/register, redirect will be accompanied by a flash message to improve UX, managed by the browser session
e.g. when non-users try to access "New" on the navbar