SkillSync is a modern, full-stack mentorship platform designed to revolutionize how people learn and share knowledge. Whether you're a student seeking guidance or a mentor eager to share your expertise, SkillSync creates meaningful connections that foster growth and learning.
In today's fast-paced world, finding the right mentor or student is challenging. Traditional platforms lack:
- Real-time Communication - Delayed responses hinder learning momentum
- Organized Content Sharing - Scattered resources make learning inefficient
- Skill-Based Matching - Generic connections don't align with specific learning goals
- Progress Tracking - No way to measure growth or provide feedback
SkillSync addresses these challenges with:
- π Smart Matching - Connect based on specific skills and expertise
- π¬ Real-Time Chat - Instant messaging powered by Socket.io
- π Learning Spaces - Organized hubs for sharing notes, resources, and files
- β Review System - Rate mentors and build trust within the community
- π Smart Notifications - Stay updated on messages, connections, and new content
|
|
graph TB
subgraph Client["Client Layer"]
A["Next.js Frontend<br/>React Components"]
end
subgraph Application["Application Layer"]
B["Next.js API Routes<br/>REST Endpoints"]
C["Socket.io Server<br/>WebSocket Handler"]
end
subgraph Data["Data Layer"]
D["Prisma ORM<br/>Query Builder"]
E[("PostgreSQL<br/>Database")]
end
subgraph External["External Services"]
F["File Storage<br/>Uploads & Assets"]
G["Authentication<br/>JWT/Sessions"]
end
A -->|HTTP/HTTPS| B
A -->|WebSocket| C
B -->|Queries| D
C -->|Real-time Events| D
D -->|SQL| E
F -.->|Static Assets| A
G -.->|Auth Tokens| B
style A fill:#6366f1,stroke:#4f46e5,color:#fff,stroke-width:2px
style B fill:#8b5cf6,stroke:#7c3aed,color:#fff,stroke-width:2px
style C fill:#10b981,stroke:#059669,color:#fff,stroke-width:2px
style D fill:#f59e0b,stroke:#d97706,color:#fff,stroke-width:2px
style E fill:#ef4444,stroke:#dc2626,color:#fff,stroke-width:2px
style F fill:#06b6d4,stroke:#0891b2,color:#fff,stroke-width:2px
style G fill:#ec4899,stroke:#db2777,color:#fff,stroke-width:2px
sequenceDiagram
participant U as User Browser
participant N as Next.js App
participant A as API Routes
participant S as Socket.io
participant P as Prisma ORM
participant D as PostgreSQL
U->>N: Request Page
N->>A: Fetch Data (HTTP)
A->>P: Query Database
P->>D: Execute SQL
D-->>P: Return Data
P-->>A: Format Response
A-->>N: Send JSON
N-->>U: Render Page
U->>S: Connect WebSocket
S->>P: Subscribe to Events
U->>S: Send Message
S->>P: Save Message
P->>D: Insert Record
S-->>U: Broadcast to Recipients
| Category | Technologies |
|---|---|
| Frontend | Next.js 14 (App Router), React 18, CSS Modules, React Hot Toast |
| Backend | Next.js API Routes, Prisma ORM, PostgreSQL, Socket.io |
| Real-time | Socket.io for WebSocket connections, Event-driven architecture |
| Database | PostgreSQL 14+, Prisma migrations, Relational data modeling |
| Authentication | NextAuth.js, JWT tokens, Session management |
| File Handling | Multipart form data, Local file storage, Download API |
| Deployment | Vercel (Frontend), Railway/Heroku (Database), Docker support |
Next.js App Router
βββ Pages (RSC - React Server Components)
βββ Client Components (Interactive UI)
βββ API Route Handlers
βββ WebSocket Client Context
API Layer
βββ RESTful Endpoints
βββ Socket.io Server
βββ Prisma Client
βββ Database Connection Pool
- Users: Student & Mentor profiles with skills
- Connections: Many-to-many mentor-student relationships
- Messages: Real-time chat history with read receipts
- SkillGroups: Learning spaces for content sharing
- Notes: File attachments and learning materials
- Reviews: Rating and feedback system
- Node.js 18+
- PostgreSQL 14+
- npm or yarn
# Clone the repository
git clone https://github.com/yourusername/skillsync.git
cd skillsync
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env.local
# Configure your .env.local file
DATABASE_URL="postgresql://user:password@localhost:5432/skillsync"
NEXTAUTH_SECRET="your-secret-key"
NEXTAUTH_URL="http://localhost:3000"
# Run database migrations
npx prisma migrate dev
npx prisma generate
# Seed the database (optional)
npx prisma db seed
# Start the development server
npm run devVisit http://localhost:3000 to see your application running! π
skillsync/
βββ app/
β βββ api/ # API routes
β β βββ connections/ # Connection management
β β βββ messages/ # Chat functionality
β β βββ reviews/ # Review system
β β βββ skill-groups/ # Learning groups
β β βββ users/ # User management
β βββ components/ # Reusable components
β β βββ ChatWindow.js # Real-time chat
β β βββ LearningSpace.js # Content sharing
β β βββ icons.js # SVG icons
β βββ context/ # React Context
β β βββ SocketContext.js # WebSocket management
β βββ dashboard/ # Dashboard pages
β β βββ student/ # Student interface
β β βββ mentor/ # Mentor interface
β βββ lib/ # Utilities
β βββ prisma.js # Database client
βββ prisma/
β βββ schema.prisma # Database schema
β βββ migrations/ # Database migrations
βββ public/
β βββ uploads/ # User-uploaded files
βββ server.js # Socket.io server
Create a .env.local file in the root directory:
# Database
DATABASE_URL="postgresql://user:password@localhost:5432/skillsync"
# Authentication
NEXTAUTH_SECRET="your-super-secret-key-change-this"
NEXTAUTH_URL="http://localhost:3000"
# Socket.io (if using separate server)
SOCKET_PORT=3001
# File Upload
MAX_FILE_SIZE=10485760 # 10MB in bytes
ALLOWED_FILE_TYPES=".pdf,.doc,.docx,.txt,.jpg,.png"Our database uses Prisma ORM with PostgreSQL. Key models include:
- User - Student and mentor profiles
- Skill - Skills taxonomy
- Connection - Mentor-student relationships
- Message - Chat messages
- SkillGroup - Learning groups
- Note - Shared learning materials
- Review - Ratings and feedback
POST /api/auth/login
POST /api/auth/register
POST /api/auth/logoutGET /api/users // List all users
GET /api/users/:id // Get user profile
PATCH /api/users/:id // Update userGET /api/connections?userId=:id // Get connections
POST /api/connections // Create connection
PATCH /api/connections/:id // Update statusGET /api/messages?connectionId=:id // Get chat history
POST /api/messages // Send messageGET /api/reviews?mentorId=:id // Get mentor reviews
POST /api/reviews // Submit reviewGET /api/skill-groups?mentorId=:id // Get mentor's groups
POST /api/skill-groups // Create group
GET /api/skill-groups/:id // Get group detailsSkillSync uses Socket.io for real-time features:
socket.emit('join-room', { userId, connectionId });
socket.emit('send-message', { connectionId, message });
socket.emit('typing', { connectionId });socket.on('message-notification', (data) => { /* New message */ });
socket.on('connection-update', (data) => { /* Status change */ });
socket.on('note-added', (data) => { /* New learning material */ });- Sign up and select skills you want to learn
- Browse mentors using search and filters
- Send connection requests to mentors
- Chat in real-time once connected
- Access learning materials from skill groups
- Leave reviews to help the community
- Sign up and showcase your expertise
- Review connection requests from students
- Create skill groups for organized teaching
- Upload learning materials (notes, files, resources)
- Chat with students to answer questions
- Build your reputation through reviews
# Run unit tests
npm run test
# Run integration tests
npm run test:integration
# Run e2e tests
npm run test:e2e
# Generate test coverage
npm run test:coverage# Install Vercel CLI
npm i -g vercel
# Deploy
vercel
# Deploy to production
vercel --prod# Build image
docker build -t skillsync .
# Run container
docker run -p 3000:3000 skillsync- Set up PostgreSQL database
- Configure environment variables
- Run migrations:
npx prisma migrate deploy - Start the application
We love contributions! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow the existing code style
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting PR
- π Bug fixes
- β¨ New features
- π Documentation improvements
- π¨ UI/UX enhancements
- π Internationalization
- βΏ Accessibility improvements
- Video call integration
- Calendar scheduling system
- Mobile app (React Native)
- Advanced analytics dashboard
- AI-powered mentor recommendations
- Group learning sessions
- Certification system
- Payment integration for premium features
- Multi-language support
- Progressive Web App (PWA)
- Whiteboard collaboration
- Course creation platform
- Community forums
- Gamification and achievements
- API for third-party integrations
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2024 SkillSync
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.
Next.js - The React framework for production
Prisma - Next-generation ORM
Socket.io - Real-time engine
React Hot Toast - Notification system
All our amazing contributors
If you find SkillSync helpful, please consider:
β Starring the repository
π Reporting bugs
π‘ Suggesting new features
π’ Sharing with others
Made with β€οΈ by Upasana


