SkillSwap is a comprehensive web application designed to facilitate the exchange of skills between users. The platform provides a robust environment for users to connect, communicate in real time, manage swap requests, and handle virtual wallet transactions.
- Project Overview
- System Architecture Diagram
- Application Workflow Diagram
- Technology Stack
- Prerequisites
- Installation and Setup
- Environment Configuration
- Development and Deployment
- License
SkillSwap acts as a bridge for knowledge exchange. Users can offer their expertise in specific domains while simultaneously learning new skills from others. The platform features secure authentication, real time messaging, an integrated wallet system, and a dedicated admin dashboard for platform management.
The following diagram illustrates the high level architecture of the SkillSwap platform, detailing the interactions between the frontend, backend, database, and external services.
graph TD
ClientBrowser[Client Browser] ==> ReactFrontend(React Frontend)
ReactFrontend ==> APIGateway{API Gateway}
APIGateway ==> AuthService[Authentication Service]
APIGateway ==> UserManagement[User Management]
APIGateway ==> SwapLogic[Skill Swap Logic]
APIGateway ==> WalletService[Wallet Service]
APIGateway ==> ChatSystem[Chat and Notifications]
ChatSystem ==> SocketServer((Socket.io Server))
SocketServer ==> ReactFrontend
AuthService ==> MongoDatabase[(MongoDB Database)]
UserManagement ==> MongoDatabase
SwapLogic ==> MongoDatabase
WalletService ==> MongoDatabase
ChatSystem ==> MongoDatabase
SwapLogic ==> CloudinaryStorage[Cloudinary Storage]
UserManagement ==> EmailService[Email Notification Service]
The primary user journey follows a structured sequence:
graph TD
Step1[User Registration] ==> Step2[Authentication]
Step2 ==> Step3[Profile Configuration]
Step3 ==> Step4[Skill Discovery]
Step4 ==> Step5[Initiate Swap Request]
Step5 ==> Step6[Real Time Negotiation]
Step6 ==> Step7[Active Swap Session]
Step7 ==> Step8[Completion and Transaction]
Step8 ==> Step9[User Review and Rating]
- User Registration and Authentication: Users sign up and securely log in using JWT based authentication.
- Profile Configuration: Users set up their profiles, highlighting skills they offer and skills they wish to learn.
- Skill Discovery: Users browse or search for potential swap partners based on skill compatibility.
- Swap Initiation: A swap request is sent. Once accepted, a dedicated communication channel opens.
- Real Time Interaction: Users negotiate and collaborate via the built in WebSocket chat interface.
- Transaction and Review: Upon completion, wallet balances are updated if applicable, and users can leave reviews.
- React 19
- Vite Build Tool
- TailwindCSS for styling
- React Bootstrap
- Socket.io Client for real time features
- Node.js and Express framework
- MongoDB with Mongoose ODM
- JSON Web Tokens for secure sessions
- Socket.io for WebSocket communication
- Cloudinary for media asset management
Ensure the following tools are installed on the local system prior to setup:
- Node.js version 14 or higher
- MongoDB server
- Git version control system
-
Clone the Repository Download the source code to the local machine.
-
Backend Initialization Navigate to the backend directory and install required dependencies.
cd backend npm install -
Frontend Initialization Open a new terminal, navigate to the frontend directory, and install dependencies.
cd frontend npm install
Both frontend and backend require specific environment variables to function correctly.
Create an environment configuration file within the backend directory:
- PORT
- MONGODB_URI
- JWT_SECRET
- FRONTEND_URL
- CLOUDINARY configuration keys
- EMAIL service configuration keys
Create an environment configuration file within the frontend directory if necessary, typically configuring the backend API URL.
To run the application locally for development:
-
Start Backend Server
cd backend npm run dev -
Start Frontend Server
cd frontend npm run dev
The frontend will typically be accessible at the Vite default port, and the backend will run on port 5000.
This project is distributed under the MIT License.