A full-stack peer-to-peer skill exchange platform that helps people discover skills, connect with compatible learners, and communicate in real time.
React Β· Node.js Β· Express.js Β· MongoDB Β· Socket.IO Β· JWT
Learning something new often means searching through courses, tutorials, and communities without knowing who can actually help.
At the same time, many people already have valuable skills they could teach.
SkillSwap connects both sides.
The platform is built around a simple idea:
Everyone has something to teach, and everyone has something to learn.
Users can create profiles, define the skills they are interested in, discover other users, build skill-based connections, and communicate through an integrated real-time messaging experience.
SkillSwap brings skill discovery, matching, and communication into one full-stack application.
The platform includes workflows for:
- creating and managing user accounts
- maintaining user profiles
- adding and exploring skills
- discovering people with relevant interests
- creating and managing matches
- exchanging messages
- real-time chat communication
- exploring learning-related content
- interacting with the PeerBot route
- managing authenticated application access
People often want to learn practical skills but face three common challenges:
A learner may know what they want to learn but not who can help them.
Finding someone with the right skill is useful only if users can actually connect and communicate.
Knowledge exchange does not always need to begin with a formal paid course.
Sometimes the right learning opportunity is another person.
SkillSwap explores a peer-learning model where users can move from:
Discover
β
Find Relevant Skills
β
Connect
β
Match
β
Chat
β
Learn & Share
SkillSwap includes account-based authentication for protected application workflows.
The backend uses:
- JSON Web Tokens
- bcrypt-based password handling
- authentication middleware
- protected routes
User
β
Sign Up / Login
β
Authentication
β
JWT
β
Protected Application Routes
Users can explore skills and discover people based on the learning and knowledge-sharing experience provided by the application.
The frontend includes a dedicated Discover experience, while the backend exposes skill and user-related routes.
SkillSwap models user connections through a dedicated matching layer.
Matches are handled separately from:
- user profiles
- skills
- messages
This keeps the backend responsibilities modular and makes the connection workflow easier to extend.
User A
|
| Skill / Learning Interest
v
Discovery
|
v
Match
|
v
User B
Once users connect, SkillSwap provides messaging functionality backed by Socket.IO.
The application contains:
- message data models
- messaging API routes
- real-time Socket.IO communication
- a dedicated Chat interface
- Socket.IO client integration in React
This allows the application to support interactive communication instead of operating only through static request-response pages.
React Client
|
| Socket.IO
v
Express / Node Server
|
v
Real-Time Conversation
The backend also includes a dedicated peerbot route as part of the platform's learning-oriented functionality.
This separates PeerBot behavior from the primary authentication, matching, skill, user, and messaging routes.
SkillSwap
|
+-------------+-------------+
| |
v v
React + Vite Node.js / Express
Frontend Backend
| |
| REST APIs |
+--------------------------> |
| |
| Socket.IO |
+<-------------------------->+
|
+------------+------------+
| |
v v
MongoDB JWT Auth
Mongoose Middleware
|
+---------------+---------------+
| | |
v v v
Users Skills Matches
|
v
Messages
The backend is organized into clearly separated application layers.
server/
βββ middleware/
β βββ authMiddleware.js
β
βββ models/
β βββ User.js
β βββ Skill.js
β βββ Match.js
β βββ Message.js
β
βββ routes/
β βββ auth.js
β βββ users.js
β βββ skills.js
β βββ matches.js
β βββ messages.js
β βββ peerbot.js
β
βββ utils/
β
βββ index.js
βββ package.json
βββ package-lock.json
This structure keeps authentication, persistence, domain logic, and API routing separated rather than placing the entire backend inside one large server file.
The frontend is built using React + Vite.
client/
βββ public/
β
βββ src/
β βββ api/
β βββ assets/
β βββ components/
β βββ context/
β βββ pages/
β β βββ Home.jsx
β β βββ Login.jsx
β β βββ Signup.jsx
β β βββ Dashboard.jsx
β β βββ Discover.jsx
β β βββ Chat.jsx
β β βββ Profile.jsx
β β βββ Courses.jsx
β β βββ Upgrade.jsx
β β
β βββ utils/
β βββ App.jsx
β βββ App.css
β βββ index.css
β βββ main.jsx
β
βββ package.json
βββ vite.config.js
| Layer | Technology |
|---|---|
| Frontend | React |
| Frontend Tooling | Vite |
| Routing | React Router |
| API Client | Axios |
| Backend | Node.js |
| Web Framework | Express.js |
| Database | MongoDB |
| ODM | Mongoose |
| Authentication | JWT |
| Password Security | bcryptjs |
| Real-Time Communication | Socket.IO |
| Environment Configuration | dotenv |
| Cross-Origin Support | CORS |
| Development Tooling | Nodemon, ESLint |
1. User creates an account or logs in
|
v
2. Backend validates the request
|
v
3. Password verification / account handling
|
v
4. JWT issued
|
v
5. Client stores authentication state
|
v
6. Protected requests include authentication
|
v
7. authMiddleware validates access
Authentication logic is kept separate through a dedicated middleware layer.
A typical SkillSwap user journey can be represented as:
Sign Up / Login
|
v
Dashboard
|
v
Discover Skills
|
v
Discover Users
|
v
Match
|
v
Chat
|
v
Exchange Knowledge
SkillSwap currently separates its primary application data into four models:
Represents platform users and their account/profile information.
Represents skills available within the SkillSwap ecosystem.
Represents connections between users.
Represents communication associated with user interactions.
Separating these entities makes the application easier to reason about and extend.
SkillSwap combines two communication styles.
Used for application operations involving:
- authentication
- users
- skills
- matches
- messages
- PeerBot functionality
Used for interactive real-time communication.
SkillSwap Client
/ \
/ \
REST Socket.IO
| |
v v
Application Data Live Messaging
\ /
\ /
Node.js
|
MongoDB
Make sure you have:
Node.js
npm
MongoDB
git clone https://github.com/agcodes0315/SkillSwap.git
cd SkillSwapcd server
npm installCreate a .env file inside the server directory.
Add the environment variables required by your local configuration, such as your MongoDB connection details and authentication secret.
Example:
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_secret_keyNever commit real credentials or secrets to GitHub.
Development mode:
npm run devOr:
npm startOpen another terminal:
cd client
npm installnpm run devVite will display the local frontend URL in your terminal.
SkillSwap/
βββ client/
β βββ public/
β βββ src/
β β βββ api/
β β βββ assets/
β β βββ components/
β β βββ context/
β β βββ pages/
β β βββ utils/
β βββ package.json
β βββ vite.config.js
β
βββ server/
β βββ middleware/
β βββ models/
β βββ routes/
β βββ utils/
β βββ index.js
β βββ package.json
β
βββ .gitignore
βββ package.json
βββ package-lock.json
SkillSwap brings together several full-stack software-engineering concepts:
- REST API development
- frontend/backend separation
- authentication and authorization flow
- password security
- MongoDB data modelling
- Mongoose schemas
- real-time communication
- Socket.IO integration
- React state and context management
- application routing
- reusable frontend components
- modular Express routes
- authentication middleware
- asynchronous API communication
- environment-based configuration
- full-stack application architecture
Possible extensions for SkillSwap include:
- richer skill recommendation logic
- availability and session scheduling
- user reputation and reviews
- notification support
- improved search and filtering
- skill endorsements
- learning-session history
- richer PeerBot functionality
- moderation and reporting
- profile verification
- deployment automation
- backend test coverage
- rate limiting
- password-reset workflows
- OAuth authentication
- accessibility improvements
- mobile-responsive refinements
Software Engineering Β· Full-Stack Development Β· AI/ML Β· Cybersecurity
|
|
|
|
SkillSwap turns individual knowledge into a peer-powered learning network.
β If you find the project interesting, consider starring the repository.