A modern web application that connects people who want to learn new skills with those who can teach them. Built with React, TypeScript, and Supabase.
- User Authentication: Secure sign-up/sign-in with email/password
- OAuth Authentication: Sign in with Google and GitHub
- Password Reset: Secure password recovery via email
- Skill Management: Browse, search, and manage skills
- Swap Requests: Request skill exchanges with other users
- User Profiles: Comprehensive user profiles and ratings
- Real-time Updates: Live notifications and updates
- Responsive Design: Works on all devices
- Frontend: React 18, TypeScript, Vite
- UI Components: shadcn/ui, Tailwind CSS
- Backend: Node.js, Express
- Database: Supabase (PostgreSQL)
- Authentication: Supabase Auth with OAuth support
- Real-time: Supabase Realtime
- Styling: Tailwind CSS with custom design system
To enable Google and GitHub authentication, you need to configure OAuth providers in your Supabase project:
- Go to Google Cloud Console
- Create a new project or select existing one
- Enable Google+ API
- Go to "Credentials" → "Create Credentials" → "OAuth 2.0 Client IDs"
- Set Application Type to "Web application"
- Add authorized redirect URIs:
https://[YOUR_PROJECT_REF].supabase.co/auth/v1/callbackhttp://localhost:8080/(for development)
- Copy Client ID and Client Secret
- In Supabase Dashboard → Authentication → Providers → Google:
- Enable Google provider
- Paste Client ID and Client Secret
- Save
- Go to GitHub Developer Settings
- Click "New OAuth App"
- Fill in application details:
- Application name: "SkillSwap"
- Homepage URL: Your app URL
- Authorization callback URL:
https://[YOUR_PROJECT_REF].supabase.co/auth/v1/callback
- Copy Client ID and Client Secret
- In Supabase Dashboard → Authentication → Providers → GitHub:
- Enable GitHub provider
- Paste Client ID and Client Secret
- Save
- Node.js 18+ and npm
- Supabase account and project
- Google Cloud Console account (for Google OAuth)
- GitHub account (for GitHub OAuth)
-
Clone the repository
git clone <repository-url> cd SkillSwap-main
-
Install dependencies
npm install cd backend && npm install cd ..
-
Environment Setup Create a
.envfile in the root directory:VITE_SUPABASE_URL=your_supabase_url VITE_SUPABASE_ANON_KEY=your_supabase_anon_key PORT=3001 JWT_SECRET=your_jwt_secret
-
Configure OAuth Providers Follow the OAuth setup instructions above in your Supabase dashboard.
-
Run the application
# Terminal 1: Frontend npm run dev # Terminal 2: Backend cd backend && npm run dev
-
Open your browser Navigate to
http://localhost:8080
SkillSwap-main/
├── src/ # Frontend source code
│ ├── components/ # Reusable UI components
│ ├── pages/ # Page components
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utility libraries
│ └── main.tsx # Application entry point
├── backend/ # Backend API server
├── public/ # Static assets
└── package.json # Dependencies and scripts
- User enters email and password
- Supabase validates credentials
- User is signed in and redirected to home
- User clicks Google/GitHub button
- Redirected to OAuth provider
- User authorizes the application
- Redirected back with authentication tokens
- Supabase creates/updates user account
- User is signed in and redirected to home
- User clicks "Forgot password"
- Enters email address
- Reset email is sent via Supabase
- User clicks reset link in email
- Redirected to reset password form
- New password is set and user is signed in
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License.
For support and questions, please open an issue in the repository or contact the development team.