Skip to content

kasimlohar/Wildspire

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

127 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

WildSpire ⛰️

A modern adventure activity booking platform built with Node.js and MongoDB

Node.js Version MongoDB Version License

🌟 Overview

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.


✨ Features

βœ… 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


πŸŽ₯ Live Demo

🌐 View Live Demo - Try it now!

πŸ” Demo Credentials

Email: demo@wildspire.com
Password: Demo@123

Note: This is a demo account for testing purposes. All data may be reset periodically.


πŸ› οΈ Tech Stack

  • 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

πŸ“‹ Prerequisites

Ensure you have the following installed before running the project:


πŸš€ Getting Started

1️⃣ Clone & Install Dependencies

# Clone the repository
git clone https://github.com/kasimlohar/wildspire.git
cd wildspire

# Install dependencies
npm install

# Start the development server
npm run dev

2️⃣ Setup Environment Variables

  1. Copy .env.example to .env:
cp .env.example .env
  1. 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

πŸ“ Project Structure

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

πŸ”’ Security Features

βœ… 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


πŸ“Έ Screenshots

Homepage

Homepage

Activity Details

Activity Page

Booking

Booking

Profile

Profile


πŸ§ͺ Testing

Manual Testing Checklist

  • User can register new account
  • User can login/logout
  • User can create activity with images
  • User can edit own activities
  • User can delete own activities
  • User can add reviews
  • User can edit own reviews
  • User can delete own reviews
  • User can book activities
  • Search functionality works
  • Filter by difficulty works
  • Sort by price works
  • Maps display correctly
  • Image upload works
  • Responsive on mobile
  • Toast notifications appear
  • Form validation works

Running Tests

npm test

Demo Verification

Run the demo verification script to test all functionality:

# Test all demo features
node test-demo.js

# Initialize database with demo data
npm run init-db

Load Testing (Optional)

# Install artillery globally
npm install -g artillery

# Run load test
artillery quick --count 10 --num 50 https://your-app.vercel.com/activities

πŸ“± Browser Support

  • βœ… Chrome 90+
  • βœ… Firefox 88+
  • βœ… Safari 14+
  • βœ… Edge 90+
  • ⚠️ Internet Explorer - Not supported

⚑ Performance Optimizations

  • Image lazy loading - Images load as user scrolls
  • Database indexing - Text search and query optimization
  • Lean queries - MongoDB .lean() for faster JSON conversion
  • CDN delivery - Bootstrap, icons, and libraries from CDN
  • Gzip compression - Automatic compression in production
  • CSS/JS minification - Minified assets for production builds

πŸ› Known Issues & Future Enhancements

Known Issues

  • Rate limiting may trigger during development due to hot reload (this is expected)
  • Demo bookings are instant confirmations (no payment processing)

Planned Features

  • Email notifications for bookings and reviews
  • Payment integration (Stripe/Razorpay)
  • Admin dashboard for managing all activities
  • Activity favoriting/wishlist
  • Social media sharing integration
  • Multi-language support (i18n)
  • Mobile app (React Native)
  • Advanced search with filters (date range, price range)
  • Activity recommendations based on user preferences
  • Real-time availability calendar

πŸš€ Deployment

WildSpire is ready for deployment on:

  • Render
  • Vercel
  • Mongo Atlas
  • AWS

🀝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create feature branch
    git checkout -b feature/AmazingFeature
  3. Commit your changes
    git commit -m 'Add some AmazingFeature'
  4. Push to the branch
    git push origin feature/AmazingFeature
  5. Open a Pull Request

Code Style Guidelines

  • Use ES6+ features (arrow functions, async/await, destructuring)
  • Follow ESLint configuration included in project
  • Write meaningful commit messages using conventional commits
  • Add comments for complex logic
  • Update documentation for new features
  • Test your changes before submitting PR

Development Setup for Contributors

# Fork and clone the repo
git clone https://github.com/kasimlohar/wildspire.git
cd wildspire

# Install dependencies
npm install

# Set up environment variables
cp .env.example .env
# Edit .env with your credentials

# Initialize database with demo data
npm run init-db

# Start development server
npm run dev

πŸ› Bug Reports

If you find any bugs, please open an issue with:

  • Bug description
  • Steps to reproduce
  • Expected vs actual behavior

οΏ½ Support

For issues, questions, or suggestions:


πŸ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.

MIT License Summary

  • βœ… Commercial use
  • βœ… Modification
  • βœ… Distribution
  • βœ… Private use
  • ⚠️ Liability and warranty limitations apply

πŸ™ Acknowledgments

Special thanks to:

  • Mapbox - Beautiful mapping services and geocoding
  • Cloudinary - Reliable image hosting and transformation
  • Bootstrap - Responsive UI components
  • MongoDB - Flexible NoSQL database
  • Express.js - Fast, minimalist web framework
  • Passport.js - Authentication middleware
  • EJS - Embedded JavaScript templating
  • Unsplash Photographers - Amazing activity images

Resources Used


Made with ❀️ by Kasim Lohar

⭐ Star this repo if you found it helpful!

πŸ”— Share with others who might benefit from this project


Project Stats

GitHub stars GitHub forks GitHub watchers

Happy adventuring! πŸ•οΈπŸŒ

About

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors