A modern adventure activity booking platform built with Node.js and MongoDB
WildSpire is a full-stack web application designed for discovering and booking adventure activities. Users can explore thrilling locations, leave reviews, and manage their bookings seamlessly. Whether you're into hiking, kayaking, or rock climbing, WildSpire helps you plan your next adventure effortlessly.
✅ User Authentication - Secure login/signup with Passport.js
✅ Activity Management - Create, edit, and delete adventure activities
✅ Image Handling - Upload multiple images with Cloudinary integration
✅ Location Services - Interactive maps powered by Mapbox
✅ Review System - User ratings and feedback for activities
✅ Responsive UI - Mobile-first design with Bootstrap 5
✅ Enhanced Security - Input validation, XSS protection, rate limiting
✅ Data Persistence - MongoDB with Mongoose ODM
- Backend: Node.js, Express.js
- Database: MongoDB, Mongoose
- Frontend: EJS, Bootstrap 5
- APIs: Mapbox, Cloudinary
- Authentication: Passport.js
- Security: Helmet, Express-Rate-Limit, MongoDB-Sanitize
Ensure you have the following installed before running the project:
- Node.js (>= 14.x)
- MongoDB (>= 4.x)
- Cloudinary Account (for image uploads)
- Mapbox Account (for interactive maps)
# Clone the repository
git clone https://github.com/yourusername/wildspire.git
cd wildspire
# Install dependencies
npm install
# Start the development server
npm run dev
- Copy
.env.example
to.env
:
cp .env.example .env
- Fill in your credentials:
NODE_ENV=development
PORT=8080
MONGO_URI=your_mongodb_uri
CLOUD_NAME=your_cloudinary_name
CLOUD_API_KEY=your_cloudinary_key
CLOUD_API_SECRET=your_cloudinary_secret
MAP_TOKEN=your_mapbox_token
SESSION_SECRET=your_session_secret
wildspire/
├── controllers/ # Route handlers
├── middleware/ # Custom middleware
├── models/ # Database schemas
├── public/ # Static assets
│ ├── css/
│ ├── js/
│ └── images/
├── routes/ # Route definitions
├── utils/ # Helper functions
└── views/ # EJS templates
✅ CSRF Protection - Secure user interactions
✅ XSS Prevention - Protects against cross-site scripting attacks
✅ Rate Limiting - Prevents excessive API requests
✅ Input Validation - Ensures data integrity
✅ Secure Sessions - Protects user data
✅ Image Upload Validation - Filters unsafe file types
To run tests, execute:
npm test
WildSpire is ready for deployment on:
- Render
- Mongo Atlas
- AWS
We welcome contributions! To contribute:
- Fork the repository
- Create a feature branch (
git checkout -b feature-name
) - Commit your changes (
git commit -m 'Add feature'
) - Push to your branch (
git push origin feature-name
) - Open a pull request
If you find any bugs, please open an issue with:
- Bug description
- Steps to reproduce
- Expected vs actual behavior
WildSpire is licensed under the MIT License. See LICENSE for details.
Happy adventuring! 🏕️🌍