A peer-to-peer skill exchange platform where users can teach and learn skills from each other through real-time video calls, chat, and collaborative tools.
- User Authentication - Secure registration and login with JWT
- Skill Matching - Algorithm-based matching with compatibility scores
- Real-time Chat - Instant messaging with typing indicators
- Video Calling - WebRTC-based peer-to-peer video calls
- Collaborative Whiteboard - Real-time drawing and annotation
- Push Notifications - Instant alerts for messages and match events
- User Profiles - Rich profiles with avatars, ratings, and reviews
- Advanced Search - Filter by location, availability, and rating
Frontend:
- React 18.2.0 with Vite
- Socket.io Client for real-time communication
- Simple-Peer & PeerJS for WebRTC
- Fabric.js for whiteboard
- Framer Motion for animations
- Axios for HTTP requests
Backend:
- Node.js with Express 4.21.2
- MongoDB with Mongoose ODM
- Socket.io for WebSocket connections
- JWT for authentication
- Bcrypt for password hashing
- Node.js v14+
- MongoDB v4.4+
- npm or yarn
- Clone the repository
git clone https://github.com/NotYash1066/Skill-Swap.git
cd Skill-Swap- Install server dependencies
cd server
npm install- Install client dependencies
cd ../client
npm install- Configure environment variables
Create server/.env:
MONGO_URI=mongodb://localhost:27017/SkillSwapDB
JWT_SECRET=your_jwt_secret_key
PORT=5000- Start MongoDB
mongod- Run the application
Terminal 1 - Server:
cd server
npm run devTerminal 2 - Client:
cd client
npm run dev- Access the application
- Frontend: http://localhost:5173
- Backend: http://localhost:5000
- Build and start the containers
docker-compose up --build- Access the application
- Frontend: http://localhost:5173
- Backend: http://localhost:5000
For detailed information about the project, please refer to the following documents located in the docs/ directory:
- Documentation Index - Start Here for a complete guide to all documentation.
- Report Summary - Executive summary and quick overview.
- Complete Project Report - Comprehensive details on requirements, design, and implementation.
- API Reference - Detailed API endpoints and usage.
- Architecture Diagrams - System architecture and design diagrams.
- Deployment Guide - Instructions for deploying the application.
- Register - Create an account with username, email, and password
- Add Skills - Specify skills you offer and skills you want to learn
- Find Matches - Browse potential matches with compatibility scores
- Send Requests - Connect with users by sending match requests
- Chat - Message your connections in real-time
- Video Call - Start face-to-face skill exchange sessions
- Collaborate - Use whiteboard for visual demonstrations
- Review - Rate and review your skill exchange partners
POST /api/auth/register- Register new userPOST /api/auth/login- Login userGET /api/auth/me- Get current userPUT /api/auth/profile- Update profilePUT /api/auth/skills- Update skills
GET /api/matches/potential- Get potential matchesPOST /api/matches/request- Send match requestGET /api/matches/received- Get received requestsGET /api/matches/sent- Get sent requestsPUT /api/matches/:id/respond- Accept/reject request
GET /api/chat/rooms- Get chat roomsGET /api/chat/rooms/:id/messages- Get messages
GET /api/notifications- Get notificationsPUT /api/notifications/:id/read- Mark as read
POST /api/reviews- Create reviewGET /api/reviews/user/:userId- Get user reviews
Skill-Swap/
├── client/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── pages/ # Page components
│ │ ├── contexts/ # React contexts
│ │ ├── hooks/ # Custom hooks
│ │ ├── services/ # API services
│ │ └── styles/ # CSS files
│ └── package.json
├── server/ # Express backend
│ ├── models/ # Mongoose models
│ ├── routes/ # API routes
│ ├── middleware/ # Custom middleware
│ ├── socketHandlers/ # Socket.io handlers
│ ├── utils/ # Utility functions
│ └── server.js
├── docs/ # Project documentation and reports
└── README.md
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
ISC
- Yash Karthiya - @NotYash1066
- WebRTC for peer-to-peer communication
- Socket.io for real-time features
- MongoDB for flexible data storage
- React community for excellent tools and libraries