Skip to content

Skillpact is a unique credit-based skill exchange platform designed to connect neighbors and foster community collaboration.

License

Notifications You must be signed in to change notification settings

abhi-yo/skillpact

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

57 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SkillPact

Trade skills, build community. A platform that connects people through expertise⚑

SkillPact Banner

SkillPact is a web application that facilitates peer-to-peer skill and service exchanges within communities. Built with modern web technologies, it enables users to offer their expertise and request services from others using an internal credit system for value exchange.

Designed for local communities, educational institutions, and professional networks seeking efficient resource sharing and skill development opportunities.


GitHub stars GitHub forks License Sponsored by Neon


This project is proudly sponsored by Neon. Thank you for supporting open source and powering our database infrastructure!

Powered by Neon

πŸš€ Live Demo

Visit SkillPact

✨ Features

  • Credit-Based Exchange System - Internal economy for tracking and managing service transactions
  • User Profile Management - Comprehensive profiles with skills, services, and reputation tracking
  • Geolocation Services - Location-based service discovery and filtering
  • Real-time Communication - Built-in messaging system for coordination and negotiation
  • Reputation & Rating System - User feedback and trust building mechanisms
  • Exchange Lifecycle Management - Complete workflow from proposal to completion
  • Notification System - Real-time updates for exchange activities and messages
  • Responsive Web Design - Cross-platform compatibility with mobile-first approach
  • Authentication & Authorization - Secure user management with OAuth integration
  • Service Categorization - Organized taxonomy for easy service discovery

🎯 Application Workflow

  1. User Registration & Profile Setup - Account creation with skill and service listing
  2. Service Discovery - Browse and filter available services by category, location, and user ratings
  3. Exchange Initiation - Submit requests with proposed terms and credit allocation
  4. Negotiation & Scheduling - Real-time communication for finalizing exchange details
  5. Service Delivery & Completion - Execute exchanges with status tracking and updates
  6. Rating & Feedback - Post-completion evaluation system for reputation building

πŸ› οΈ Tech Stack

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • pnpm (recommended) or npm/yarn
  • PostgreSQL database (we recommend Neon)

Installation

  1. Clone the repository:
git clone https://github.com/abhi-yo/skillpact.git
cd skillpact
  1. Install dependencies:
pnpm install
# or
npm install
  1. Set up environment variables:

Create a .env.local file in the root directory:

# Database
DATABASE_URL="postgresql://username:password@hostname:5432/skillpact"
SHADOW_DATABASE_URL="postgresql://username:password@hostname:5432/skillpact_shadow"

# NextAuth
NEXTAUTH_SECRET="your-secret-key"
NEXTAUTH_URL="http://localhost:3000"

# OAuth Providers (optional)
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"
  1. Set up the database:
pnpm prisma migrate dev
pnpm prisma db seed
  1. Start the development server:
pnpm dev
  1. Open your browser and visit: http://localhost:3000

Build for Production

pnpm build
pnpm start

πŸ“ Project Structure

skillpact/
β”œβ”€β”€ app/                          # Next.js 14 App Router
β”‚   β”œβ”€β”€ (auth)/                   # Authentication pages
β”‚   β”œβ”€β”€ api/                      # API routes and tRPC
β”‚   β”œβ”€β”€ dashboard/                # User dashboard
β”‚   β”œβ”€β”€ exchanges/                # Exchange management
β”‚   β”œβ”€β”€ services/                 # Service listings
β”‚   β”œβ”€β”€ messages/                 # Messaging system
β”‚   └── profile/                  # User profiles
β”œβ”€β”€ components/                   # Reusable UI components
β”‚   β”œβ”€β”€ ui/                       # Base UI components (Radix + custom)
β”‚   └── *.tsx                     # Feature-specific components
β”œβ”€β”€ lib/                          # Utility libraries
β”‚   β”œβ”€β”€ auth.ts                   # NextAuth configuration
β”‚   β”œβ”€β”€ prisma.ts                 # Prisma client setup
β”‚   └── trpc.ts                   # tRPC configuration
β”œβ”€β”€ prisma/                       # Database schema and migrations
β”‚   β”œβ”€β”€ schema.prisma             # Prisma schema
β”‚   └── migrations/               # Database migrations
β”œβ”€β”€ server/                       # Backend logic
β”‚   β”œβ”€β”€ routers/                  # tRPC routers
β”‚   └── trpc.ts                   # tRPC server setup
└── types/                        # TypeScript type definitions

