Skip to content

GarryMarkus/SkillForge

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

62 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SkillForge Logo SkillForge

Professional Skill Verification & Job Matching Platform

Bridging the Gap Between Learning and Earning

React Vite Django Python Framer Motion License

πŸš€ Live Demo β€’ πŸ“– Documentation β€’ 🎯 Features β€’ πŸ’» Installation β€’ πŸ› Troubleshooting β€’ ❓ FAQ


πŸ“‘ Table of Contents


πŸ“Έ Screenshots

Loader Page:

Loader

Home Page:

Home Page

User Selection Page:

User Page

User Profile Page:

User Profile

Browse Job Section:

Browser Job Section

Learning Page:

Learning Page


🌟 Overview

SkillForge is a comprehensive platform that transforms learners into verified, job-ready professionals through AI-powered skill verification, adaptive learning paths, and intelligent job matching. Our platform serves both students/learners and clients/recruiters, providing a seamless bridge between education and employment.

🎯 Mission

Transform learners into the top 1% of verified talent through:

  • πŸŽ“ AI-Personalized Learning Paths
  • πŸ›‘οΈ Blockchain-Verified Credentials
  • πŸ“Š Living Professional Identity (Skill CIBIL Score)
  • 🀝 Smart Job Matching with Top Startups

πŸ‘₯ Target Users

  1. Students/Learners - Individuals seeking to upskill, verify their expertise, and land jobs
  2. Clients/Recruiters - Companies looking for verified, job-ready talent

πŸ—οΈ System Architecture

Website Flowchart:

SkillForge Architecture

Website Flow Overview:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        LANDING PAGE                             β”‚
β”‚                  (Public Marketing Site)                        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       β”‚
                       β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   AUTHENTICATION PAGE                           β”‚
β”‚              (Role-Based Login/Signup)                          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚                         β”‚
            β–Ό                         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   STUDENT/LEARNER     β”‚   β”‚   CLIENT/RECRUITER     β”‚
β”‚       PATH            β”‚   β”‚        PATH            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Detailed Component Architecture

SkillForge Platform
β”‚
β”œβ”€β”€ Frontend (React 18 + Vite)
β”‚   β”œβ”€β”€ Landing Page
β”‚   β”œβ”€β”€ Authentication System
β”‚   β”œβ”€β”€ Student Portal
β”‚   β”‚   β”œβ”€β”€ Onboarding (CV/Resume/GitHub)
β”‚   β”‚   β”œβ”€β”€ Dashboard/Portfolio
β”‚   β”‚   β”œβ”€β”€ Learning Paths
β”‚   β”‚   β”œβ”€β”€ Proctored Assessments
β”‚   β”‚   β”œβ”€β”€ Skill Verification
β”‚   β”‚   └── Job Browser
β”‚   └── Recruiter Portal
β”‚       β”œβ”€β”€ Onboarding (Company Details)
β”‚       β”œβ”€β”€ Job Posting
β”‚       β”œβ”€β”€ Candidate Matching
β”‚       β”œβ”€β”€ Applicant Review
β”‚       └── Tracking System
β”‚
β”œβ”€β”€ Backend API
β”‚   β”œβ”€β”€ Authentication (JWT)
β”‚   β”œβ”€β”€ User Management
β”‚   β”œβ”€β”€ Exam/Assessment Engine
β”‚   β”œβ”€β”€ Proctoring Service
β”‚   β”œβ”€β”€ Portfolio Generator
β”‚   β”œβ”€β”€ Job Matching Algorithm
β”‚   └── Analytics Engine
β”‚
└── Infrastructure
    β”œβ”€β”€ Database (PostgreSQL/MongoDB)
    β”œβ”€β”€ File Storage (AWS S3/Cloudinary)
    β”œβ”€β”€ Blockchain Integration (Credentials)
    └── AI/ML Services (Matching, Proctoring)

✨ Key Features

πŸŽ“ For Students/Learners

1. Intelligent Onboarding

  • πŸ“„ CV/Resume upload and parsing
  • πŸ’» GitHub portfolio integration
  • πŸ”— LinkedIn profile import
  • 🎯 Skill extraction and analysis

2. Personalized Learning Dashboard

  • πŸ“Š Skill CIBIL Score (Dynamic Professional Reputation)
  • πŸ”₯ Learning streak tracking (Duolingo-style)
  • πŸ“ˆ Progress visualization
  • 🎯 Adaptive roadmap generation
  • πŸ† Achievement badges

3. Proctored Assessment System

  • πŸ“Ή Real-time video monitoring
  • πŸ›‘οΈ AI-powered cheating detection
    • Tab switching detection
    • Face recognition
    • Multiple person detection
    • Audio anomaly detection
  • πŸ“Š Risk scoring and analytics
  • πŸ”’ Secure exam environment

4. Skill Verification & Credentials

  • βœ… Blockchain-verified certificates
  • πŸ… Portfolio generation
  • πŸ“Š Skill assessment reports
  • 🎯 Proof-of-work feed

5. Job Discovery & Application

  • πŸ” Browse curated job listings
  • πŸ€– AI-powered job recommendations
  • πŸ“ One-click applications
  • πŸ“Š Application tracking

🏒 For Clients/Recruiters

1. Streamlined Onboarding

  • 🏒 Company profile setup
  • πŸ“‹ Form-based information collection
  • βœ… Verification process

2. Smart Job Posting

  • πŸ“ Create detailed job listings
  • 🎯 Skill requirement specification
  • πŸ’° Salary range definition
  • πŸ“… Timeline management

3. AI-Powered Candidate Matching

  • πŸ€– Schematic similarity-based sorting
  • πŸ“Š Skill compatibility scoring
  • πŸ” Advanced filtering
  • πŸ“ˆ Candidate ranking

4. Applicant Management

  • πŸ‘₯ Review applied students
  • πŸ“Š View detailed portfolios
  • βœ… Skill verification status
  • πŸ’¬ Direct communication

5. Tracking & Analytics

  • πŸ“ˆ Application statistics
  • πŸ‘€ Job post performance
  • πŸ“Š Hiring funnel analytics
  • 🎯 Time-to-hire metrics

πŸ› οΈ Technology Stack

Frontend

Technology Version Purpose
React 18.2.0 UI framework
Vite 5.0.8 Build tool & dev server
Framer Motion 10.16.16 Animations & transitions
Lucide React 0.263.1 Icon library (2.5px stroke)

Design System

Element Specification
Typography Bricolage Grotesque (900 weight) for headings, DM Sans for body
Color Palette (Light) Canvas: #FDF8F1, Cards: #FFFFFF, Accent: #3B82F6
Color Palette (Dark) Canvas: #0D0D0D, Cards: #1A1A1A, Accent: #10B981
Border Radius 3rem (48px) for cards, 2rem for components
Button Style Pill-shaped with 3px border, 3D shadow effect

Backend Integration

Service Purpose
RESTful API Main backend communication
JWT Authentication Secure user sessions
WebSocket Real-time proctoring events
File Upload API CV/Resume/Document handling

Proctoring Technology

Feature Implementation
Video Capture WebRTC MediaDevices API
Face Detection AI/ML model integration
Event Tracking Real-time event logging
Risk Scoring Algorithmic confidence scoring

πŸ‘€ User Flows

Student/Learner Journey

1. Landing Page
   ↓
2. Sign Up / Login (Student Role)
   ↓
3. Onboarding
   β”œβ”€ Upload CV/Resume
   β”œβ”€ Connect GitHub
   └─ Import LinkedIn
   ↓
4. Data Parsing & Extraction
   ↓
5. Dashboard Generation
   β”œβ”€ Skill CIBIL Score
   β”œβ”€ Learning Roadmap
   └─ Recommended Paths
   ↓
6. Learning & Assessment
   β”œβ”€ Complete Projects
   β”œβ”€ Take Proctored Tests
   └─ Earn Verifications
   ↓
7. Portfolio Building
   β”œβ”€ Auto-generated Dashboard
   └─ Verified Credentials
   ↓
8. Job Discovery
   β”œβ”€ Browse Jobs
   β”œβ”€ Get Recommendations
   └─ Apply with One Click
   ↓
9. Career Success

Recruiter Journey

1. Landing Page
   ↓
2. Sign Up / Login (Recruiter Role)
   ↓
3. Company Onboarding
   β”œβ”€ Company Details
   β”œβ”€ Verification
   └─ Profile Setup
   ↓
4. Job Posting
   β”œβ”€ Create Job Listing
   β”œβ”€ Define Requirements
   └─ Set Criteria
   ↓
5. Candidate Matching
   β”œβ”€ AI Sorting by Similarity
   β”œβ”€ Review Top Matches
   └─ View Detailed Profiles
   ↓
6. Applicant Review
   β”œβ”€ Check Skill Verifications
   β”œβ”€ Review Portfolios
   └─ Access Assessments
   ↓
7. Hiring Process
   β”œβ”€ Contact Candidates
   β”œβ”€ Schedule Interviews
   └─ Make Offers
   ↓
8. Tracking & Analytics
   β”œβ”€ Monitor Applications
   β”œβ”€ Track Performance
   └─ Optimize Hiring

πŸ’» Installation & Setup

Prerequisites

  • Node.js 18.x or higher
  • npm or yarn
  • Git
  • Modern web browser (Chrome, Firefox, Edge, Safari)

Quick Start

# 1. Clone the repository
git clone https://github.com/skillforge/skillforge-platform.git
cd skillforge-platform

# 2. Install dependencies
npm install

# 3. Configure environment variables
cp .env.example .env
# Edit .env with your configuration

# 4. Start development server
npm run dev

# 5. Open browser
# Navigate to http://localhost:5173

Build for Production

# Build optimized production bundle
npm run build

# Preview production build
npm run preview

# Output will be in the /dist directory

πŸ”§ Environment Configuration

Frontend Environment Variables

Create a .env file in the root directory:

# API Configuration
VITE_API_BASE_URL=http://127.0.0.1:8000/api
VITE_API_TIMEOUT=30000

# Proctoring Service
VITE_PROCTOR_ENABLED=true
VITE_PROCTOR_FACE_DETECTION_INTERVAL=20000
VITE_PROCTOR_VIDEO_QUALITY=medium
VITE_PROCTOR_ENCRYPTION_ENABLED=true

# Feature Flags
VITE_ENABLE_GITHUB_INTEGRATION=true
VITE_ENABLE_LINKEDIN_IMPORT=true
VITE_ENABLE_BLOCKCHAIN_VERIFICATION=true
VITE_ENABLE_JOB_MATCHING=true
VITE_ENABLE_PORTFOLIO_GENERATION=true

# Analytics
VITE_ANALYTICS_ID=your-analytics-id
VITE_ENABLE_ANALYTICS=true

# File Upload
VITE_MAX_FILE_SIZE=10485760  # 10MB
VITE_ALLOWED_FILE_TYPES=.pdf,.doc,.docx,.txt
VITE_UPLOAD_ENDPOINT=/api/upload

# Job Matching
VITE_MATCHING_ALGORITHM=semantic-similarity
VITE_MIN_MATCH_SCORE=0.7
VITE_MAX_RECOMMENDATIONS=10

# Blockchain
VITE_BLOCKCHAIN_ENABLED=true
VITE_BLOCKCHAIN_NETWORK=ethereum
VITE_BLOCKCHAIN_CONTRACT_ADDRESS=0x...

# Miscellaneous
VITE_APP_NAME=SkillForge
VITE_APP_VERSION=1.0.0
VITE_DEBUG_MODE=false

Backend Environment Variables

Create a .env file in the skillforge/ directory:

# Django Configuration
DEBUG=False
SECRET_KEY=your-secret-key-here
ALLOWED_HOSTS=localhost,127.0.0.1,yourdomain.com
CORS_ALLOWED_ORIGINS=http://localhost:5173,https://yourdomain.com

# Database
DB_ENGINE=django.db.backends.postgresql
DB_NAME=skillforge_db
DB_USER=skillforge_user
DB_PASSWORD=secure_password
DB_HOST=localhost
DB_PORT=5432

# Email Configuration
EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_HOST_USER=your-email@gmail.com
EMAIL_HOST_PASSWORD=your-app-password

# JWT Configuration
JWT_SECRET_KEY=your-jwt-secret
JWT_ALGORITHM=HS256
JWT_EXPIRATION_HOURS=24
JWT_REFRESH_EXPIRATION_DAYS=7

# AWS/Cloud Storage
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
AWS_STORAGE_BUCKET_NAME=skillforge-bucket
AWS_S3_REGION_NAME=us-east-1

# File Upload
FILE_UPLOAD_MAX_SIZE=10485760
ALLOWED_UPLOAD_EXTENSIONS=pdf,doc,docx,txt,jpg,png

# Proctoring Service
PROCTOR_API_KEY=your-proctor-api-key
PROCTOR_WEBHOOK_SECRET=your-webhook-secret
FACE_DETECTION_MODEL=mediapipe
FACE_DETECTION_THRESHOLD=0.5

# Analytics
ANALYTICS_API_KEY=your-analytics-key
LOG_LEVEL=INFO

# Blockchain
BLOCKCHAIN_ENABLED=true
BLOCKCHAIN_NETWORK=ethereum
BLOCKCHAIN_RPC_URL=http://localhost:8545
BLOCKCHAIN_CONTRACT_ADDRESS=0x...
BLOCKCHAIN_PRIVATE_KEY=your-private-key

# Redis (for caching and task queues)
REDIS_URL=redis://localhost:6379/0
CACHE_TIMEOUT=3600

# Media & Static Files
MEDIA_URL=/media/
STATIC_URL=/static/
MEDIA_ROOT=media/
STATIC_ROOT=staticfiles/

# Security
SECURE_SSL_REDIRECT=True
SESSION_COOKIE_SECURE=True
CSRF_COOKIE_SECURE=True
SECURE_HSTS_SECONDS=31536000
SECURE_HSTS_INCLUDE_SUBDOMAINS=True

# Logging
LOG_FILE_PATH=logs/django.log
LOG_ROTATION_SIZE=10485760
LOG_RETENTION_DAYS=30

# Third-party Integrations
GITHUB_CLIENT_ID=your-github-client-id
GITHUB_CLIENT_SECRET=your-github-client-secret
LINKEDIN_CLIENT_ID=your-linkedin-client-id
LINKEDIN_CLIENT_SECRET=your-linkedin-client-secret

# Testing
TEST_ENVIRONMENT=false
TEST_EMAIL_BACKEND=django.core.mail.backends.locmem.EmailBackend

Environment Setup Checklist

  • Create .env files in both Frontend/ and skillforge/ directories
  • Install PostgreSQL and create database
  • Configure AWS S3 bucket for file storage
  • Set up Redis server for caching
  • Generate secure secret keys
  • Configure email service (Gmail, SendGrid, etc.)
  • Set up blockchain node/RPC endpoint
  • Configure third-party integrations (GitHub, LinkedIn)
  • Run database migrations
  • Create superuser account for admin panel
  • Test all environment variables

πŸ“ Project Structure

skillforge-platform/
β”œβ”€β”€ public/                      # Static assets
β”‚   β”œβ”€β”€ assets/
β”‚   β”‚   └── skillforge-flow.png
β”‚   └── vite.svg
β”‚
β”œβ”€β”€ src/                         # Source code
β”‚   β”œβ”€β”€ components/              # React components
β”‚   β”‚   β”œβ”€β”€ landing/
β”‚   β”‚   β”‚   β”œβ”€β”€ Hero.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ TrustBar.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Pipeline.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ SkillCIBIL.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Testimonials.jsx
β”‚   β”‚   β”‚   └── FinalCTA.jsx
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ auth/
β”‚   β”‚   β”‚   β”œβ”€β”€ LoginScreen.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ SignupScreen.jsx
β”‚   β”‚   β”‚   └── RoleSelector.jsx
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ student/
β”‚   β”‚   β”‚   β”œβ”€β”€ Onboarding.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Dashboard.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ LearningRoadmap.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Portfolio.jsx
β”‚   β”‚   β”‚   └── JobBrowser.jsx
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ recruiter/
β”‚   β”‚   β”‚   β”œβ”€β”€ CompanyOnboarding.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ JobPosting.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ CandidateMatching.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ ApplicantReview.jsx
β”‚   β”‚   β”‚   └── TrackingDashboard.jsx
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ proctor/
β”‚   β”‚   β”‚   β”œβ”€β”€ VideoMonitor.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ EventLog.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ ProctoringSession.jsx
β”‚   β”‚   β”‚   └── ExamSelector.jsx
β”‚   β”‚   β”‚
β”‚   β”‚   └── shared/
β”‚   β”‚       β”œβ”€β”€ Header.jsx
β”‚   β”‚       β”œβ”€β”€ Footer.jsx
β”‚   β”‚       β”œβ”€β”€ ThemeToggle.jsx
β”‚   β”‚       └── AnimatedCard.jsx
β”‚   β”‚
β”‚   β”œβ”€β”€ hooks/                   # Custom React hooks
β”‚   β”‚   β”œβ”€β”€ useAuth.js
β”‚   β”‚   β”œβ”€β”€ useProctor.js
β”‚   β”‚   β”œβ”€β”€ useTheme.js
β”‚   β”‚   └── useAPI.js
β”‚   β”‚
β”‚   β”œβ”€β”€ services/                # API & services
β”‚   β”‚   β”œβ”€β”€ api.js              # Main API service
β”‚   β”‚   β”œβ”€β”€ auth.service.js
β”‚   β”‚   β”œβ”€β”€ exam.service.js
β”‚   β”‚   β”œβ”€β”€ proctor.service.js
β”‚   β”‚   └── job.service.js
β”‚   β”‚
β”‚   β”œβ”€β”€ utils/                   # Utility functions
β”‚   β”‚   β”œβ”€β”€ constants.js
β”‚   β”‚   β”œβ”€β”€ validators.js
β”‚   β”‚   └── helpers.js
β”‚   β”‚
β”‚   β”œβ”€β”€ styles/                  # Global styles
β”‚   β”‚   └── index.css
β”‚   β”‚
β”‚   β”œβ”€β”€ App.jsx                  # Main App component
β”‚   └── main.jsx                 # Entry point
β”‚
β”œβ”€β”€ docs/                        # Documentation
β”‚   β”œβ”€β”€ API_DOCUMENTATION.md
β”‚   β”œβ”€β”€ SETUP_GUIDE.md
β”‚   └── CONTRIBUTING.md
β”‚
β”œβ”€β”€ .env.example                 # Environment template
β”œβ”€β”€ .gitignore
β”œβ”€β”€ index.html
β”œβ”€β”€ package.json
β”œβ”€β”€ vite.config.js
β”œβ”€β”€ README.md
└── LICENSE

