Skip to content

rajanarahul93/SkillSwap

Repository files navigation

SkillSwap

A community-driven platform connecting people to share and exchange skills locally

TypeScript React Vite Supabase TailwindCSS

Overview

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.

Key Features

  • 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

Tech Stack

Frontend

  • 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

Backend

  • Supabase - PostgreSQL database with real-time subscriptions
  • Row Level Security (RLS) - Database-level authorization
  • PostGIS - Geospatial queries and distance calculations

APIs & Services

  • Supabase Auth - Secure authentication system
  • Nominatim API - Location search and geocoding
  • Browser Geolocation API - Device location detection

Installation & Setup

Prerequisites

  • Node.js 18+ and npm/yarn
  • Supabase Account (free tier works)
  • Git

1. Clone the Repository

git clone https://github.com/rajanarahul93/skillswap.git
cd skillswap

2. Install Dependencies

npm install

3. Set Up Supabase

  1. Create a new project at supabase.com
  2. Run the SQL schema from database/schema.sql in your Supabase SQL Editor
  3. Enable Row Level Security policies (provided in schema)
  4. Get your project URL and anon key from Settings > API

4. Configure Environment Variables

Create .env.local in the project root:

VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key

5. Run Development Server

npm run dev

Visit http://localhost:5173 to see the app running.

Database Schema

Core Tables

  • 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

Key Features

  • Foreign key relationships for data integrity
  • PostGIS extension for location queries
  • Timestamp tracking (created_at, updated_at)
  • Boolean flags for active/inactive records

Authentication & Security

  • 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

Features Guide

For Skill Providers

  1. Add skills you can teach with proficiency levels
  2. Set your location for local connections
  3. Receive and manage exchange requests
  4. Track active and completed exchanges

For Skill Seekers

  1. Browse available skills with filters
  2. Search by location and distance
  3. Send exchange requests with your offerings
  4. Manage your learning goals

Profile Features

  • Geolocation with automatic detection
  • Manual location search
  • Bio and contact information
  • Skill and request management
  • Exchange history

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

About

Connect locally, learn mutually - a modern platform for community-driven skill exchange

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages