Team Lead: Saniya Vaghani
Email: [email protected]
A modern MERN stack application that enables users to exchange skills through a collaborative platform. Users can offer their expertise and request skills from others, creating a community-driven learning ecosystem.
- Overview
- Features
- Tech Stack
- Prerequisites
- Installation
- Configuration
- Usage
- API Endpoints
- Project Structure
- Contributing
- Contact
SwapSkill is a full-stack web application built with the MERN (MongoDB, Express.js, React.js, Node.js) stack. The platform facilitates skill exchange between users, allowing them to offer their expertise and request skills from others in the community.
- 🔐 User registration and authentication with JWT
- 👤 Public and private user profiles
- 🛡️ Secure password hashing with bcrypt
- 🔒 Protected routes and middleware
- 📝 Create and manage skill listings
- 🔍 Advanced skill search and filtering
- 📊 Skill categories and descriptions
- ⭐ Skill ratings and reviews
- 🤝 Request skill swaps from other users
- ✅ Accept, reject, or cancel swap requests
- 📈 Track swap history and status
- 💬 In-app messaging system
- 👨💼 Comprehensive admin panel
- 🚫 User management (ban/unban)
- ✅ Skill approval system
- 📊 Platform analytics and reports
- 📢 Platform-wide messaging
- 🔔 Real-time notifications
- 💬 Live messaging with Socket.io
- 📱 Responsive design for mobile and desktop
- Node.js - Runtime environment
- Express.js - Web framework
- MongoDB - Database
- Mongoose - ODM for MongoDB
- JWT - Authentication
- Socket.io - Real-time communication
- Multer - File upload handling
- bcryptjs - Password hashing
- Express-validator - Input validation
- React.js - UI library
- Material-UI - Component library
- React Router - Client-side routing
- Socket.io-client - Real-time client
- Axios - HTTP client
Before running this application, make sure you have the following installed:
- Node.js (v14 or higher)
- npm (v6 or higher)
- MongoDB (v4.4 or higher)
-
Clone the repository
git clone <repository-url> cd SkillSwap2
-
Install backend dependencies
cd backend npm install
-
Install frontend dependencies
cd ../frontend npm install
-
Create environment file
cd backend cp .env.example .env
-
Configure environment variables
MONGODB_URI=mongodb://localhost:27017/skillswap JWT_SECRET=your_jwt_secret_key_here PORT=5000 NODE_ENV=development
-
Start MongoDB service
# On Windows net start MongoDB # On macOS/Linux sudo systemctl start mongod
-
Start the backend server
cd backend npm run dev
The backend will run on
http://localhost:5000
-
Start the frontend application
cd frontend npm start
The frontend will run on
http://localhost:3000
-
Build the frontend
cd frontend npm run build
-
Start production server
cd backend npm start
POST /api/auth/register
- User registrationPOST /api/auth/login
- User loginGET /api/auth/profile
- Get user profile
GET /api/skills
- Get all skillsPOST /api/skills
- Create new skillPUT /api/skills/:id
- Update skillDELETE /api/skills/:id
- Delete skill
GET /api/swaps
- Get user swapsPOST /api/swaps
- Create swap requestPUT /api/swaps/:id
- Update swap status
GET /api/admin/users
- Get all usersPUT /api/admin/users/:id/ban
- Ban userGET /api/admin/reports
- Get platform reports
SkillSwap2/
├── backend/
│ ├── controllers/ # Route controllers
│ ├── middleware/ # Custom middleware
│ ├── models/ # MongoDB models
│ ├── routes/ # API routes
│ ├── uploads/ # File uploads
│ ├── utils/ # Utility functions
│ └── app.js # Main server file
├── frontend/
│ ├── src/
│ │ ├── api/ # API service functions
│ │ ├── components/ # Reusable components
│ │ ├── context/ # React context
│ │ ├── pages/ # Page components
│ │ └── utils/ # Utility functions
│ └── public/ # Static files
└── README.md
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request