πŸ—„οΈ Database Schema

Core Models

User (Extended Django User)
β”œβ”€β”€ id (PK)
β”œβ”€β”€ username
β”œβ”€β”€ email
β”œβ”€β”€ password_hash
β”œβ”€β”€ first_name
β”œβ”€β”€ last_name
β”œβ”€β”€ role (student/recruiter/admin)
β”œβ”€β”€ profile_picture
β”œβ”€β”€ bio
β”œβ”€β”€ created_at
β”œβ”€β”€ updated_at
└── is_active

Student Profile
β”œβ”€β”€ id (PK)
β”œβ”€β”€ user_id (FK)
β”œβ”€β”€ bio
β”œβ”€β”€ phone
β”œβ”€β”€ location
β”œβ”€β”€ github_url
β”œβ”€β”€ linkedin_url
β”œβ”€β”€ portfolio_url
β”œβ”€β”€ resume_url
β”œβ”€β”€ skill_cibil_score (0-1000)
β”œβ”€β”€ learning_streak
β”œβ”€β”€ verified_skills (JSON)
β”œβ”€β”€ verified_badges (JSON)
β”œβ”€β”€ created_at
└── updated_at

Recruiter/Company Profile
β”œβ”€β”€ id (PK)
β”œβ”€β”€ user_id (FK)
β”œβ”€β”€ company_name
β”œβ”€β”€ company_size
β”œβ”€β”€ industry
β”œβ”€β”€ website
β”œβ”€β”€ location
β”œβ”€β”€ description
β”œβ”€β”€ logo_url
β”œβ”€β”€ verified
└── created_at

Skill
β”œβ”€β”€ id (PK)
β”œβ”€β”€ name
β”œβ”€β”€ category
β”œβ”€β”€ description
β”œβ”€β”€ level (beginner/intermediate/advanced/expert)
β”œβ”€β”€ created_at
└── updated_at

Assessment/Exam
β”œβ”€β”€ id (PK)
β”œβ”€β”€ title
β”œβ”€β”€ description
β”œβ”€β”€ duration (minutes)
β”œβ”€β”€ passing_score
β”œβ”€β”€ related_skill_id (FK)
β”œβ”€β”€ questions (JSON/Array)
β”œβ”€β”€ created_by (FK to User)
β”œβ”€β”€ status (draft/published/archived)
β”œβ”€β”€ created_at
└── updated_at

ExamSession
β”œβ”€β”€ id (PK)
β”œβ”€β”€ exam_id (FK)
β”œβ”€β”€ student_id (FK)
β”œβ”€β”€ start_time
β”œβ”€β”€ end_time
β”œβ”€β”€ duration_seconds
β”œβ”€β”€ score
β”œβ”€β”€ status (in_progress/completed/abandoned)
β”œβ”€β”€ answers (JSON)
β”œβ”€β”€ created_at
└── updated_at

ProctoringEvent
β”œβ”€β”€ id (PK)
β”œβ”€β”€ session_id (FK to ExamSession)
β”œβ”€β”€ event_type (TAB_SWITCH, NO_FACE, etc.)
β”œβ”€β”€ confidence (0.0-1.0)
β”œβ”€β”€ timestamp
β”œβ”€β”€ metadata (JSON)
β”œβ”€β”€ risk_score
└── recorded_at

Job
β”œβ”€β”€ id (PK)
β”œβ”€β”€ title
β”œβ”€β”€ description
β”œβ”€β”€ company_id (FK)
β”œβ”€β”€ salary_min
β”œβ”€β”€ salary_max
β”œβ”€β”€ location
β”œβ”€β”€ job_type (full-time/part-time/contract)
β”œβ”€β”€ required_skills (JSON)
β”œβ”€β”€ preferred_skills (JSON)
β”œβ”€β”€ experience_level
β”œβ”€β”€ status (open/closed/draft)
β”œβ”€β”€ created_at
β”œβ”€β”€ expires_at
└── updated_at

JobApplication
β”œβ”€β”€ id (PK)
β”œβ”€β”€ job_id (FK)
β”œβ”€β”€ student_id (FK)
β”œβ”€β”€ status (pending/shortlisted/rejected/offered)
β”œβ”€β”€ cover_letter
β”œβ”€β”€ match_score (0-100)
β”œβ”€β”€ applied_at
β”œβ”€β”€ response_at
└── updated_at

Portfolio
β”œβ”€β”€ id (PK)
β”œβ”€β”€ student_id (FK)
β”œβ”€β”€ title
β”œβ”€β”€ theme
β”œβ”€β”€ sections (JSON)
β”œβ”€β”€ skills (JSON)
β”œβ”€β”€ projects (JSON)
β”œβ”€β”€ verified_badges (JSON)
β”œβ”€β”€ url_slug
β”œβ”€β”€ is_public
β”œβ”€β”€ created_at
└── updated_at

Credential/Badge
β”œβ”€β”€ id (PK)
β”œβ”€β”€ name
β”œβ”€β”€ description
β”œβ”€β”€ icon_url
β”œβ”€β”€ skill_id (FK)
β”œβ”€β”€ issued_to_id (FK to Student)
β”œβ”€β”€ blockchain_hash
β”œβ”€β”€ qr_code
β”œβ”€β”€ issued_at
└── expires_at

Learning Roadmap
β”œβ”€β”€ id (PK)
β”œβ”€β”€ student_id (FK)
β”œβ”€β”€ title
β”œβ”€β”€ modules (JSON)
β”œβ”€β”€ progress_percentage
β”œβ”€β”€ estimated_completion_date
β”œβ”€β”€ status (not_started/in_progress/completed)
β”œβ”€β”€ created_at
└── updated_at

