SkillSwap is a peer-to-peer skill exchange platform designed for students. It facilitates the sharing of knowledge without monetary transactions, allowing users to teach a skill they possess in exchange for learning something new.
- User Authentication: Secure sign-up and login with JWT and Google OAuth integration.
- Skill Management: Users can list skills they can teach and skills they want to learn.
- Smart Matching: The system suggests potential barter partners based on complementary skills.
- Real-time Communication: Integrated chat and video conferencing for seamless sessions.
- Session Scheduling: Organize and manage learning sessions efficiently.
- Reputation System: Rate and review partners to build trust within the community.
- Dashboard: A personalized hub for managing sessions, requests, and progress.
- Modern UI: A clean, responsive interface built with React and Tailwind CSS v4.
- Framework: React with Vite
- Styling: Tailwind CSS v4
- UI Components: Radix UI, Lucide React
- State Management: React Context API
- HTTP Client: Axios
- Runtime: Node.js
- Framework: Express.js
- Database: PostgreSQL with Sequelize ORM
- Authentication: Passport.js (Google Strategy), JWT
- Video: Jitsi Meet Integration
To get a local copy up and running, follow these simple steps.
- Node.js (v18+ recommended)
- PostgreSQL
- npm or pnpm
git clone https://github.com/yourusername/skillswap.git
cd skillswapNavigate to the backend directory and install dependencies:
cd backend
npm install
# or
pnpm installCreate a .env file in the backend directory based on the .env.example (or use the variables below):
PORT=8000
DATABASE_URL=postgres://user:password@localhost:5432/skillswap_db
JWT_SECRET=your_jwt_secret_key
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
CLIENT_URL=http://localhost:5173Start the backend server:
npm run devThe server will start at http://localhost:8000.
Open a new terminal, navigate to the client directory, and install dependencies:
cd client
npm install
# or
pnpm installCreate a .env file in the client directory:
VITE_API_BASE_URL=http://localhost:8000/apiStart the development server:
npm run devThe application will be available at http://localhost:5173.
barter-system/
├── backend/ # Express.js API Gateway & Logic
│ ├── controllers/ # Request handlers (User, Auth, Session, Skill)
│ ├── db/ # Database connection config
│ ├── middlewares/ # Custom middlewares (Auth, Error handling)
│ ├── models/ # Sequelize models (User, Skill, Session, Review)
│ ├── routes/ # API route definitions
│ ├── services/ # Business logic services
│ ├── utils/ # Utility functions (ApiError, ApiResponse)
│ ├── index.js # Server entry point
│ └── passport.js # Passport.js strategy configuration
├── client/ # React Frontend Application
│ ├── src/
│ │ ├── app/
│ │ │ ├── components/ # Reusable UI components (Navbar, Footer, Shadcn UI)
│ │ │ ├── context/ # React Context providers (AuthContext)
│ │ │ ├── pages/ # Application views/pages
│ │ │ └── services/ # API integration services (Axios)
│ │ ├── assets/ # Static assets (Images, SVGs)
│ │ ├── styles/ # Global styles & Tailwind layers
│ │ └── main.tsx # React entry point
│ ├── index.html # HTML template
│ ├── postcss.config.mjs # PostCSS configuration
│ └── vite.config.ts # Vite bundler configuration
└── README.md
Contributions 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 '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.