{"id":27326457,"url":"https://github.com/xoxoharsh/skillswap","last_synced_at":"2025-10-14T05:15:50.757Z","repository":{"id":223562420,"uuid":"760820175","full_name":"XoXoHarsh/SkillSwap","owner":"XoXoHarsh","description":"SkillSwap is a 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.","archived":false,"fork":false,"pushed_at":"2024-12-29T15:29:35.000Z","size":5152,"stargazers_count":22,"open_issues_count":0,"forks_count":15,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-14T05:15:50.392Z","etag":null,"topics":["docker","google-oauth2","socket-io"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/XoXoHarsh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-20T20:27:33.000Z","updated_at":"2025-10-10T16:49:56.000Z","dependencies_parsed_at":"2024-12-29T16:23:50.390Z","dependency_job_id":"47d556a5-8ef9-489f-90eb-bf4adfa56672","html_url":"https://github.com/XoXoHarsh/SkillSwap","commit_stats":null,"previous_names":["harshsharma20503/skillswap","xoxoharsh/skillswap"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/XoXoHarsh/SkillSwap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XoXoHarsh%2FSkillSwap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XoXoHarsh%2FSkillSwap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XoXoHarsh%2FSkillSwap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XoXoHarsh%2FSkillSwap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/XoXoHarsh","download_url":"https://codeload.github.com/XoXoHarsh/SkillSwap/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XoXoHarsh%2FSkillSwap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279018015,"owners_count":26086237,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","google-oauth2","socket-io"],"created_at":"2025-04-12T11:17:50.111Z","updated_at":"2025-10-14T05:15:50.752Z","avatar_url":"https://github.com/XoXoHarsh.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SkillSwap\n\nSkillSwap is a 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.\n\n## Motivation\n\nIn 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 learn from each other's experiences in a collaborative and supportive community.\n\n## Features\n\n- `Peers' Connection`:  chat interface enable direct communication after connecting request and acceptance and hands-on guidance.\n- `Industrial Security Features`: Utilizes Google OAuth 2.0 authentication and JSON Web Tokens (JWT) verification for database security.\n- `Rating and Feedback System`: Users can rate and give feedback on guidance sessions, enhancing credibility and accountability.\n- `Responsive Layout`: Ensures optimal usability across various devices for an enhanced learning experience.\n\n## Technologies Used\n\n- `Frontend`: React.js, React Router, Context API, React-Bootstrap, Axios, React-Toastify, Socket.io-client.\n- `Backend`: Node.js, Express.js, MongoDB (MongoDB Atlas), Mongoose, Socket.io, JSON Web Token (JWT), Passport.js.\n- `Deployment`: Docker and Docker Compose\n- `Tools`: Google Cloud Console (OAuth), MongoDB Compass, Postman, Docker, Docker Compose, VSCode, Git, GitHub.\n\n## Screenshots\n\nSee the screenshots of the project in the screenshots folder.\n\n## Installation\n\nTo run SkillSwap locally, follow these steps:\n\n### Prerequisites\n\n1. For Google OAuth, know how to obtain the Google OAuth credentials and configure the redirect and allowed origins routes in the Google Cloud Console.\n2. Know how to obtain the connection link of the MongoDB Atlas database.\n3. For Nodemailer, you should know how to obtain the app password.\n4. Familiarity with working on Node.js and React projects is required.\n\n### Clone the Repo\n\n```bash\ngit clone https://github.com/HarshSharma20503/SkillSwap\ncd SkillSwap\n```\n\n### Frontend Setup\n\n```bash\ncd Frontend; npm install\n```\n\nCreate .env file in the frontend and write the following:\n\n```env\nVITE_LOCALHOST = http://localhost:8000\nVITE_SERVER_URL = \u003cyour deployment link\u003e\n```\n\nRun frontend\n\n```bash\nnpm run dev\n```\n\nThe frontend will be running on `http://localhost:5173`\n\n### Backend Setup\n\n```bash\ncd ../Backend; npm install\n```\n\nCreate .env file in the frontend and write the following:\n\n```env\nPORT = 8000\nCORS_ORIGIN = *\nMONGODB_URI = mongodb+srv://\u003cyour-username\u003e:\u003cyour-password\u003e@cluster0.\u003cyour-project\u003e.mongodb.net\n\nCLOUDINARY_CLOUD_NAME = \u003cyour-cloudinary-cloud-name\u003e\nCLOUDINARY_API_KEY = \u003cyour-cloudinary-api-key\u003e\nCLOUDINARY_API_SECRET = \u003cyour-cloudinary-api-key\u003e\n\nGOOGLE_CLIENT_ID = \u003cyour-google-client-id\u003e \nGOOGLE_CLIENT_SECRET = \u003cyour-google-client-secret\u003e\nGOOGLE_CALLBACK_URL=http://localhost:8000/auth/google/callback\n\nJWT_SECRET = \u003cyour-jwt-secret\u003e\n\nEMAIL_ID = \u003cyour-email-id\u003e\nAPP_PASSWORD = \u003cyour-app-password\u003e\n```\n\nRun backend\n\n```bash\nnpm run dev\n```\n\nThe frontend will be running on `http://localhost:8000`\n\n### Install and Setup through Docker\n\nCreate a docker-compose.yml file in SkillSwap folder. Write the following in it.\n\n```yml\nversion: '3'\n\nservices:\n  backend:\n    build:\n      context: .\n      dockerfile: Dockerfile.backend\n      args:\n        PORT: 8000\n        CORS_ORIGIN: \"*\"\n        MONGODB_URI: \"mongodb+srv://\u003cyour-username\u003e:\u003cyour-password\u003e@cluster0.\u003cyour-project\u003e.mongodb.net\"\n        CLOUDINARY_CLOUD_NAME: \"\u003cyour-cloudinary-cloud-name\u003e\"\n        CLOUDINARY_API_KEY: \"\u003cyour-cloudinary-api-key\u003e\"\n        CLOUDINARY_API_SECRET: \"\u003cyour-cloudinary-api-key\u003e\"\n        GOOGLE_CLIENT_ID: \"\u003cyour-google-client-id\u003e\"\n        GOOGLE_CLIENT_SECRET: \"\u003cyour-google-client-secret\u003e\"\n        GOOGLE_CALLBACK_URL: \"http://localhost:8000/auth/google/callback\"\n        JWT_SECRET: \"\u003cyour-jwt-secret\u003e\"\n    ports:\n      - \"8000:8000\"\n\n  frontend:\n    build:\n      context: .\n      dockerfile: Dockerfile.frontend\n      args:\n        VITE_LOCALHOST: \"http://localhost:8000\"\n        VITE_SERVER_URL = \"\u003cyour-deployment-link\u003e\"\n    ports:\n      - \"5173:5173\"\n```\n\nRun the docker compose file by using the following command which will run both frontend and backend.\n\n```bash\nsudo docker-compose up\n```\n\nTo remove the docker images use the following command\n\n```bash\nsudo docker-compose down --rmi all\n```\n\nNow you can run the website on `http://localhost:5173`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxoxoharsh%2Fskillswap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxoxoharsh%2Fskillswap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxoxoharsh%2Fskillswap/lists"}