Database Relationships

User (1) -----> (1) Student Profile
User (1) -----> (1) Recruiter Profile
User (1) -----> (N) ExamSession
User (1) -----> (N) Job (created_by)
User (1) -----> (N) Credential

Skill (1) -----> (N) Assessment
Skill (1) -----> (N) Credential

Assessment (1) -----> (N) ExamSession
ExamSession (1) -----> (N) ProctoringEvent

Job (1) -----> (N) JobApplication
Student (1) -----> (N) JobApplication
Student (1) -----> (1) Portfolio
Student (1) -----> (N) Credential
Student (1) -----> (1) Learning Roadmap

πŸ”Œ API Integration

Authentication Endpoints

// Login
POST /api/auth/login/
Body: { username, password }
Response: { access, refresh, user }

// Logout
POST /api/auth/logout/
Headers: { Authorization: Bearer <token> }

// Refresh Token
POST /api/auth/refresh/
Body: { refresh }
Response: { access }

Exam & Assessment Endpoints

// Get Exam List
GET /api/list/
Headers: { Authorization: Bearer <token> }
Response: [{ id, name, duration, questions }]

// Start Exam
POST /api/start/
Body: { exam_id }
Response: { session_id, exam, start_time }

// Submit Exam
POST /api/submit/
Body: { session_id, answers }
Response: { score, results }

Proctoring Endpoints

// Send Event
POST /api/event/
Body: { 
  session_id, 
  event_type,      // TAB_SWITCH, NO_FACE, MULTIPLE_FACES, etc.
  confidence,      // 0.0 to 1.0
  timestamp,
  metadata 
}
Response: { risk, event_id }

// Get Event History
GET /api/events/:sessionId/
Response: [{ id, type, confidence, timestamp, risk }]

Job Matching Endpoints

// Get Job Listings
GET /api/jobs/
Query: { skill, location, salary_min, salary_max }
Response: [{ id, title, company, requirements }]

// Post Job (Recruiter)
POST /api/jobs/
Body: { title, description, requirements, salary_range }
Response: { job_id, status }

// Get Matched Candidates
GET /api/jobs/:jobId/matches/
Response: [{ user_id, match_score, skills, portfolio }]

// Apply to Job (Student)
POST /api/jobs/:jobId/apply/
Body: { cover_letter, portfolio_link }
Response: { application_id, status }

Portfolio & Analytics

// Generate Portfolio
POST /api/portfolio/generate/
Body: { user_id }
Response: { portfolio_url, skill_score }

// Get Analytics
GET /api/analytics/user/:userId/
Response: { 
  skill_cibil_score,
  learning_streak,
  verified_skills,
  job_applications
}

Complete API Usage Example

import API from './services/api';

// 1. Authenticate
const loginResult = await API.Auth.login('username', 'password');

// 2. Get exams
const examsResult = await API.Exam.getExamList();

// 3. Start exam
const startResult = await API.Exam.startExam(examId);

// 4. Send proctoring events
await API.Proctor.sendEvent(
  sessionId, 
  'TAB_SWITCH', 
  1.0,
  { source: 'visibility-api' }
);

// 5. Browse jobs
const jobsResult = await API.Job.getJobs({ skill: 'React' });

// 6. Apply to job
await API.Job.apply(jobId, { 
  coverLetter: '...',
  portfolioLink: '...' 
});

πŸ”’ Security Features

Authentication & Authorization

  • βœ… JWT-based authentication with access and refresh tokens
  • βœ… Role-based access control (Student, Recruiter, Admin)
  • βœ… Secure password hashing (bcrypt)
  • βœ… HTTPS enforcement in production
  • βœ… CORS protection with whitelisted origins

Proctoring Security

  • πŸ›‘οΈ Real-time monitoring with WebRTC
  • πŸŽ₯ Encrypted video streams
  • πŸ“Š Tamper-proof event logging
  • πŸ”’ Secure session management
  • πŸ“ Audit trail for all proctoring events

Data Protection

  • πŸ” End-to-end encryption for sensitive data
  • πŸ’Ύ Secure file storage with S3/Cloudinary
  • πŸ—„οΈ Database encryption at rest
  • 🚫 XSS protection via Content Security Policy
  • πŸ›‘οΈ SQL injection prevention via parameterized queries

Privacy Compliance

  • βœ… GDPR compliant
  • βœ… Data anonymization options
  • βœ… User data export/deletion
  • βœ… Cookie consent management
  • βœ… Privacy policy enforcement

πŸ“Ή Proctoring System

Event Types & Detection

Event Type Description Confidence Risk Impact
TAB_SWITCH User switched browser tab/window 1.0 High
NO_FACE No face detected in video feed 0.5-0.9 Medium-High
MULTIPLE_FACES Multiple people detected 0.7-1.0 High
LOOKING_AWAY User not looking at screen 0.4-0.7 Medium
AUDIO_DETECTED Unexpected audio/voice detected 0.6-0.9 Medium-High

Risk Scoring Algorithm

Risk Level = (
  (Event Count Γ— Event Weight) + 
  (Confidence Score Γ— 0.3) + 
  (Time Factor Γ— 0.2)
) / 100

Risk Categories:
- Low Risk: 0-0.39 (Green)
- Medium Risk: 0.40-0.69 (Yellow)
- High Risk: 0.70-1.00 (Red)

Proctoring Features

  1. Video Monitoring

    • Real-time webcam feed
    • Face detection and tracking
    • Recording indicator
    • Camera permission handling
  2. Event Tracking

    • Automatic event detection
    • Manual event triggers (testing)
    • Timestamp logging
    • Event history
  3. Analytics Dashboard

    • Live risk score
    • Event counter
    • Event log with filtering
    • Session statistics
  4. Security Measures

    • Tab switching detection
    • Window blur monitoring
    • Fullscreen enforcement (optional)
    • Copy-paste blocking (optional)

πŸ“Š Dashboard & Portfolio

Student Dashboard Features

Skill CIBIL Score

  • Range: 0-1000 points
  • Calculation Factors:
    • Technical Skills (35%)
    • Project Quality (30%)
    • Peer Reviews (20%)
    • Learning Consistency (15%)
  • Updates: Real-time based on verified achievements

