{"id":26190329,"url":"https://github.com/karan-develops/campus-connect","last_synced_at":"2026-04-18T20:33:04.186Z","repository":{"id":274070580,"uuid":"921243948","full_name":"Karan-develops/Campus-Connect","owner":"Karan-develops","description":"This is my first open source project, integrating stuff \u0026 techs. Contributions are welcomed 😊🎗️. Give Repo a Star ⭐.","archived":false,"fork":false,"pushed_at":"2025-09-05T08:51:30.000Z","size":827,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-05T10:25:59.670Z","etag":null,"topics":["campus-network","college-students","contribute","fullstack","nextjs","open-source"],"latest_commit_sha":null,"homepage":"https://campus-connect-karan.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Karan-develops.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":"CONTRIBUTING.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-23T15:55:37.000Z","updated_at":"2025-09-05T08:51:33.000Z","dependencies_parsed_at":"2025-02-22T13:26:05.786Z","dependency_job_id":"4ea50682-36da-4d93-8259-186be408e491","html_url":"https://github.com/Karan-develops/Campus-Connect","commit_stats":null,"previous_names":["karan-develops/campus-compass","karan-develops/campus-connect"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Karan-develops/Campus-Connect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Karan-develops%2FCampus-Connect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Karan-develops%2FCampus-Connect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Karan-develops%2FCampus-Connect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Karan-develops%2FCampus-Connect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Karan-develops","download_url":"https://codeload.github.com/Karan-develops/Campus-Connect/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Karan-develops%2FCampus-Connect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31984136,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"ssl_error","status_checked_at":"2026-04-18T20:23:29.375Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["campus-network","college-students","contribute","fullstack","nextjs","open-source"],"created_at":"2025-03-12T00:53:27.098Z","updated_at":"2026-04-18T20:33:04.168Z","avatar_url":"https://github.com/Karan-develops.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Campus Connect\n\n## Table of Contents\n\n- [Introduction](#introduction)\n- [Features](#features)\n- [Technologies Used](#technologies-used)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Introduction\n\nCampus Connect is a dynamic platform designed to streamline and enhance campus life for students. Built with Next.js, TypeScript, Prisma, and Neon Postgres, it provides a seamless experience for connecting with peers, exploring campus resources, and staying updated with important events.\n\nThe platform features a 'Peers' page, where students can easily discover and connect with fellow users. To ensure efficiency, the system optimally checks existing connections, displaying relevant statuses like 'Connect' or 'Already Connected' in real time.\n\nWith a structured backend architecture and efficient state management using Zustand, Campus Connect aims to offer a smooth, scalable, and user-friendly experience for students navigating their campus ecosystem.\n\n![banner](https://raw.githubusercontent.com/Karan-develops/Campus-Connect/refs/heads/main/App.png)\n\n## Features\n\n- User authentication and authorization\n- Profile management for Users\n- Connect with Peers \u0026 Grow your Network\n- Send Message \u0026 Chat with Peers\n- Event scheduling and notifications\n- Discussion forums and messaging\n- Course Details and Forms\n- Brilliant UI \u0026 UX\n- Send Real Application by Filling Form (Secured By ZOD)\n- Create \u0026 Organize Clubs, Sports, Events\n- See Your Creations\n- ShowCase your Projects\n- Skill Exchange Page (Offer \u0026 Teach Skills)\n\n## 📚 Tech Stack\n\n- **Frontend (Next Full Stack):**\n  - React.js\n  - Next.js\n  - Shadcn-ui\n  - TailwindCSS\n  - TypeScript\n  - Zod - Form Validation\n  - Framer-motion\n  - Clerk\n- **State Management:**\n  - Zustand\n- **Backend:**\n  - Node.js\n  - Prisma\n  - Express-JS\n  - Mongoose\n  - TypeScript\n- **Database:**\n  - Neon\n  - PostgreSQL\n  - MongoDB\n- **Version Control:**\n  - Git\n\n```\n## 📁 File Structure :\nDirectory structure:\n└── karan-develops-campus-connect/\n    ├── Readme.md\n    ├── CONTRIBUTING.md\n    ├── LICENCE\n    ├── backend/\n    │   ├── index.ts\n    │   ├── package-lock.json\n    │   ├── package.json\n    │   ├── tsconfig.json\n    │   ├── .gitignore\n    │   ├── controllers/\n    │   │   ├── academicInfo.controller.ts\n    │   │   ├── applyForm.controller.ts\n    │   │   ├── contactInfo.controller.ts\n    │   │   ├── demoSportsData.controller.ts\n    │   │   └── placement.controller.ts\n    │   ├── db/\n    │   │   └── connectDb.ts\n    │   ├── models/\n    │   │   ├── academicData.models.ts\n    │   │   ├── applyForm.models.ts\n    │   │   ├── contactInfo.models.ts\n    │   │   ├── demoPlacements.models.ts\n    │   │   └── demoSportsProgramData.models.ts\n    │   ├── routes/\n    │   │   ├── academicInfo.route.ts\n    │   │   ├── applyForm.route.ts\n    │   │   ├── contactInfo.route.ts\n    │   │   ├── demoSportsData.route.ts\n    │   │   └── placement.route.ts\n    │   └── scripts/\n    │       ├── demoAcademicData.seed.ts\n    │       ├── demoPlacements.seed.ts\n    │       ├── demoSportsProgramData.seed.ts\n    │       └── data/\n    │           ├── demoAcaData.ts\n    │           └── sportsProgramData.ts\n    └── frontend/\n        ├── README.md\n        ├── components.json\n        ├── eslint.config.mjs\n        ├── middleware.ts\n        ├── next.config.ts\n        ├── package-lock.json\n        ├── package.json\n        ├── postcss.config.mjs\n        ├── tailwind.config.ts\n        ├── tsconfig.json\n        ├── .gitignore\n        ├── actions/\n        │   ├── extraUser.actions.ts\n        │   ├── message.actions.ts\n        │   ├── peers.actions.ts\n        │   ├── search.actions.ts\n        │   ├── skills.actions.ts\n        │   └── user.actions.ts\n        ├── app/\n        │   ├── error.tsx\n        │   ├── globals.css\n        │   ├── layout.tsx\n        │   ├── not-found.tsx\n        │   ├── (auth)/\n        │   │   ├── layout.tsx\n        │   │   ├── forgot-password/\n        │   │   │   └── page.tsx\n        │   │   ├── sign-in/\n        │   │   │   └── page.tsx\n        │   │   └── sign-up/\n        │   │       └── page.tsx\n        │   ├── (root)/\n        │   │   ├── layout.tsx\n        │   │   ├── page.tsx\n        │   │   ├── academics/\n        │   │   │   ├── academics-content.tsx\n        │   │   │   ├── page.tsx\n        │   │   │   └── [program]/\n        │   │   │       ├── learn-more-content.tsx\n        │   │   │       └── page.tsx\n        │   │   ├── admissions/\n        │   │   │   ├── admissions-content.tsx\n        │   │   │   └── page.tsx\n        │   │   ├── apply/\n        │   │   │   ├── application-form.tsx\n        │   │   │   └── page.tsx\n        │   │   ├── apply-success/\n        │   │   │   └── page.tsx\n        │   │   ├── campus-life/\n        │   │   │   ├── clubs/\n        │   │   │   │   ├── club-content.tsx\n        │   │   │   │   ├── page.tsx\n        │   │   │   │   └── [id]/\n        │   │   │   │       ├── club-details.tsx\n        │   │   │   │       └── page.tsx\n        │   │   │   ├── create/\n        │   │   │   │   ├── create-content.tsx\n        │   │   │   │   └── page.tsx\n        │   │   │   ├── events/\n        │   │   │   │   ├── events-content.tsx\n        │   │   │   │   └── page.tsx\n        │   │   │   └── sports/\n        │   │   │       ├── page.tsx\n        │   │   │       └── sports-content.tsx\n        │   │   ├── contact/\n        │   │   │   ├── contact-content.tsx\n        │   │   │   └── page.tsx\n        │   │   ├── legal/\n        │   │   │   ├── privacy-policy/\n        │   │   │   │   └── page.tsx\n        │   │   │   └── terms-of-service/\n        │   │   │       └── page.tsx\n        │   │   ├── messages/\n        │   │   │   └── [identifier]/\n        │   │   │       ├── messages-content.tsx\n        │   │   │       └── page.tsx\n        │   │   ├── my-creations/\n        │   │   │   ├── my-creations-content.tsx\n        │   │   │   └── page.tsx\n        │   │   ├── peers/\n        │   │   │   ├── login-page.tsx\n        │   │   │   ├── page.tsx\n        │   │   │   ├── peers-content.tsx\n        │   │   │   └── skill-exchange/\n        │   │   │       ├── page.tsx\n        │   │   │       ├── skill-exchange-content.tsx\n        │   │   │       └── listing/\n        │   │   │           └── [id]/\n        │   │   │               ├── ListingContent.tsx\n        │   │   │               └── page.tsx\n        │   │   ├── placements/\n        │   │   │   ├── page.tsx\n        │   │   │   └── placements-content.tsx\n        │   │   ├── profile/\n        │   │   │   ├── profile-content.tsx\n        │   │   │   └── [identifier]/\n        │   │   │       └── page.tsx\n        │   │   └── search/\n        │   │       ├── page.tsx\n        │   │       ├── search-input.tsx\n        │   │       └── search-results.tsx\n        │   ├── api/\n        │   │   ├── academic-info/\n        │   │   │   └── [name]/\n        │   │   │       └── route.ts\n        │   │   ├── apply/\n        │   │   │   └── route.ts\n        │   │   ├── clubs/\n        │   │   │   ├── route.ts\n        │   │   │   └── [id]/\n        │   │   │       ├── route.ts\n        │   │   │       ├── join/\n        │   │   │       │   └── route.ts\n        │   │   │       └── leave/\n        │   │   │           └── route.ts\n        │   │   ├── contact-info/\n        │   │   │   └── route.ts\n        │   │   ├── create/\n        │   │   │   └── route.ts\n        │   │   ├── messages/\n        │   │   │   └── route.ts\n        │   │   ├── placements/\n        │   │   │   └── route.ts\n        │   │   ├── profile/\n        │   │   │   └── route.ts\n        │   │   ├── skill-exchange/\n        │   │   │   ├── route.ts\n        │   │   │   └── [id]/\n        │   │   │       ├── route.ts\n        │   │   │       ├── comment/\n        │   │   │       │   └── route.ts\n        │   │   │       └── like/\n        │   │   │           └── route.ts\n        │   │   └── sports-info/\n        │   │       └── route.ts\n        │   └── constants/\n        │       ├── academicStreams.constants.ts\n        │       ├── admissions.constants.ts\n        │       ├── club-data.constants.ts\n        │       ├── contact.constants.ts\n        │       ├── events-data.constants.ts\n        │       ├── peersData.constants.ts\n        │       └── skill.constants.ts\n        ├── components/\n        │   ├── AuthProvider.tsx\n        │   ├── CampusMap.tsx\n        │   ├── ConnectWUs.tsx\n        │   ├── CreateForm.tsx\n        │   ├── FAQS.tsx\n        │   ├── Footer.tsx\n        │   ├── Hero2.tsx\n        │   ├── HomeNewFeatures.tsx\n        │   ├── HomePage.tsx\n        │   ├── Loader1.tsx\n        │   ├── Marquee.tsx\n        │   ├── Navbar.tsx\n        │   ├── NavbarWrapper.tsx\n        │   ├── NewHero.tsx\n        │   ├── ThemeProvider.tsx\n        │   ├── ToggleTheme.tsx\n        │   └── ui/\n        │       ├── accordion.tsx\n        │       ├── alert.tsx\n        │       ├── avatar.tsx\n        │       ├── badge.tsx\n        │       ├── button.tsx\n        │       ├── calendar.tsx\n        │       ├── card.tsx\n        │       ├── dialog.tsx\n        │       ├── form.tsx\n        │       ├── input.tsx\n        │       ├── label.tsx\n        │       ├── menubar.tsx\n        │       ├── popover.tsx\n        │       ├── progress.tsx\n        │       ├── select.tsx\n        │       ├── separator.tsx\n        │       ├── switch.tsx\n        │       ├── tabs.tsx\n        │       ├── textarea.tsx\n        │       ├── toast.tsx\n        │       └── toaster.tsx\n        ├── hooks/\n        │   └── use-toast.ts\n        ├── lib/\n        │   ├── prisma.ts\n        │   ├── utils.ts\n        │   ├── validations.ts\n        │   └── store/\n        │       └── authStore.ts\n        ├── prisma/\n        │   ├── schema.prisma\n        │   └── migrations/\n        │       ├── migration_lock.toml\n        │       ├── 20250126121634_mg1/\n        │       │   └── migration.sql\n        │       ├── 20250209091130_campus_life/\n        │       │   └── migration.sql\n        │       ├── 20250211113840_connections/\n        │       │   └── migration.sql\n        │       ├── 20250222120441_skills/\n        │       │   └── migration.sql\n        │       ├── 20250223102327_skill_ex_likes_comments/\n        │       │   └── migration.sql\n        │       ├── 20250223115641_likes_bug_fix/\n        │       │   └── migration.sql\n        │       ├── 20250225141612_clubs/\n        │       │   └── migration.sql\n        │       └── 20250225162823_clubs_fix/\n        │           └── migration.sql\n        ├── public/\n        │   └── images/\n        │   └── og-image.png\n        └── types/\n            └── skill-exchange.ts\n```\n\n### Backend\n\n| Variable      | Description                            |\n| :------------ | :------------------------------------- |\n| `MONGODB_URI` | Database URI                           |\n| `PORT`        | Port number for backend (8080 OR 5000) |\n\n### Next JS\n\n| Varibale                            | Description                                      |\n| :---------------------------------- | :----------------------------------------------- |\n| `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY` | Make a free clerk account (Project)              |\n| `CLERK_SECRET_KEY`                  | Clerk Secret Key                                 |\n| `DATABASE_URL`                      | Database URL from neon again make a free account |\n| `BACKEND_URL`                       | http://localhost:8080                            |\n\n---\n\n---\n\n# 💻Installation\n\n## 🔥 1. Main NextJS\n\nTo run this project locally, follow these steps:\n\n1.  Clone the repository:\n    `git clone https://github.com/Karan-develops/Campus-Connect`\n2.  Navigate to the project directory:\n    `cd frontend`\n3.  Install the dependencies:\n    `npm install`\n4.  Set up environment variables: - Create a `.env` file in the `frontend` directory, - Add the Variables given in above `frontend` Table.\n5.  Start the development server:\n    `npm run dev`\n\n## 🔥 2. Backend For Static Data Fetch\n\nTo run this project locally, follow these steps:\n\n1.  Navigate to the project directory:\n    `cd backend`\n2.  Install the dependencies:\n    `npm install`\n3.  Set up environment variables: - Create a `.env` file in the `backend` directory, - Add the Variables given in above `backend` Table.\n4.  Initialize TypeScript:\n    `npx tsc --init`\n5.  Configure the `outdir` and `src` in `tsconfig` file.\n6.  Seed the MongoDB database:\n    `Run the seed files that have been provided.`\n7.  Start the development server:\n    `npm run dev`\n\n## Usage\n\n- Open your browser and navigate to `http://localhost:3000` for frontend.\n- Open your browser and navigate to `http://localhost:8080` OR `http://localhost:8080` for backend.\n- Register a new account or log in with existing credentials.\n- Explore the features and functionalities of the Campus Project.\n\n## Contributing\n\nContributions are welcome! Please follow these steps to contribute:\n\n1. Fork the repository.\n2. Create a new branch:\n   `git checkout -b feature/your-feature-name`\n3. Make your changes and commit them:\n   `git commit -m \"Add your message\"`\n4. Push to the branch:\n   `git push origin feature/your-feature-name`\n5. Open a pull request.\n\n## 🔒 License\n\nThis repository is open source and under [MIT](https://choosealicense.com/licenses/mit/) License.\n\n--- **_Lets Build \u0026 Grow Together_** **😊** ---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaran-develops%2Fcampus-connect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaran-develops%2Fcampus-connect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaran-develops%2Fcampus-connect/lists"}