A community-driven platform connecting people to share and exchange skills locally
SkillSwap is a modern web application that enables community members to discover, share, and exchange skills with each other. Whether you want to learn photography, teach coding, or swap cooking lessons for guitar tutorials, SkillSwap makes it easy to connect with people in your area.
- Skill Discovery - Browse available skills with advanced filters and location-based search
- Location-Based Search - Find skill providers near you with distance calculations
- Profile Management - Create detailed profiles with skills offered and learning goals
- Exchange System - Send and manage skill exchange requests with other users
- Activity Dashboard - Track your exchanges, skills, and learning progress
- Geolocation Support - Automatic location detection with manual search fallback
- React - Modern UI library with hooks
- TypeScript - Type-safe development
- Vite - Lightning-fast build tool
- TailwindCSS v4 - Utility-first CSS framework
- shadcn/ui - High-quality UI components
- React Hook Form - Performant form validation
- Zod - Schema validation
- Supabase - PostgreSQL database with real-time subscriptions
- Row Level Security (RLS) - Database-level authorization
- PostGIS - Geospatial queries and distance calculations
- Supabase Auth - Secure authentication system
- Nominatim API - Location search and geocoding
- Browser Geolocation API - Device location detection
- Node.js 18+ and npm/yarn
- Supabase Account (free tier works)
- Git
git clone https://github.com/rajanarahul93/skillswap.git
cd skillswap
npm install
- Create a new project at supabase.com
- Run the SQL schema from
database/schema.sqlin your Supabase SQL Editor - Enable Row Level Security policies (provided in schema)
- Get your project URL and anon key from Settings > API
Create .env.local in the project root:
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
npm run dev
Visit http://localhost:5173 to see the app running.
- profiles - Extended user information
- skills - Master list of available skills
- user_skills - Skills users can teach
- skill_requests - Skills users want to learn
- exchanges - Skill exchange requests and status
- Foreign key relationships for data integrity
- PostGIS extension for location queries
- Timestamp tracking (created_at, updated_at)
- Boolean flags for active/inactive records
- Email/password authentication via Supabase Auth
- JWT-based session management
- Row Level Security (RLS) policies on all tables
- Profile creation via database triggers
- Secure API calls with Supabase client
- Add skills you can teach with proficiency levels
- Set your location for local connections
- Receive and manage exchange requests
- Track active and completed exchanges
- Browse available skills with filters
- Search by location and distance
- Send exchange requests with your offerings
- Manage your learning goals
- Geolocation with automatic detection
- Manual location search
- Bio and contact information
- Skill and request management
- Exchange history
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request