SkillSwap is a comprehensive MERN stack web platform designed to facilitate collaborative learning and skill development through peer-to-peer guidance. The platform emphasizes reciprocal knowledge exchange, industrial-grade security features, and user-friendly interfaces to create a dynamic learning environment where users can connect, learn from each other, and grow together.
In today's fast-paced world, the acquisition of new skills is essential for personal and professional growth. However, traditional learning methods often lack interaction and dynamism. SkillSwap was created to address this gap by providing a platform where users can:
-
Connect with skilled professionals across various domains
-
Learn through direct mentorship and guidance
-
Share their expertise with others
-
Build meaningful professional relationships
-
Grow together in a supportive community
Authentication & Security
- Google OAuth 2.0 Integration: Secure login with Google accounts
- JWT Token Authentication: Stateless authentication with JSON Web Tokens
- Role-based Access Control: User and admin roles with different permissions
- Session Management: Secure cookie-based session handling
- Password Protection: App password for email notifications
User Management
- User Registration & Login: Multiple authentication methods
- Profile Management: Comprehensive user profiles with skills, education, and projects
- Profile Customization: Edit profile information, skills, and portfolio links
- User Rating System: Community-driven rating and feedback system
- Account Moderation: Admin tools for user management and banning
Discovery & Connection
- Smart User Discovery: Browse and discover users based on skills and interests
- Featured Profiles: Curated selection of top-rated users on the home page
- Skill-based Filtering: Find users by specific skills or learning goals
- Connection Requests: Send and manage connection requests
- Email Notifications: Automated email alerts for connection requests
Real-time Communication
- Live Chat System: Real-time messaging using Socket.io
- Connection Management: Accept/reject connection requests
- Chat History: Persistent message storage and retrieval
- Online Status: Real-time user presence indicators
- Message Notifications: Instant message delivery
Rating & Feedback System
- User Ratings: Rate other users based on learning experiences
- Feedback Collection: Detailed feedback and reviews
- Rating Display: Public rating display on user profiles
- Quality Assurance: Maintain platform quality through ratings
Safety & Moderation
- User Reporting: Report inappropriate behavior or content
- Admin Dashboard: Comprehensive moderation tools
- Content Moderation: Review and manage reported content
- User Banning: Temporary or permanent user restrictions
- Safety Features: Protect users from harassment
User Experience
- Responsive Design: Optimized for all devices and screen sizes
- Modern UI/UX: Clean, intuitive interface with smooth animations
- Loading States: User-friendly loading indicators
- Error Handling: Comprehensive error messages and fallbacks
- Toast Notifications: Real-time feedback for user actions
Analytics & Insights
- User Analytics: Track user engagement and platform usage
- Performance Metrics: Monitor system performance
- Admin Dashboard: Comprehensive analytics for administrators
- Data Visualization: Charts and graphs for insights
Frontend/
βββ src/
β βββ Components/ # Reusable UI components
β βββ Pages/ # Main application pages
β β βββ LandingPage/ # Home page with featured profiles
β β βββ Discover/ # User discovery and browsing
β β βββ Login/ # Authentication pages
β β βββ Register/ # User registration
β β βββ Profile/ # User profile viewing
β β βββ EditProfile/ # Profile editing
β β βββ Chats/ # Real-time messaging
β β βββ Rating/ # Rating and feedback system
β β βββ Report/ # User reporting
β β βββ Admin/ # Admin dashboard and tools
β β βββ AboutUs/ # About page
β β βββ NotFound/ # 404 error page
β βββ util/ # Utility functions and hooks
β βββ App.jsx # Main application component
Backend/
βββ src/
β βββ controllers/ # Business logic handlers
β βββ models/ # Database schemas
β β βββ user.model.js # User data model
β β βββ chat.model.js # Chat room model
β β βββ message.model.js # Message model
β β βββ request.model.js # Connection request model
β β βββ rating.model.js # Rating model
β β βββ report.model.js # Report model
β β βββ unRegisteredUser.model.js # Guest user model
β βββ routes/ # API route definitions
β βββ middlewares/ # Custom middleware functions
β βββ utils/ # Utility functions
β βββ config/ # Configuration files
β βββ app.js # Express application setup
- Basic Info: username, name, email, picture
- Role Management: user/admin roles with permissions
- Skills: skillsProficientAt, skillsToLearn arrays
- Education: institution, degree, dates, scores
- Projects: title, description, tech stack, links
- Social Links: LinkedIn, GitHub, portfolio
- Rating System: community rating and feedback
- Moderation: ban status, reasons, timestamps
- Chat Rooms: User-to-user chat sessions
- Messages: Real-time message storage and delivery
- Connection Requests: Pending, accepted, rejected states
- Ratings: User-to-user rating system
- Reports: Content and behavior reporting
- Moderation: Admin review and action system
Core Functionality
- Google OAuth Integration: Secure third-party authentication
- JWT Token Management: Stateless session handling
- Role-based Access: Different permissions for users and admins
- Session Security: Secure cookie management
- Smart Matching: Algorithm-based user recommendations
- Skill-based Search: Find users by specific skills
- Connection Requests: Send and manage connection requests
- Email Notifications: Automated request notifications
- Socket.io Integration: Real-time bidirectional communication
- Live Chat: Instant messaging between connected users
- Message Persistence: Database storage for chat history
- Online Status: Real-time presence indicators
- Comprehensive Profiles: Skills, education, projects, social links
- Profile Editing: Update personal information and skills
- Portfolio Showcase: Display projects and achievements
- Rating Display: Public rating and feedback visibility
- User Ratings: Rate other users based on interactions
- Feedback Collection: Detailed review system
- Quality Metrics: Maintain platform quality through ratings
- Rating Display: Public rating visibility
- User Reporting: Report inappropriate behavior
- Admin Tools: Comprehensive moderation dashboard
- Content Review: Review and manage reported content
- User Management: Ban/unban users with reasons
- User Management: View, edit, and ban users
- Content Moderation: Review and manage reports
- Analytics: Platform usage and performance metrics
- System Settings: Configure platform parameters
- React.js 18.2.0: Modern UI library with hooks
- React Router: Client-side routing and navigation
- React Bootstrap: UI component library
- Axios: HTTP client for API communication
- Socket.io-client: Real-time communication
- React Toastify: Toast notifications
- Context API: State management
- Node.js: JavaScript runtime environment
- Express.js: Web application framework
- MongoDB: NoSQL database with Mongoose ODM
- Socket.io: Real-time bidirectional communication
- Passport.js: Authentication middleware
- JWT: JSON Web Token authentication
- Nodemailer: Email service integration
- Docker: Containerization for consistent deployment
- Docker Compose: Multi-container orchestration
- Google Cloud Console: OAuth 2.0 configuration
- MongoDB Atlas: Cloud database hosting
- Cloudinary: Image and file storage
- VS Code: Integrated development environment
- Git & GitHub: Version control and collaboration
- Postman: API testing and documentation
- MongoDB Compass: Database management tool
-
Landing Page (
/)- Featured user profiles
- Platform introduction
- Call-to-action buttons
- Responsive hero section
-
Discover Page (
/discover)- User browsing and discovery
- Skill-based filtering
- Side panel navigation
- Profile cards with actions
-
Login/Register (
/login,/register)- Google OAuth integration
- Form-based registration
- Password recovery
-
Profile Pages (
/profile/:username)- Comprehensive user profiles
- Skills and education display
- Project portfolio
- Rating and feedback
-
Edit Profile (
/edit_profile)- Profile information editing
- Skills management
- Education and project updates
- Social links configuration
-
Chats (
/chats)- Real-time messaging interface
- Connection request management
- Chat history
- Online status indicators
-
Rating System (
/rating/:username)- Rate other users
- Provide feedback
- Review system
-
Reporting (
/report/:username)- Report inappropriate behavior
- Content moderation
- Safety features
-
Admin Dashboard (
/admin/dashboard)- Platform overview
- Key metrics
- Quick actions
-
User Management (
/admin/users)- User listing and search
- Ban/unban functionality
- User details management
-
Reports Management (
/admin/reports)- Review reported content
- Take moderation actions
- Report history
-
Analytics (
/admin/analytics)- Platform usage metrics
- User engagement data
- Performance insights
-
Settings (
/admin/settings)- Platform configuration
- System parameters
- Feature toggles
- Node.js (v18 or higher)
- MongoDB Atlas account
- Google Cloud Console account (for OAuth)
- Email service (Gmail with app password)
- Cloudinary account (for image storage)
- Clone the Repository
git clone https://github.com/Harsh-1Byte/Skill_Match.git
cd SkillSwap- Frontend Setup
cd Frontend
npm installCreate .env file:
VITE_LOCALHOST = http://localhost:8000
VITE_SERVER_URL = <your-deployment-link>Start frontend:
npm run dev- Backend Setup
cd ../Backend
npm installCreate .env file:
PORT = 8000
CORS_ORIGIN = *
MONGODB_URI = mongodb+srv://<username>:<password>@cluster0.<project>.mongodb.net
CLOUDINARY_CLOUD_NAME = <your-cloudinary-cloud-name>
CLOUDINARY_API_KEY = <your-cloudinary-api-key>
CLOUDINARY_API_SECRET = <your-cloudinary-api-secret>
GOOGLE_CLIENT_ID = <your-google-client-id>
GOOGLE_CLIENT_SECRET = <your-google-client-secret>
GOOGLE_CALLBACK_URL = http://localhost:8000/auth/google/callback
JWT_SECRET = <your-jwt-secret>
EMAIL_ID = <your-email-id>
APP_PASSWORD = <your-app-password>Start backend:
npm run devVITE_LOCALHOST: Local backend URLVITE_SERVER_URL: Production backend URL
PORT: Server port (default: 8000)CORS_ORIGIN: CORS configurationMONGODB_URI: MongoDB connection stringCLOUDINARY_*: Cloudinary configuration for image storageGOOGLE_*: Google OAuth 2.0 credentialsJWT_SECRET: JWT signing secretEMAIL_ID: Email service accountAPP_PASSWORD: Email app password
POST /auth/register- User registrationPOST /auth/login- User loginGET /auth/google- Google OAuth loginGET /auth/logout- User logout
GET /user/profile- Get user profilePUT /user/updateProfile- Update user profileGET /user/featured- Get featured usersGET /user/discover- Discover usersGET /user/:username- Get specific user profile
GET /chat- Get user chatsPOST /message/sendMessage- Send messageGET /message/getMessages/:chatId- Get chat messages
POST /request/create- Create connection requestGET /request/getRequests- Get pending requestsPOST /request/acceptRequest- Accept requestPOST /request/rejectRequest- Reject request
POST /rating/createRating- Create user ratingGET /rating/getRatings/:username- Get user ratings
POST /report/createReport- Create user reportGET /report/getReports- Get reports (admin)
GET /admin/dashboard- Admin dashboardGET /admin/users- Get all usersPUT /admin/banUser- Ban userGET /admin/analytics- Platform analytics
- Color Palette: Pink (#EF7C8E), Mint (#B6E2D3), Cream (#FAE8E0)
- Typography: Modern, readable fonts with proper hierarchy
- Spacing: Consistent spacing system using Bootstrap utilities
- Shadows: Subtle shadows for depth and elevation
- Mobile First: Optimized for mobile devices
- Tablet Support: Responsive layouts for tablets
- Desktop Experience: Enhanced features for larger screens
- Touch Friendly: Optimized for touch interactions
- Loading States: Smooth loading indicators
- Error Handling: User-friendly error messages
- Success Feedback: Toast notifications for actions
- Navigation: Intuitive navigation with breadcrumbs
- Accessibility: WCAG compliant design elements
- JWT Tokens: Secure token-based authentication
- Google OAuth: Third-party authentication with Google
- Password Security: Secure password handling
- Session Management: Secure session handling
- Input Validation: Server-side input validation
- SQL Injection Prevention: Parameterized queries
- XSS Protection: Cross-site scripting prevention
- CSRF Protection: Cross-site request forgery protection
- Rate Limiting: Prevent API abuse
- CORS Configuration: Proper cross-origin resource sharing
- Request Validation: Validate all incoming requests
- Error Handling: Secure error messages
- Code Splitting: Lazy loading of components
- Memoization: React.memo for performance
- Bundle Optimization: Optimized build process
- Image Optimization: Compressed images and lazy loading
- Database Indexing: Optimized database queries
- Caching: Redis caching for frequently accessed data
- Connection Pooling: Efficient database connections
- Compression: Gzip compression for responses
- Socket.io Optimization: Efficient real-time communication
- Message Batching: Batch message processing
- Connection Management: Efficient socket connections
- Unit Tests: Component testing with Jest
- Integration Tests: API integration testing
- E2E Tests: End-to-end testing with Cypress
- API Tests: REST API testing
- Unit Tests: Controller and service testing
- Integration Tests: Database integration testing
- Response Times: API response time tracking
- Error Rates: Error monitoring and alerting
- User Metrics: User engagement tracking
- System Health: Server and database monitoring
- Fork the Repository: Create your own fork
- Create Feature Branch:
git checkout -b feature/amazing-feature - Make Changes: Implement your feature
- Test Thoroughly: Ensure all tests pass
- Submit Pull Request: Create a detailed PR
- ESLint: Follow JavaScript coding standards
- Prettier: Consistent code formatting
- Commit Messages: Conventional commit format
- Documentation: Update documentation for changes
This project is licensed under the MIT License - see the LICENSE file for details.
- Manish Dangi - Backend Developer
- Harshwardhan - Frontend Developer
- Google OAuth: For secure authentication
- MongoDB Atlas: For cloud database hosting
- Cloudinary: For image and file storage
- Socket.io: For real-time communication
- React Bootstrap: For UI components
- Open Source Community: For various libraries and tools