A full-stack web application that allows users to create, view, edit, and review campground listings. Built with the MERN stack principles (MongoDB, Express, Node.js) and EJS for server-side rendering, the platform integrates authentication, image uploads, and map location features to deliver a complete CRUD experience.
- ✅ User authentication and authorization (Register/Login/Logout)
- 📝 Full CRUD operations on campground listings
- 🖼️ Image upload functionality via Cloudinary
- 📍 Geocoding and maps integration using Mapbox
- 💬 Review system with ratings and user ownership control
- 🔒 Secure session management and input validation
- 🧰 Modular code structure with MVC architecture
- Backend: Node.js, Express.js
- Database: MongoDB, Mongoose
- Templating: EJS, EJS-Mate
- Authentication: Passport.js (Local Strategy), express-session
- Image Uploads: Multer, Cloudinary
- Geocoding: Mapbox API
- Validation & Security: Joi, Helmet
- Others: Connect-flash, Method-Override
- Clone the repository
git clone https://github.com/ksl2003/Campground-Listing-System.git cd Campground-Listing-System - Install Dependencies
npm install
- Set up environment variables
- Create a
.envfile and add the following:
CLOUDINARY_CLOUD_NAME=your_cloud_name CLOUDINARY_KEY=your_api_key CLOUDINARY_SECRET=your_api_secret MAPBOX_TOKEN=your_mapbox_token DB_URL=your_mongodb_connection_url SECRET=session_secret GOOGLE_CLIENT_ID=google-client-ID GOOGLE_CLIENT_SECRET=google-client-secret
- Create a
- Run the App
npm start
- This Project is deployed and hosted via Render
This project is licensed under the MIT License.