Learning Streak

  • Daily activity tracking
  • Duolingo-style flame icon
  • Motivation system
  • Streak recovery options

Activity Heatmap

  • 12-month visualization
  • Contribution graph style
  • Hover tooltips with activity count
  • Color intensity based on activity level

Adaptive Roadmap

  • Personalized learning path
  • Skill modules with status (completed/current/locked)
  • Verification gates
  • Progress tracking

Verified Badges

  • React Expert, Node.js Pro, AWS Certified, etc.
  • Blockchain-verified credentials
  • Shareable on LinkedIn/GitHub
  • QR code for verification

Portfolio Generation

Auto-generated sections:

  • Personal information
  • Skill CIBIL Score (prominent display)
  • Verified skills with badges
  • Project showcase
  • Assessment results
  • Proof-of-work feed
  • Recommendations

Customization options:

  • Theme selection
  • Section ordering
  • Privacy controls
  • Download as PDF

πŸ€– Job Matching System

Matching Algorithm

Semantic Similarity Scoring

1. Extract Skills from Job Description
   ↓
2. Extract Skills from Student Portfolio
   ↓
3. Calculate Similarity Score
   - Exact Match: 1.0
   - Synonym Match: 0.9
   - Related Skill: 0.7-0.8
   - No Match: 0.0
   ↓
4. Weighted Scoring
   - Required Skills: 50%
   - Preferred Skills: 30%
   - Experience Level: 20%
   ↓
5. Rank Candidates by Total Score

Matching Features

For Students:

  • 🎯 Personalized job recommendations
  • πŸ“Š Match score visibility (0-100%)
  • πŸ” Skill gap analysis
  • πŸ’‘ Improvement suggestions

For Recruiters:

  • πŸ€– AI-sorted candidate list
  • πŸ“ˆ Match score per candidate
  • πŸ” Advanced filtering
  • πŸ“Š Batch candidate comparison

Application Tracking

Student View:

  • Application status (Pending/Under Review/Shortlisted/Rejected)
  • Application date
  • Company response time
  • Interview scheduling

Recruiter View:

  • Total applications
  • Shortlisted candidates
  • Interview scheduled
  • Offers made
  • Time-to-hire metrics

βš™οΈ Configuration

Theme Configuration

// Light Mode Colors
const lightTheme = {
  canvas: '#FDF8F1',
  cardBg: '#FFFFFF',
  textPrimary: '#2D1B14',
  textSecondary: '#6B5B52',
  accentBlue: '#3B82F6',
  accentGreen: '#10B981',
  accentYellow: '#FDE047'
};

// Dark Mode Colors
const darkTheme = {
  canvas: '#0D0D0D',
  cardBg: '#1A1A1A',
  textPrimary: '#FFFFFF',
  textSecondary: '#A0A0A0',
  accentBlue: '#60A5FA',
  accentGreen: '#34D399',
  accentOrange: '#FB923C'
};

Feature Flags

// In .env or config.js
const featureFlags = {
  enableProctoring: true,
  enableGitHubSync: true,
  enableLinkedInImport: true,
  enableBlockchainVerification: true,
  enableJobMatching: true,
  enablePortfolioGeneration: true,
  enableAnalytics: true
};

API Configuration

// In api.js
const API_CONFIG = {
  BASE_URL: process.env.VITE_API_BASE_URL,
  TIMEOUT: 30000,
  RETRY: {
    maxAttempts: 3,
    delay: 1000,
    backoffMultiplier: 2
  }
};

πŸ› οΈ Development Guide

Code Style

  • JavaScript: ES6+ with JSX
  • Naming: camelCase for variables, PascalCase for components
  • Comments: JSDoc for functions, inline for complex logic
  • Formatting: Prettier with 2-space indentation

Component Guidelines

// Component template
import React, { useState, useEffect } from 'react';
import { motion } from 'framer-motion';

/**
 * Component description
 * @param {Object} props - Component props
 * @param {string} props.title - Title text
 * @param {Function} props.onAction - Callback function
 */
const MyComponent = ({ title, onAction }) => {
  const [state, setState] = useState(initialValue);

  useEffect(() => {
    // Side effects
  }, [dependencies]);

  return (
    <motion.div 
      className="component-class"
      initial={{ opacity: 0 }}
      animate={{ opacity: 1 }}
    >
      {/* Component content */}
    </motion.div>
  );
};

export default MyComponent;

Testing

# Run unit tests
npm run test

# Run with coverage
npm run test:coverage

# Run E2E tests
npm run test:e2e

Git Workflow

# Create feature branch
git checkout -b feature/new-feature

# Make changes and commit
git add .
git commit -m "feat: Add new feature"

# Push to remote
git push origin feature/new-feature

# Create pull request on GitHub

Commit Message Convention

feat: Add new feature
fix: Bug fix
docs: Documentation update
style: Code style changes
refactor: Code refactoring
test: Add tests
chore: Build/tooling changes

πŸš€ Deployment

Vercel Deployment

# Install Vercel CLI
npm install -g vercel

# Deploy to production
vercel --prod

# Set environment variables
vercel env add VITE_API_BASE_URL production

Netlify Deployment

# Install Netlify CLI
npm install -g netlify-cli

# Build and deploy
npm run build
netlify deploy --prod --dir=dist

Docker Deployment

# Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
EXPOSE 5173
CMD ["npm", "run", "preview"]
# Build Docker image
docker build -t skillforge:latest .

# Run container
docker run -p 5173:5173 skillforge:latest

CI/CD Pipeline (GitHub Actions)

# .github/workflows/deploy.yml
name: Deploy
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: '18'
      - run: npm ci
      - run: npm run build
      - run: npm run test
      - uses: vercel/actions@v1
        with:
          vercel-token: ${{ secrets.VERCEL_TOKEN }}

πŸ“ˆ Performance Optimization

Code Splitting

// Lazy loading components
const Dashboard = React.lazy(() => import('./components/Dashboard'));
const Proctor = React.lazy(() => import('./components/Proctor'));

// Usage with Suspense
<Suspense fallback={<LoadingSpinner />}>
  <Dashboard />
</Suspense>

Optimization Checklist

  • βœ… Lazy load routes and heavy components
  • βœ… Use React.memo for expensive renders
  • βœ… Implement virtualization for long lists
  • βœ… Optimize images (WebP, lazy loading)
  • βœ… Minimize bundle size (tree shaking)
  • βœ… Use CDN for static assets
  • βœ… Enable compression (gzip/brotli)
  • βœ… Implement service worker caching

Performance Metrics

Metric Target Current
First Contentful Paint <1.5s 1.2s
Time to Interactive <3.5s 2.8s
Largest Contentful Paint <2.5s 2.1s
Cumulative Layout Shift <0.1 0.05
Total Bundle Size <300KB 245KB

οΏ½ Testing & Quality Assurance

Frontend Testing

# Run unit tests with Vitest
npm run test

# Run unit tests in watch mode
npm run test:watch

# Run tests with coverage report
npm run test:coverage

# Run E2E tests with Playwright
npm run test:e2e

# Run linting checks
npm run lint

# Fix linting issues automatically
npm run lint:fix

# Format code with Prettier
npm run format

# Check code formatting without changes
npm run format:check

Backend Testing

# Run Django tests
python manage.py test

# Run tests with coverage
coverage run --source='.' manage.py test
coverage report

# Run specific test module
python manage.py test skillforge.accounts.tests

# Run with verbose output
python manage.py test --verbosity=2

# Run tests in parallel (faster)
python manage.py test --parallel

Test Coverage Requirements

  • Minimum Coverage: 80% across all modules
  • Critical Paths: 100% (authentication, payments, security)
  • UI Components: 75% snapshot + interaction tests
  • API Endpoints: 90% happy path + error cases

Quality Assurance Checklist

  • All unit tests passing
  • All integration tests passing
  • All E2E tests passing
  • Code coverage meets minimum threshold
  • No ESLint warnings/errors
  • No unanswered TypeScript issues
  • Security vulnerabilities scanned (npm audit)
  • Performance benchmarks met
  • Accessibility score (axe-core) > 90
  • Cross-browser compatibility verified
  • Mobile responsiveness verified
  • API documentation updated
  • CHANGELOG updated

Pre-commit Hooks

The project uses Husky to run checks before commits:

# Install husky
npm install husky --save-dev
husky install

# Hooks automatically run:
# - lint-staged (format and lint changed files)
# - Unit tests for changed files

πŸ“Š Monitoring & Logging

Frontend Monitoring

// Error tracking with Sentry
import * as Sentry from "@sentry/react";

Sentry.init({
  dsn: "your-sentry-dsn",
  environment: process.env.NODE_ENV,
  tracesSampleRate: 1.0,
  integrations: [
    new Sentry.Replay({
      maskAllText: true,
      blockAllMedia: true,
    }),
  ],
});

// Performance monitoring
const perfObserver = new PerformanceObserver((list) => {
  for (const entry of list.getEntries()) {
    console.log(`${entry.name}: ${entry.duration}ms`);
  }
});

perfObserver.observe({ entryTypes: ["measure", "navigation"] });

Backend Logging

# Django logging configuration
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '[{levelname}] {asctime} {name} {funcName} {lineno} {message}',
            'style': '{',
        },
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'verbose',
        },
        'file': {
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': 'logs/django.log',
            'maxBytes': 1024 * 1024 * 10,  # 10MB
            'backupCount': 5,
            'formatter': 'verbose',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console', 'file'],
            'level': 'INFO',
        },
        'skillforge': {
            'handlers': ['console', 'file'],
            'level': 'DEBUG',
        },
    },
}

Key Metrics to Monitor

Frontend Metrics:

  • Page Load Time
  • Time to Interactive (TTI)
  • First Contentful Paint (FCP)
  • Cumulative Layout Shift (CLS)
  • JavaScript Error Rate
  • API Response Times
  • User Session Duration

Backend Metrics:

  • API Response Times (p50, p95, p99)
  • Error Rate by Endpoint
  • Database Query Performance
  • Cache Hit Ratio
  • Queue Processing Time
  • Memory Usage
  • CPU Usage
  • Active Connections

Business Metrics:

  • User Signup Conversion Rate
  • Assessment Completion Rate
  • Job Application Success Rate
  • Candidate Matching Accuracy
  • User Retention Rate

Monitoring Tools

# Backend monitoring options
- Prometheus + Grafana (metrics)
- ELK Stack (logs)
- Jaeger (distributed tracing)
- New Relic (APM)
- DataDog (monitoring)

# Frontend monitoring options
- Sentry (error tracking)
- LogRocket (session replay)
- Datadog RUM (real user monitoring)
- Google Analytics (business metrics)

πŸ› Common Issues & Troubleshooting

Frontend Issues

Issue: Blank white screen after deployment

Solution:

# Clear cache and rebuild
rm -rf node_modules dist
npm install
npm run build

# Check environment variables are set correctly
# Verify VITE_API_BASE_URL is correct

Issue: CORS errors when calling API

Solution:

// Frontend: Check API client configuration
// Verify VITE_API_BASE_URL matches backend CORS_ALLOWED_ORIGINS

// Backend (Django settings.py):
CORS_ALLOWED_ORIGINS = [
    "http://localhost:5173",
    "https://yourdomain.com",
]

Issue: Proctoring video not starting

Solution:

// Check browser permissions
// Ensure HTTPS in production
// Verify camera and microphone are available
// Check WebRTC support in browser

// Debug in browser console:
navigator.mediaDevices.enumerateDevices().then(devices => {
  console.log(devices);
});

Issue: File upload fails

Solution:

// Check file size limit
console.log(import.meta.env.VITE_MAX_FILE_SIZE);

// Verify file type is allowed
const allowed = import.meta.env.VITE_ALLOWED_FILE_TYPES.split(',');

// Check upload endpoint configuration
// Verify server is accepting multipart/form-data

Backend Issues

Issue: Database connection refused

Solution:

# Check PostgreSQL is running
sudo systemctl status postgresql

# Verify database credentials in .env
# Check host, port, username, password

# Create database if missing:
createdb skillforge_db
createuser skillforge_user
psql skillforge_db
# ALTER USER skillforge_user WITH PASSWORD 'password';
# GRANT ALL PRIVILEGES ON DATABASE skillforge_db TO skillforge_user;

Issue: Migration errors

Solution:

# Check migration status
python manage.py showmigrations

# Revert migrations if needed
python manage.py migrate <app_name> <migration_number>

# Create new migrations
python manage.py makemigrations

# Apply migrations
python manage.py migrate

# Check for unapplied migrations
python manage.py migrate --plan

Issue: Static files not serving

Solution:

# Collect static files
python manage.py collectstatic --noinput

# In production, serve with whitenoise
# pip install whitenoise

# Add to Django settings:
MIDDLEWARE = [
    'whitenoise.middleware.WhiteNoiseMiddleware',
    ...
]

Issue: Celery tasks not executing

Solution:

# Check if Celery worker is running
celery -A skillforge worker -l info

# Check if Redis is running
redis-cli ping

# Check task queue:
celery -A skillforge inspect active

# Purge tasks if stuck:
celery -A skillforge purge

API Issues

Issue: JWT token expired

Solution:

// Refresh token automatically
const refreshToken = async () => {
  const response = await fetch('/api/auth/refresh/', {
    method: 'POST',
    body: JSON.stringify({ refresh: localStorage.getItem('refresh_token') }),
  });
  const { access } = await response.json();
  localStorage.setItem('access_token', access);
};

Issue: Rate limiting errors (429)

Solution:

// Implement exponential backoff retry logic
const retryRequest = async (fn, maxRetries = 3) => {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn();
    } catch (error) {
      if (error.status === 429 && i < maxRetries - 1) {
        const delay = Math.pow(2, i) * 1000;
        await new Promise(resolve => setTimeout(resolve, delay));
      } else {
        throw error;
      }
    }
  }
};

❓ FAQ

General Questions

Q: What is the minimum system requirement? A: Node.js 18+, Python 3.11+, PostgreSQL 12+, Redis 6+

Q: Can I self-host SkillForge? A: Yes, the platform is fully open-source and can be self-hosted on any cloud provider or on-premise.

Q: What payment methods are supported? A: Currently supports Stripe integration. More payment gateways can be added through the plugin system.

Q: Is SkillForge GDPR compliant? A: Yes, the platform includes GDPR compliance features including data export, deletion, and consent management.

Technical Questions

Q: How do I set up proctoring for exams? A: Install the proctoring system, configure the face detection model, and enable in environment variables. See the Proctoring System section for details.

Q: Can I customize the job matching algorithm? A: Yes, the matching algorithm is configurable in skillforge/modules/services.py. You can modify weights, thresholds, and algorithms.

Q: How are credentials stored and verified? A: Credentials are stored in PostgreSQL, optionally backed by blockchain. Each credential has a QR code for verification.

Q: What video conferencing integration is available? A: Currently uses WebRTC with Jitsi. Can be integrated with Zoom, Google Meet, or other providers via API.

Q: How do I integrate with GitHub for portfolio sync? A: Configure GitHub OAuth2 credentials and enable VITE_ENABLE_GITHUB_INTEGRATION=true in environment variables.

Deployment Questions

Q: How do I deploy to production? A: Use Docker or traditional server setup. Refer to the Deployment section. Recommended: AWS ECS, Heroku, or DigitalOcean.

Q: What is the recommended database for production? A: PostgreSQL 14+. MySQL 8+ can also be used. Avoid SQLite in production.

Q: How do I set up SSL/HTTPS? A: Use Let's Encrypt with Nginx/Apache reverse proxy, or use platform-provided SSL (AWS Certificate Manager, etc.).

Q: What is the best way to backup data? A: Configure automated daily database backups. For S3, enable versioning. Monitor backup logs regularly.

Performance Questions

Q: How many concurrent users can the system handle? A: Depends on infrastructure. A standard setup handles ~5,000 concurrent users. Scale horizontally with load balancing.

Q: How long do proctored exams take to process? A: Real-time monitoring + 2-5 minutes for result generation depending on exam complexity.

Q: What is the maximum file upload size? A: Default is 10MB, configurable via VITE_MAX_FILE_SIZE and FILE_UPLOAD_MAX_SIZE.

Q: How often is the skill matching algorithm updated? A: Daily, with manual updates as needed. Can be configured via cron job or Celery beat.


πŸš€ Roadmap

Phase 1: Current (Q1-Q2 2026)

  • Core authentication system
  • Proctored assessment engine
  • Basic job matching
  • Portfolio generation
  • Skill verification

Phase 2: Q3 2026

  • Advanced analytics dashboard
  • AI-powered learning recommendations
  • Video interview integration
  • Bulk candidate import (for recruiters)
  • API rate limiting and monitoring

Phase 3: Q4 2026

  • Blockchain credential verification
  • Mobile app (React Native)
  • Real-time notifications (push)
  • Advanced reporting for recruiters
  • Skill endorsements system

Phase 4: 2027

  • AI resume optimization suggestions
  • Integration with ATS (Applicant Tracking System)
  • Video assessment auto-grading
  • Salary prediction model
  • Enterprise SSO (SAML/OAuth)

Future Possibilities

  • Gamification system (badges, leaderboards)
  • Peer-to-peer mentoring
  • Mock interview preparation
  • Subscription tier system
  • White-label platform offering

πŸ“ž Support & Contact

Getting Help

Documentation: Full Documentation

Email Support: support@skillforge.com

Discord Community: Join Discord Server

GitHub Issues: Report Issues

Twitter: @SkillForgeApp

Reporting Security Issues

Please report security vulnerabilities to: security@skillforge.com Do not open public issues for security concerns.

Feature Requests

Submit feature requests via:

Feedback & Suggestions

We'd love to hear from you! Share feedback at: feedback@skillforge.com


�🀝 Contributing

We welcome contributions from the community! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.

How to Contribute

  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

Code Review Process

  • All submissions require review from 2+ maintainers
  • CI/CD checks must pass
  • Code coverage must be maintained/improved
  • Documentation must be updated

πŸ“œ License

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

MIT License

Copyright (c) 2026 SkillForge

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 72.8%
  • Python 26.0%
  • Other 1.2%