A dynamic web platform designed to connect students and mentors, facilitate skill exchange, and foster project collaboration.
Skill-Bridge provides a comprehensive ecosystem for learning, teaching, and building together. Whether you are a student eager to learn or a mentor ready to guide, Skill-Bridge is your gateway to a world of opportunities.
- 👤 Dual User Roles: Separate registration and onboarding flows for Students and Mentors.
- 🔐 Secure Authentication: Robust authentication system using JSON Web Tokens (JWT).
- 🧑💻 Rich User Profiles: Differentiated profiles for students and mentors to showcase skills, experience, projects, and social links.
- 🎓 Skill Exchange: A marketplace where mentors can list skills they teach, and students can enroll to learn.
- 🤝 Project Collaboration: A dedicated space for users to post project ideas, form teams, and collaborate.
- 👨🏫 Mentorship Program: A streamlined system for students to find and send mentorship requests to experienced mentors.
- 💬 Real-time Communication: Integrated chat functionality for seamless interaction (feature to be implemented).
- 📈 Personalized Dashboards: Intuitive dashboards for users to track their learning progress, mentorship requests, and project activities.
| Category | Technology |
|---|---|
| Backend | Node.js, Express.js, MongoDB, Mongoose, JWT, Cloudinary, Zod |
| Frontend | React, Vite, React Router, Zustand, TanStack Query, Tailwind CSS, Axios, React Hook Form |
| DevOps | ESLint, Vite |
Follow these instructions to get a copy of the project up and running on your local machine.
-
Clone the repository:
git clone https://github.com/your-username/Skill-Bridge.git cd Skill-Bridge -
Backend Setup:
cd Backend npm install- Navigate to the
srcdirectory and create a.envfile by copyingexample.env. - Update the
.envfile with your credentials:PORT=8000 ORIGIN=http://localhost:5173 MONGO_URL=your_mongodb_connection_string JWT_SECRET=your_jwt_secret CLOUDINARY_CLOUD_NAME=your_cloudinary_name CLOUDINARY_API_KEY=your_cloudinary_api_key CLOUDINARY_API_SECRET=your_cloudinary_api_secret
- Navigate to the
-
Frontend Setup:
cd ../Frontend npm install- In the
Frontendroot, create a.envfile by copyingExample.env. - Update it with your backend API URL:
VITE_API_URL=http://localhost:8000
- In the
-
Start the Backend Server:
- From the
Backenddirectory:
npm run nd
The API server will be running at
http://localhost:8000. - From the
-
Start the Frontend Client:
- From the
Frontenddirectory:
npm run dev
The application will be available at
http://localhost:5173. - From the
The backend provides the following RESTful API endpoints. All protected routes require a Bearer token in the Authorization header.
| Method | Endpoint | Description | Protected |
|---|---|---|---|
POST |
/api/Authentication/signup |
Register a new user (student or mentor) | No |
POST |
/api/Authentication/signin |
Log in a user | No |
GET |
/api/User/Profile |
Get the profile of the logged-in user | Yes |
PUT |
/api/User/Profile |
Update the user's profile | Yes |
GET |
/api/Skill-Exchange |
Get all available skills | Yes |
POST |
/api/Skill-Exchange |
Create a new skill (mentors only) | Yes |
GET |
/api/Collaboration |
Get all available projects | Yes |
POST |
/api/Collaboration |
Create a new project | Yes |
GET |
/api/Mentor-Match |
Get all mentors | Yes |
POST |
/api/Mentor-Match/request |
Send a mentorship request to a mentor | Yes |
The project follows a monorepo structure with two main packages: Frontend and Backend.
Skill-Bridge/
├── 📁 Backend/
│ ├── 📁 src/
│ │ ├── 📁 config/ # DB, Cloudinary configuration
│ │ ├── 📁 controllers/ # Business logic for routes
│ │ ├── 📁 middleware/ # Express middleware (auth, error handling)
│ │ ├── 📁 models/ # Mongoose database schemas
│ │ └── 📁 routes/ # API route definitions
│ └── package.json
└── 📁 Frontend/
├── 📁 src/
│ ├── 📁 api/ # Axios instances and React Query hooks
│ ├── 📁 components/ # Reusable UI components
│ ├── 📁 pages/ # Application pages
│ ├── 📁 store/ # Zustand global state stores
│ └── App.jsx # Main component with routing
└── package.json
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'feat: Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.