Skip to content

CodeWithEugene/SkillsSync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

80 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SkillSync Logo

AI-Powered Skill Extraction & Tracking Platform

Next.js TypeScript Tailwind CSS Supabase

Live Demo License

Transform your documents into valuable skills with AI-powered analysis.
Track your professional development effortlessly.

Features β€’ Tech Stack β€’ Getting Started β€’ Project Structure β€’ Contributing


✨ Features

Upload
Upload coursework, projects, certifications, and any educational documents
AI
Automatic skill extraction using advanced AI models
Track
View skills organized by category with confidence scores
Goals
Set and track your career and learning goals
Secure
Your data is encrypted and accessible only by you
Theme
Beautiful UI with system theme support

πŸ›  Tech Stack

Frontend

Technology Description
Next.js React framework with App Router
React UI library
TypeScript Type-safe JavaScript
Tailwind CSS Utility-first CSS framework
Radix UI Accessible UI primitives

Backend & Database

Technology Description
Supabase PostgreSQL database & authentication
OpenAI AI-powered skill extraction

Deployment & Analytics

Technology Description
Vercel Deployment platform
Vercel Analytics Usage analytics

πŸš€ Getting Started

Prerequisites

  • Node.js 18.17 or later
  • pnpm (recommended) or npm
  • Supabase account
  • OpenAI API key (or compatible API like DeepSeek)

Installation

  1. Clone the repository

    git clone https://github.com/yourusername/skillsync.git
    cd skillsync
  2. Install dependencies

    pnpm install
  3. Set up environment variables

    Create a .env file in the root directory:

    # Supabase
    NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
    NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
    
    # OpenAI (or compatible API)
    OPENAI_API_KEY=your_openai_api_key
    OPENAI_BASE_URL=https://api.openai.com/v1  # or custom endpoint
    
    # App URL
    NEXT_PUBLIC_APP_URL=http://localhost:3000
  4. Set up the database

    Run the following SQL in your Supabase SQL editor:

    -- Documents table
    CREATE TABLE documents (
      id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
      user_id UUID NOT NULL REFERENCES auth.users(id),
      filename TEXT NOT NULL,
      file_url TEXT NOT NULL,
      status TEXT DEFAULT 'PROCESSING',
      upload_date TIMESTAMP WITH TIME ZONE DEFAULT NOW()
    );
    
    -- Extracted skills table
    CREATE TABLE extracted_skills (
      id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
      user_id UUID NOT NULL REFERENCES auth.users(id),
      document_id UUID REFERENCES documents(id),
      skill_name TEXT NOT NULL,
      category TEXT,
      confidence_score DECIMAL(3,2),
      evidence_text TEXT,
      created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
    );
    
    -- User goals table
    CREATE TABLE user_goals (
      id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
      user_id UUID NOT NULL REFERENCES auth.users(id) UNIQUE,
      current_study TEXT,
      want_to_study TEXT,
      study_duration TEXT,
      career_goal TEXT,
      skill_goal TEXT,
      onboarding_completed BOOLEAN DEFAULT FALSE,
      created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
      updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
    );

    Optional – Pay-per-upload (Paystack): Add PAYSTACK_SECRET_KEY and PAYSTACK_PUBLIC_KEY (live keys from Paystack Dashboard) to .env, run migration scripts/009_upload_payments.sql (via pnpm run db:migrate or Supabase SQL Editor). Set your Paystack webhook URL to https://your-domain.com/api/payments/webhook for charge.success events.

    Optional – Skills on Base (wallet + on-chain attestations): Run migrations scripts/007_wallet_address.sql and scripts/008_onchain_attestations.sql either by:

    • Option A: Adding your Supabase Postgres connection string to .env as DATABASE_URL (Dashboard β†’ Project Settings β†’ Database β†’ Connection string URI), then running:
      pnpm run db:migrate
    • Option B: Opening the Supabase SQL Editor and running the contents of each file in order. For pay-per-upload, also run scripts/009_upload_payments.sql.
  5. Run the development server

    pnpm dev
  6. Open your browser

    Navigate to http://localhost:3000


πŸ“ Project Structure

skillsync/
β”œβ”€β”€ app/                      # Next.js App Router
β”‚   β”œβ”€β”€ (dashboard)/          # Protected dashboard routes
β”‚   β”‚   β”œβ”€β”€ dashboard/        # Main dashboard
β”‚   β”‚   β”œβ”€β”€ documents/        # Document management
β”‚   β”‚   β”œβ”€β”€ skills/           # Skills overview
β”‚   β”‚   β”œβ”€β”€ goals/            # User goals
β”‚   β”‚   └── profile/          # User profile
β”‚   β”œβ”€β”€ api/                  # API routes
β”‚   β”‚   β”œβ”€β”€ auth/             # Authentication callbacks
β”‚   β”‚   β”œβ”€β”€ documents/        # Document CRUD & analysis
β”‚   β”‚   β”œβ”€β”€ skills/           # Skills API
β”‚   β”‚   └── onboarding/       # Onboarding API
β”‚   β”œβ”€β”€ auth/                 # Auth pages (login/register)
β”‚   β”œβ”€β”€ onboarding/           # User onboarding flow
β”‚   └── page.tsx              # Landing page
β”œβ”€β”€ components/               # Reusable components
β”‚   β”œβ”€β”€ auth/                 # Auth components
β”‚   β”œβ”€β”€ dashboard/            # Dashboard components
β”‚   β”œβ”€β”€ documents/            # Document components
β”‚   β”œβ”€β”€ skills/               # Skills components
β”‚   └── ui/                   # UI primitives (shadcn/ui)
β”œβ”€β”€ lib/                      # Utility functions
β”‚   β”œβ”€β”€ db.ts                 # Database operations
β”‚   β”œβ”€β”€ openai.ts             # OpenAI client
β”‚   β”œβ”€β”€ supabase/             # Supabase clients
β”‚   └── utils.ts              # Helper functions
└── public/                   # Static assets

πŸ”‘ Key Features Explained

πŸ“„ Document Analysis Pipeline

  1. Upload - Users upload documents (text files, coursework, projects)
  2. Processing - Documents are sent to AI for analysis
  3. Extraction - AI extracts skills with categories and confidence scores
  4. Storage - Skills are stored and linked to user profiles
  5. Display - Skills appear in the dashboard with evidence text

🎯 Goal Tracking

Users can set and track:

  • Career Goals - Ultimate career aspirations
  • Current Studies - What they're currently learning
  • Skill Goals - Specific skills they want to develop
  • Top Priorities - Current focus areas

πŸ” Authentication

  • Email/Password - Traditional authentication
  • Google OAuth - One-click sign-in with Google
  • Session Management - Secure, persistent sessions via Supabase

πŸ“± Screenshots

Landing Page
Modern, responsive landing page
Dashboard
Skill tracking overview
Skills View
Categorized skill display
Goals
Career goal tracking

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

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

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments


Made with ❀️ by CodeWithEugene

Portfolio

About

SkillSync uses AI to automatically extract and track skills from your coursework, projects, and documents. Build your professional profile effortlessly.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors