SkillSwap is a comprehensive freelance marketplace platform connecting skilled freelancers with clients seeking their services. Built using the MERN stack (MongoDB, Express, React, Node.js), it provides a secure, scalable platform to address the needs of Pakistan's growing freelance industry.
- Role-Based Authentication: Secure signup and login with JWT and bcrypt hashing
- Freelancer Search System: Find freelancers based on skills, ratings, and availability
- Project Management: Post, edit, and manage projects with detailed specifications
- Real-Time Bidding: Receive and evaluate bids from qualified freelancers
- Messaging System: Communicate with freelancers in real-time
- Review & Rating: Rate and review freelancers after project completion
- Analytics Dashboard: Track project performance and spending
- Profile Management: Create and maintain a professional profile with portfolio
- Bid Management: Submit and track bids on available projects
- Project Management Tools: Track project progress and manage multiple projects
- Project Timeline: Set milestones and track progress with deadlines
- Secure Payments: Receive payments through a secure payment system
- Verification System: Get verified to increase trust and visibility
- Freelancer Verification: Approve/reject verification requests with document review
- Platform Analytics: Monitor platform growth, transactions, and user statistics
- Notification System: Manage and send email notifications to users
- React: UI library (built with Vite)
- Tailwind CSS: Styling and responsive design
- Socket.io-client: Real-time communication
- Chart.js: Data visualization for analytics
- Axios: API communication
- Node.js: JavaScript runtime
- Express: Web framework
- MongoDB Atlas: Cloud database
- Mongoose: MongoDB object modeling
- JWT: Authentication
- bcrypt: Password hashing
- Socket.io: Real-time bidding and messaging
- Nodemailer: Email notifications
- Password hashing with bcrypt
- JWT for secure authentication
- Document and message metadata hashing
- Role-based access control
- Input validation and sanitization
skillswap/
βββ client/ # Frontend React application
βββ server/ # Backend Node.js/Express API
β βββ controllers/ # API controllers
β βββ middleware/ # Express middleware
β βββ models/ # Mongoose models
β βββ routes/ # API routes
β βββ utils/ # Utility functions
β βββ uploads/ # Uploaded files
β βββ server.js # Entry point
βββ package.json # Root package.json
- Node.js (v14 or higher)
- npm or yarn
- MongoDB Atlas account
-
Navigate to the server directory
cd server -
Install dependencies
npm install -
Create a
.envfile in the server directory with the following:PORT=5000 MONGO_URI=your_mongodb_atlas_connection_string JWT_SECRET=your_jwt_secret # Email Configuration EMAIL_HOST=smtp.gmail.com EMAIL_PORT=587 EMAIL_SECURE=false EMAIL_USER=your-email@gmail.com EMAIL_PASSWORD=your-app-password EMAIL_FROM=your-email@gmail.com EMAIL_FROM_NAME=SkillSwap Team -
Start the server
npm start # or for development npm run dev
-
Navigate to the client directory
cd client -
Install dependencies
npm install -
Create a
.envfile in the client directory with the following:VITE_API_URL=http://localhost:5000/api -
Start the development server
npm run dev -
Open http://localhost:5173 in your browser
The SkillSwap API follows RESTful design principles and is organized into logical modules:
POST /api/auth/signup- Register a new user (client or freelancer)POST /api/auth/login- Authenticate a user and receive JWT tokenPOST /api/auth/verify- Verify email/phonePOST /api/auth/reset-password- Reset user password
GET /api/projects- Get all projects (with filters)POST /api/projects- Create a new projectGET /api/projects/:id- Get project detailsPUT /api/projects/:id- Update projectDELETE /api/projects/:id- Delete projectGET /api/projects/:id/bids- Get bids for a projectPOST /api/projects/:id/bids- Submit a bid
GET /api/freelancers- Get freelancers (with filters)GET /api/freelancers/:id- Get freelancer profilePUT /api/freelancers/:id- Update freelancer profilePOST /api/freelancers/verify- Submit verification documents
POST /api/notifications/admin/email- Send email notificationsGET /api/notifications/admin/templates- Get notification templatesPUT /api/notifications/admin/templates- Update notification templates
GET /api/messages- Get all conversationsGET /api/messages/:userId- Get messages with specific userPOST /api/messages- Send a message
SkillSwap is built with a modular architecture for better scalability and maintainability:
- API Modules: Separate routes and controllers for different features
- Component-Based Frontend: Reusable React components organized by function
- Service Layer: Abstracted API calls for cleaner component code
- Middleware: Reusable authentication and validation middleware
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.



