├── .github ├── ISSUE_TEMPLATE │ ├── bugs.yml │ ├── docs.yml │ └── featuer.yml ├── pull_request_template.md └── workflows │ └── greetings.yaml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Design └── link.md ├── LICENSE ├── README.md ├── client ├── .env.example ├── .gitignore ├── Dockerfile ├── index.html ├── package-lock.json ├── package.json ├── postcss.config.js ├── public │ ├── _redirects │ ├── books.png │ ├── down_arrw.png │ ├── right_arrw.png │ ├── search.png │ ├── student_Home.png │ ├── vite.svg │ └── wlcmbg.png ├── src │ ├── App.css │ ├── App.jsx │ ├── Components │ │ ├── Auth │ │ │ ├── AuthContext.jsx │ │ │ ├── Feature.jsx │ │ │ ├── Login.jsx │ │ │ └── Signup.jsx │ │ ├── BackToTopButton.jsx │ │ ├── Barplot.jsx │ │ ├── Charts.jsx │ │ ├── CircularPacking.jsx │ │ ├── Contact.jsx │ │ ├── Dashboard.jsx │ │ ├── Disscussion │ │ │ ├── Disscussion.jsx │ │ │ └── SubDisscussion.jsx │ │ ├── Error.jsx │ │ ├── Footer.jsx │ │ ├── LargeModal.jsx │ │ ├── Navbar.jsx │ │ ├── PieChart.jsx │ │ ├── RichText.css │ │ ├── RichText.jsx │ │ ├── Stats.jsx │ │ ├── StatsCard.jsx │ │ ├── Student │ │ │ ├── EditStudent.jsx │ │ │ ├── EditStudentSubject.jsx │ │ │ ├── StudentForm.jsx │ │ │ ├── StudentList.jsx │ │ │ └── StudentSubject.jsx │ │ ├── StudentNavbar.jsx │ │ ├── Subject │ │ │ ├── EditSubject.jsx │ │ │ ├── StudentsForSubject.jsx │ │ │ ├── SubjectForm.jsx │ │ │ └── SubjectList.jsx │ │ ├── SubjectNavbar.jsx │ │ ├── SubjectVideo │ │ │ ├── VideoData.json │ │ │ └── VideoPage.jsx │ │ ├── Syllbus │ │ │ ├── Card.jsx │ │ │ ├── Syllbus.jsx │ │ │ ├── SyllbusCard.jsx │ │ │ └── cardsData.json │ │ ├── SyllbusInfo │ │ │ ├── Info.jsx │ │ │ ├── SyllbusInfo.jsx │ │ │ └── syllabusData.json │ │ ├── data.js │ │ └── pie-chart.module.css │ ├── Pages │ │ ├── AdminPage │ │ │ └── Admin.jsx │ │ ├── AdminRoutes.jsx │ │ ├── ErrorBoundary.jsx │ │ ├── Home.jsx │ │ ├── HomePage.jsx │ │ ├── LearningPath.jsx │ │ ├── Licensing.jsx │ │ ├── PrivacyPolicy.jsx │ │ ├── PrivateRoutes.jsx │ │ ├── ProtectedRoutes.jsx │ │ ├── StudentHome.jsx │ │ ├── StudentVideo.jsx │ │ ├── SubjectHome.jsx │ │ ├── TimelineLearningPath.css │ │ ├── TimelineLearningPath.jsx │ │ └── TreeLearningPath.jsx │ ├── alan.jsx │ ├── assets │ │ ├── Study.png │ │ ├── images │ │ │ └── user.webp │ │ ├── react.svg │ │ └── scripts │ │ │ └── LearningPathData.js │ ├── index.css │ └── main.jsx ├── tailwind.config.js ├── vercel.json └── vite.config.js ├── package-lock.json ├── package.json └── server ├── .env.example ├── Controllers ├── AuthController.js ├── ElectiveSubjectController.js ├── FeedbackController.js ├── StudentController.js ├── StudentElectiveSubjectController.js └── UserController.js ├── Middleware └── AuthMiddleware.js ├── Models ├── ELectiveSubjectModel.js ├── FeedbackModel.js ├── StudentElectiveSubjectModel.js ├── StudentModel.js └── UserModel.js ├── Routes ├── AuthRoutes.js ├── FeedbackRoutes.js ├── StudentElectiveSubjectRoutes.js ├── StudentRoutes.js └── SubjectRoutes.js ├── app.js ├── package-lock.json ├── package.json └── util └── SecretToken.js /.github/ISSUE_TEMPLATE/bugs.yml: -------------------------------------------------------------------------------- 1 | name: 🐞 Bug Report 2 | description: Report a bug found in the ElectiveHub source code 3 | labels: ["bug", "gssoc23"] 4 | body: 5 | - type: textarea 6 | id: description 7 | attributes: 8 | label: Description 9 | description: A brief description of the question or issue, also include what you tried and what didn't work 10 | validations: 11 | required: true 12 | - type: textarea 13 | id: screenshots 14 | attributes: 15 | label: Screenshots 16 | description: Please add screenshots if applicable (recommended) 17 | validations: 18 | required: false 19 | - type: textarea 20 | id: extrainfo 21 | attributes: 22 | label: Additional information 23 | description: Is there anything else we should know about this bug? 24 | validations: 25 | required: false 26 | - type: dropdown 27 | id: browsers 28 | attributes: 29 | label: What browser are you seeing the problem on? 30 | multiple: true 31 | options: 32 | - Firefox 33 | - Chrome 34 | - Safari 35 | - Microsoft Edge 36 | - type: checkboxes 37 | id: no-duplicate-checklist 38 | attributes: 39 | label: "Checklist" 40 | options: 41 | - label: "I have checked the [existing issues](https://github.com/TechNodes2-0/ElectiveHub/issues)" 42 | required: true 43 | 44 | - label: "I have read the [Contributing Guidelines](https://github.com/TechNodes2-0/ElectiveHub/blob/main/CONTRIBUTING.md)" 45 | required: true 46 | 47 | - label: "I want to work on this issue. (optional)" 48 | required: false 49 | 50 | - type: markdown 51 | attributes: 52 | value: | 53 | You can also join the Discord community [here](https://discord.gg/7p4cnGUK) 54 | Feel free to check out other amazing repositories of the ElectiveHub [here](https://github.com/TechNodes2-0) 55 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/docs.yml: -------------------------------------------------------------------------------- 1 | name: 'Documentation 📋' 2 | description: 'Use this form to present your suggestions on how to improve our docs' 3 | title: '[DOCS] ' 4 | labels: ['documenation', 'goal: enhancement'] 5 | 6 | body: 7 | - type: textarea 8 | id: docs_description 9 | attributes: 10 | label: 'Issue Description' 11 | description: 'Please provide a brief summary of the documentation issue you are experiencing or would like to address.' 12 | validations: 13 | required: true 14 | - type: textarea 15 | id: additional_context_docs 16 | attributes: 17 | label: 'Additional Context' 18 | description: 'If there is any additional context or information that would be helpful for addressing the documentation issue, please provide it here.' 19 | 20 | - type: textarea 21 | id: screenshots_examples_docs 22 | attributes: 23 | label: 'Screenshots or Examples (if applicable)' 24 | description: 'Please include relevant screenshots or examples to help illustrate the problem.' 25 | 26 | - type: textarea 27 | id: proposed_solution_docs 28 | attributes: 29 | label: 'Proposed Solution (optional)' 30 | description: 'If you have a proposed solution for the documentation issue, please provide it here. This can be helpful for speeding up the resolution process.' 31 | 32 | - type: checkboxes 33 | id: terms_checklist_docs 34 | attributes: 35 | label: 'Checklist' 36 | description: 'By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/TechNodes2-0/ElectiveHub/blob/main/CODE_OF_CONDUCT.md)' 37 | options: 38 | - label: 'I have checked the existing [issues](https://github.com/TechNodes2-0/ElectiveHub/issues?q=is%3Aissue+)' 39 | required: true 40 | - label: 'I have read the [Contributing Guidelines](https://github.com/TechNodes2-0/ElectiveHub/blob/main/CONTRIBUTING.md)' 41 | required: true 42 | - label: 'I am willing to work on this issue (optional)' 43 | required: false 44 | - type: markdown 45 | attributes: 46 | value: 'Thank you for taking the time to raise this issue! Your input is greatly appreciated.' -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/featuer.yml: -------------------------------------------------------------------------------- 1 | name: ✨ Feature Request 2 | description: Suggest a feature request 3 | title: "[Feat]: " 4 | labels: 5 | - "⭐ goal: addition" 6 | body: 7 | - type: textarea 8 | id: what-feature 9 | attributes: 10 | label: Is your feature request related to a problem? Please describe. 11 | placeholder: Describe it in detail 12 | validations: 13 | required: true 14 | - type: textarea 15 | id: solution 16 | attributes: 17 | label: Describe the solution you'd like. 18 | placeholder: A clear and concise description of what you want to happen. 19 | validations: 20 | required: false 21 | - type: textarea 22 | id: alternative 23 | attributes: 24 | label: Describe alternatives you've considered. 25 | placeholder: A clear and concise description of any alternative solutions or features you've considered. 26 | validations: 27 | required: false 28 | - type: textarea 29 | id: additional-content 30 | attributes: 31 | label: Additional context. 32 | placeholder: Add any other context or screenshots about the feature request here. 33 | validations: 34 | required: false 35 | - type: textarea 36 | id: screenshots 37 | attributes: 38 | label: Show us the magic with screenshots 39 | placeholder: Attach screenshots to visualize your idea 40 | validations: 41 | required: false 42 | - type: checkboxes 43 | id: no-duplicate-checklist 44 | attributes: 45 | label: "Checklist" 46 | options: 47 | - label: "I have checked the [existing issues](https://github.com/TechNodes2-0/ElectiveHub/issues)" 48 | required: true 49 | 50 | - label: "I have read the [Contributing Guidelines](https://github.com/TechNodes2-0/ElectiveHub/blob/main/CONTRIBUTING.md)" 51 | required: true 52 | 53 | - label: "I want to work on this issue. (optional)" 54 | required: false 55 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Current behavior 4 | 5 | 6 | 7 | ## Proposed changes 8 | 9 | 10 | 11 | 12 | ## Checks 13 | 14 | 18 | 19 | - [ ] All commits in this Pull Request are [signed](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits) and Verified by Github. 20 | 21 | -------------------------------------------------------------------------------- /.github/workflows/greetings.yaml: -------------------------------------------------------------------------------- 1 | name: Greetings 2 | 3 | on: [pull_request_target, issues] 4 | 5 | jobs: 6 | greeting: 7 | runs-on: ubuntu-latest 8 | permissions: 9 | issues: write 10 | pull-requests: write 11 | steps: 12 | - uses: actions/first-interaction@v1 13 | with: 14 | repo-token: ${{ secrets.GITHUB_TOKEN }} 15 | issue-message: "Hi there! Thanks for opening this issue. We appreciate your contribution to this open-source project. We aim to respond or assign your issue as soon as possible." 16 | pr-message: "Thank you, ${{ github.actor }}, for creating this pull request and contributing to ElectiveHUB! 💗\n\n The maintainers will review this Pull Request and provide feedback as soon as possible! 😇\nWe appreciate your patience and contribution, Keep up the great work! 😀" 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | .env 3 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | Yash636261. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # **Contributing Guidelines** 📄 2 | 3 | This documentation contains a set of guidelines to help you during the contribution process. 4 | We are happy to welcome all the contributions from anyone willing to improve/add new scripts to this project. 5 | Thank you for helping out and remember, **no contribution is too small.** 6 |
7 | Please note we have a [code of conduct](CODE_OF_CONDUCT.md) please follow it in all your interactions with the project. 8 | 9 | 10 | 11 |
12 | 13 | ## **Need some help regarding the basics?🤔** 14 | 15 | 16 | You can refer to the following articles on basics of Git and Github and also contact the Project Mentors, 17 | in case you are stuck: 18 | 19 | - [Forking a Repo](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) 20 | - [Cloning a Repo](https://help.github.com/en/desktop/contributing-to-projects/creating-an-issue-or-pull-request) 21 | - [How to create a Pull Request](https://opensource.com/article/19/7/create-pull-request-github) 22 | - [Getting started with Git and GitHub](https://towardsdatascience.com/getting-started-with-git-and-github-6fcd0f2d4ac6) 23 | - [Learn GitHub from Scratch](https://docs.github.com/en/get-started/start-your-journey/git-and-github-learning-resources) 24 | 25 |
26 | 27 | ### Alternatively contribute using GitHub Desktop 28 | 29 | 1. **Open GitHub Desktop:** 30 | Launch GitHub Desktop and log in to your GitHub account if you haven't already. 31 | 32 | 2. **Clone the Repository:** 33 | - If you haven't cloned the ElectiveHub repository yet, you can do so by clicking on the "File" menu and selecting "Clone Repository." 34 | - Choose the ElectiveHub repository from the list of repositories on GitHub and clone it to your local machine. 35 | 36 | 3. **Switch to the Correct Branch:** 37 | - Ensure you are on the branch that you want to submit a pull request for. 38 | - If you need to switch branches, you can do so by clicking on the "Current Branch" dropdown menu and selecting the desired branch. 39 | 40 | 4. **Make Changes:** 41 | Make your changes to the code or files in the repository using your preferred code editor. 42 | 43 | 5. **Commit Changes:** 44 | - In GitHub Desktop, you'll see a list of the files you've changed. Check the box next to each file you want to include in the commit. 45 | - Enter a summary and description for your changes in the "Summary" and "Description" fields, respectively. Click the "Commit to " button to commit your changes to the local branch. 46 | 47 | 6. **Push Changes to GitHub:** 48 | After committing your changes, click the "Push origin" button in the top right corner of GitHub Desktop to push your changes to your forked repository on GitHub. 49 | 50 | 7. **Create a Pull Request:** 51 | - Go to the GitHub website and navigate to your fork of the ElectiveHub repository. 52 | - You should see a button to "Compare & pull request" between your fork and the original repository. Click on it. 53 | 54 | 8. **Review and Submit:** 55 | - On the pull request page, review your changes and add any additional information, such as a title and description, that you want to include with your pull request. 56 | - Once you're satisfied, click the "Create pull request" button to submit your pull request. 57 | 58 | 9. **Wait for Review:** 59 | Your pull request will now be available for review by the project maintainers. They may provide feedback or ask for changes before merging your pull request into the main branch of the ElectiveHub repository. 60 | 61 | ⭐️ Support the Project 62 | If you find this project helpful, please consider giving it a star on GitHub! Your support helps to grow the project and reach more contributors. 63 | 64 | ## **Issue Report Process 📌** 65 | 66 | 1. Go to the project's issues. 67 | 2. Give proper description for the issues. 68 | 3. Don't spam to get the assignment of the issue 😀. 69 | 4. Wait for till someone is looking into it !. 70 | 5. Start working on issue only after you got assigned that issue 🚀. 71 | 72 |
73 | 74 | ## **Pull Request Process 🚀** 75 | 76 | 1. Ensure that you have self reviewed your code 😀 77 | 2. Make sure you have added the proper description for the functionality of the code 78 | 3. I have commented my code, particularly in hard-to-understand areas. 79 | 4. Add screenshot it help in review. 80 | 5. Submit your PR by giving the necesarry information in PR template and hang tight we will review it really soon 🚀 81 | 82 |
83 | 84 | # **Thank you for contributing💗** 85 | -------------------------------------------------------------------------------- /Design/link.md: -------------------------------------------------------------------------------- 1 | This is Link for the Design 2 | 3 | https://www.figma.com/file/sbVwuDB2gRnDQrMDSUf2Sc/ElectiveHub?type=design&node-id=77%3A2&mode=design&t=tqPgahkhuUryLlH7-1 4 | 5 | Contact me 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 TechNodes 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ElectiveHub 2 | 3 | ![image](https://github.com/TechNodes2-0/ElectiveHub/assets/85815172/a113ed3c-5611-4eb2-81b4-9896db64cfdc) 4 | 5 | 6 |
7 | 8 | [![Open Source Love](https://badges.frapsoft.com/os/v1/open-source.svg?v=103)](https://github.com/TechNodes2-0/CodeCompanion) 9 | [![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) 10 | [![GitHub issues](https://img.shields.io/github/issues/TechNodes2-0/TechNode-Community-Website.svg)](https://github.com/TechNodes2-0/TechNode-Community-Website/issues) 11 | [![GitHub forks](https://img.shields.io/github/forks/TechNodes2-0/TechNode-Community-Website.svg)](https://github.com/TechNodes2-0/TechNode-Community-Website/network) 12 | [![GitHub stars](https://img.shields.io/github/stars/TechNodes2-0/TechNode-Community-Website.svg)](https://github.com/TechNodes2-0/ElectiveHub/stargazers) 13 | [![Netlify Badge](https://img.shields.io/badge/Netlify-Deployed-brightgreen)](https://electivehub.onrender.com) 14 | 15 | 16 | 17 | ## **Description:** 18 | ElectiveHub is an Education Management System designed to simplify and enhance the management of student information and elective subject selection in educational institutions. It offers a suite of applications for students, teachers, and administrators, providing a user-friendly platform to manage academic processes efficiently. 19 | 20 | ## Table of Contents 21 | 1. [Features](#features) 22 | 2. [Installation](#installation) 23 | 3. [Contributing](#contributing) 24 | 4. [License](#license) 25 | 26 | # Features 27 | 28 | - **Student Information Management:** Add, update, and delete student details, including Student Name, Student ID Number, Email, and Phone Number. 29 | - **Elective Subject Management:** Add, update, and delete elective subjects with details like Elective Subject Name, Description, and Code. 30 | - **Syllabus and Timeline:** Access detailed syllabus information for elective subjects and follow a structured learning timeline. 31 | - **Elective Subject Selection:** Students can choose elective subjects, while teachers can assign them to students. 32 | - **Admin Dashboard:** Visualize data with charts and analytics to make informed decisions about curriculum and student engagement. 33 | 34 | # Maintainers 35 | 36 | 37 | 38 | 39 | 40 | 42 | 43 |
Profile
@Yash636261
Profile
@Nishitbaria
Profile
@VinayakVispute
41 |
Profile
@JayeshYadav99
44 | 45 | 46 | # Creating .env file for client 47 | 48 | A file named .env is required in the client directory of ELECTIVEHUB for storing environment variables used at runtime. It is not a part of the repo and you will have to create it. 49 | 50 | Add the endpoint for accessing electivehub-api service to the variable named "VITE_API_URL" in the .env file. 51 | 52 | VITE_API_URL="http://your-server.com" 53 | 54 | If you are a developer working on your local system, then the URL would be: 55 | 56 | VITE_API_URL="http://localhost:4000" 57 | 58 | 59 | # Creating .env file in server 60 | 61 | A file named .env is required in the server directory of ELECTIVEHUB for storing environment variables used at runtime. It is not a part of the repo and you will have to create it. 62 | 63 | Create the following variables in the .env file and assign there values. 64 | 65 | MONGO_URL 66 | PORT 67 | TOKEN_KEY 68 | 69 | 70 | # Installation 71 | 72 | To get started with ElectiveHub, follow these installation steps: 73 | 74 | 1. Clone the repository to your local machine: 75 | 76 | ``` 77 | git clone https://github.com/TechNodes2-0/ElectiveHub.git 78 | ``` 79 | 80 | 2. Set up the backend by navigating to the server directory: 81 | 82 | ``` 83 | cd server 84 | ``` 85 | 86 | 3. Install the necessary dependencies for the backend: 87 | 88 | ``` 89 | npm install 90 | ``` 91 | 92 | 4. Start the backend server: 93 | 94 | ``` 95 | npm start 96 | ``` 97 | 98 | 5. For the frontend, navigate to the client directory: 99 | 100 | ``` 101 | cd client 102 | ``` 103 | 104 | 6. Install the necessary dependencies for the frontend: 105 | 106 | ``` 107 | npm install 108 | ``` 109 | 110 | 7. Start the frontend: 111 | 112 | ``` 113 | npm run dev 114 | ``` 115 | 116 | 8. Access the application through your web browser. 117 | 118 | These steps will ensure both the frontend and backend of ElectiveHub are properly set up and running. 119 | 120 | # Contributing 121 | 122 | We welcome contributions to improve ElectiveHub. To contribute: 123 | 124 | 1. Fork the repository on GitHub. 125 | 126 | 2. Clone the forked repository to your local machine. 127 | 128 | 3. Make your changes and improvements. 129 | 130 | 4. Commit your changes with clear and concise commit messages. 131 | 132 | 5. Push your changes to your forked repository. 133 | 134 | 6. Submit a pull request to the main repository, describing your changes and why they should be merged. 135 | 136 | # License 137 | 138 | This project is licensed under the MIT License. 139 | 140 | -------------------------------------------------------------------------------- /client/.env.example: -------------------------------------------------------------------------------- 1 | VITE_API_URL=http://localhost:4000 -------------------------------------------------------------------------------- /client/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | .env 15 | 16 | # Editor directories and files 17 | .vscode/* 18 | !.vscode/extensions.json 19 | .idea 20 | .DS_Store 21 | *.suo 22 | *.ntvs* 23 | *.njsproj 24 | *.sln 25 | *.sw? 26 | -------------------------------------------------------------------------------- /client/Dockerfile: -------------------------------------------------------------------------------- 1 | # Dockerfile for React client 2 | 3 | # Build react client 4 | FROM node:20.9-alpine 5 | 6 | # Working directory be app 7 | WORKDIR /app 8 | 9 | COPY package*.json ./ 10 | 11 | ### Installing dependencies 12 | RUN npm install --silent 13 | 14 | # copy local files to app folder 15 | COPY . . 16 | 17 | # Exposing the Port used 18 | EXPOSE 5173 19 | 20 | CMD ["npm","run","dev","--","--host"] -------------------------------------------------------------------------------- /client/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | 246 | ElectiveHub 247 | 248 | 249 |
250 |
251 |
    252 |
  • 253 |
  • 254 |
  • 255 |
  • 256 |
  • 257 |
  • 258 |
259 |
260 | 261 | 262 | 263 | 264 | -------------------------------------------------------------------------------- /client/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-basics", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "@alan-ai/alan-sdk-web": "^1.8.48", 13 | "@canvasjs/charts": "^3.7.17", 14 | "@canvasjs/react-charts": "^1.0.0", 15 | "@gsap/react": "^2.1.1", 16 | "axios": "^1.4.0", 17 | "d3": "^7.8.5", 18 | "flowbite": "^1.8.1", 19 | "flowbite-react": "^0.4.11", 20 | "framer-motion": "^10.16.4", 21 | "gsap": "^3.12.5", 22 | "locomotive-scroll": "^5.0.0-beta.12", 23 | "react": "^18.2.0", 24 | "react-confetti": "^6.1.0", 25 | "react-cookie": "^4.1.1", 26 | "react-d3-tree": "^3.6.1", 27 | "react-dom": "^18.2.0", 28 | "react-icons": "^4.12.0", 29 | "react-loader-spinner": "^5.4.5", 30 | "react-quiz-component": "^0.5.1", 31 | "react-router-dom": "^6.14.1", 32 | "react-spinner": "^0.2.7", 33 | "react-spinners": "^0.13.8", 34 | "react-spring": "^9.7.2", 35 | "react-toastify": "^9.1.3", 36 | "tailwind-scrollbar": "^3.1.0", 37 | "universal-cookie": "^4.0.4" 38 | }, 39 | "devDependencies": { 40 | "@types/react": "^18.0.28", 41 | "@types/react-dom": "^18.0.11", 42 | "@vitejs/plugin-react": "^3.1.0", 43 | "autoprefixer": "^10.4.14", 44 | "daisyui": "^3.2.1", 45 | "postcss": "^8.4.24", 46 | "tailwindcss": "^3.3.2", 47 | "vite": "^4.2.0" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /client/postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /client/public/_redirects: -------------------------------------------------------------------------------- 1 | 2 | /* /index.html 200 -------------------------------------------------------------------------------- /client/public/books.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechNodes2-0/ElectiveHub/132a69734ac064625d44fa569e9b04011752a387/client/public/books.png -------------------------------------------------------------------------------- /client/public/down_arrw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechNodes2-0/ElectiveHub/132a69734ac064625d44fa569e9b04011752a387/client/public/down_arrw.png -------------------------------------------------------------------------------- /client/public/right_arrw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechNodes2-0/ElectiveHub/132a69734ac064625d44fa569e9b04011752a387/client/public/right_arrw.png -------------------------------------------------------------------------------- /client/public/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechNodes2-0/ElectiveHub/132a69734ac064625d44fa569e9b04011752a387/client/public/search.png -------------------------------------------------------------------------------- /client/public/student_Home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechNodes2-0/ElectiveHub/132a69734ac064625d44fa569e9b04011752a387/client/public/student_Home.png -------------------------------------------------------------------------------- /client/public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/wlcmbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechNodes2-0/ElectiveHub/132a69734ac064625d44fa569e9b04011752a387/client/public/wlcmbg.png -------------------------------------------------------------------------------- /client/src/App.css: -------------------------------------------------------------------------------- 1 | /* src/styles/global.css */ 2 | @tailwind base; 3 | @tailwind components; 4 | @tailwind utilities; 5 | /* WebKit-based browsers (Chrome, Safari) */ 6 | html ::-webkit-scrollbar { 7 | width: 6px; 8 | height: 10px; 9 | } 10 | 11 | html ::-webkit-scrollbar-track { 12 | background: transparent; 13 | border-radius: 10px; 14 | box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.7); 15 | } 16 | 17 | html ::-webkit-scrollbar-thumb { 18 | background: #3a3a3a; 19 | border-radius: 10px; 20 | border: 3px solid transparent; 21 | box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5); 22 | } 23 | 24 | html ::-webkit-scrollbar-thumb:hover { 25 | background: #555; 26 | } 27 | 28 | 29 | 30 | body { 31 | @apply text-gray-900 bg-gray-100; 32 | } 33 | -------------------------------------------------------------------------------- /client/src/App.jsx: -------------------------------------------------------------------------------- 1 | /** @format */ 2 | 3 | import { useState } from "react"; 4 | import reactLogo from "./assets/react.svg"; 5 | import viteLogo from "/vite.svg"; 6 | import "./App.css"; 7 | import { Routes, Route, Navigate } from "react-router-dom"; 8 | import Home from "./Pages/Home"; 9 | import Navbar from "./Components/Navbar"; 10 | import Footer from "./Components/Footer"; 11 | import Login from "./Components/Auth/Login"; 12 | import Signup from "./Components/Auth/Signup"; 13 | import Syllbus from "./Components/Syllbus/Syllbus"; 14 | import SujectInfo from "./Components/SyllbusInfo/SyllbusInfo"; 15 | import ProtectedRoutes from "./Pages/ProtectedRoutes"; 16 | import PrivateRoutes from "./Pages/PrivateRoutes"; 17 | import ErrorBoundary from "./Pages/ErrorBoundary"; 18 | import Homepage from "./Pages/HomePage"; 19 | import StudentHome from "./Pages/StudentHome"; 20 | import StudentForm from "./Components/Student/StudentForm"; 21 | import EditStudent from "./Components/Student/EditStudent"; 22 | import SubjectNavbar from "./Components/SubjectNavbar"; 23 | import SubjectHome from "./Pages/SubjectHome"; 24 | import EditSubject from "./Components/Subject/EditSubject"; 25 | import SubjectForm from "./Components/Subject/SubjectForm"; 26 | import StudentSubject from "./Components/Student/StudentSubject"; 27 | import EditStudentSubject from "./Components/Student/EditStudentSubject"; 28 | import StudentsForSubject from "./Components/Subject/StudentsForSubject"; 29 | import AdminRoutes from "./Pages/AdminRoutes"; 30 | import LearningPath from "./Pages/LearningPath"; 31 | import AlanAIComponent from "./alan"; 32 | import Error from "./Components/Error"; 33 | import Charts from "./Components/Charts"; 34 | import Dashboard from "./Components/Dashboard"; 35 | import StudentVideo from "./Pages/StudentVideo"; 36 | import Disscussion from "./Components/Disscussion/Disscussion"; 37 | import SubDisscussion from "./Components/Disscussion/SubDisscussion"; 38 | import LocomotiveScroll from 'locomotive-scroll'; 39 | 40 | // this is temporary imports 41 | import StudentNavbar from "./Components/StudentNavbar"; 42 | import Admin from "./Pages/AdminPage/Admin"; 43 | import Contact from "./Components/Contact"; 44 | import PrivacyPolicy from "./Pages/PrivacyPolicy"; 45 | import Licensing from "./Pages/Licensing"; 46 | 47 | function App() { 48 | // const token = cookies.get("TOKEN"); 49 | 50 | const locomotiveScroll = new LocomotiveScroll(); 51 | 52 | const [loading, setLoading] = useState(true); 53 | const spinner = document.getElementById("spinner"); 54 | if (spinner) { 55 | setTimeout(() => { 56 | spinner.style.display = "none"; 57 | setLoading(false); 58 | }, 2000); 59 | } 60 | return( 61 | !loading && ( 62 | <> 63 | 64 | {/*

{import.meta.env.VITE_API_URL}

*/} 65 | 66 | }> 67 | 68 | }> 69 | }> 70 | 74 | 75 | 76 | 77 | } 78 | > 79 | 80 | }> 81 | }> 82 | }> 83 | } 86 | > 87 | } 90 | > 91 | } 94 | > 95 | 96 | }> 97 | 98 | 99 | 103 | 104 | 105 | 106 | } 107 | > 108 | 112 | 113 | 114 | } 115 | > 116 | 117 | {/* Enter routes from here Yash Suthar */} 118 | 119 | 123 | 124 | 125 | } 126 | /> 127 | 128 | {/* This is end1 */} 129 | }> 130 | }> 131 | }> 132 | }> 133 | }> 134 | }/> 135 | }/> 136 | }> 137 | }> 138 | 139 | }> 140 | }> 141 | 145 | 146 | 147 | 148 | } 149 | /> 150 | }> 151 | }> 152 | }> 153 | 154 | {/* Redirect to the Error route for any unmatched routes */} 155 | } /> 156 | 157 |