πŸ”§ Architecture & Core Systems

Exchange Management System

  • Credit-based transaction engine with balance tracking and validation
  • Multi-stage exchange workflow (proposed β†’ negotiated β†’ scheduled β†’ completed)
  • Automated status updates and transaction history

User Management & Social Features

  • Comprehensive user profiling with skill taxonomy and service offerings
  • Location-based service matching and proximity algorithms
  • Reputation scoring system with weighted feedback mechanisms

Communication Infrastructure

  • Real-time messaging with WebSocket implementation
  • Push notification system for exchange updates and messages
  • In-app coordination tools for service delivery logistics

Data & Analytics

  • PostgreSQL database with optimized queries for scalability
  • User activity tracking and engagement metrics
  • Service performance analytics and recommendation algorithms

🀝 Contributing

We welcome contributions to make SkillPact even better! Here's how you can help:

Adding New Features

  1. Fork the repository
  2. Create a feature branch:
git checkout -b feature/amazing-feature
  1. Make your changes and commit:
git commit -m "feat: add amazing feature"
  1. Push to your branch and create a Pull Request

Areas for Contribution

  • UI/UX Improvements - Enhance the user interface and experience
  • New Features - Add functionality like group exchanges, skill workshops
  • Internationalization - Add support for multiple languages
  • Mobile App - React Native or Flutter implementation
  • Testing - Add comprehensive test coverage
  • Documentation - Improve docs and add tutorials

Development Guidelines

  • Follow the existing code style and conventions
  • Write meaningful commit messages
  • Add tests for new features
  • Update documentation as needed
  • Ensure responsive design across devices

πŸ“Š Database Architecture

The application uses a relational database design with the following core entities:

  • Users - Authentication, profile data, skills inventory, location, and credit balance
  • Services - Service offerings with metadata, categorization, and availability
  • Exchanges - Transaction records with status tracking, terms, and completion data
  • Messages - Communication history with threading and real-time delivery
  • Ratings - User feedback system with weighted scoring for reputation calculation
  • Notifications - System alerts, user notifications, and delivery tracking

πŸš€ Deployment

Deploy on Vercel (Recommended)

  1. Connect your GitHub repository to Vercel
  2. Set up environment variables in Vercel dashboard
  3. Deploy automatically on every push to main

Database Setup with Neon

  1. Create a Neon account
  2. Create a new project and database
  3. Copy the connection string to your environment variables
  4. Run migrations: pnpm prisma migrate deploy

πŸ“ Environment Variables

Variable Description Required
DATABASE_URL PostgreSQL connection string βœ…
SHADOW_DATABASE_URL Shadow database for migrations βœ…
NEXTAUTH_SECRET NextAuth secret key βœ…
NEXTAUTH_URL Application URL βœ…
GOOGLE_CLIENT_ID Google OAuth client ID πŸ”§
GOOGLE_CLIENT_SECRET Google OAuth client secret πŸ”§

πŸ™ Sponsored by Neon

This project is proudly powered by Neon β€” the serverless PostgreSQL platform that makes database management effortless.

Neon provides:

  • Serverless PostgreSQL with instant branching
  • Automatic scaling based on your app's needs
  • Built-in connection pooling for optimal performance
  • Database branching for safe development and testing

Special thanks to Neon for sponsoring this open source project and supporting the developer community!

Powered by Neon

πŸ“„ License

This project is open source and available under the MIT License.

πŸ—οΈ Built By


⭐ Show Your Support

If you find SkillPact helpful, please consider:

  • ⭐ Starring this repository on GitHub
  • πŸ› Reporting bugs and suggesting features
  • 🀝 Contributing to the codebase
  • πŸ“’ Sharing with your community

Together, let's advance community-driven resource sharing through technology!


Join SkillPact and experience collaborative learning and service delivery.

About

Skillpact is a unique credit-based skill exchange platform designed to connect neighbors and foster community collaboration.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published