├── .DS_Store ├── .github ├── ISSUE_TEMPLATE │ ├── bugs.yml │ ├── docs.yml │ └── feature.yml ├── pull_request_template.md └── workflows │ ├── greetings.yaml │ └── pr-checker.yml ├── .hintrc ├── .htaccess ├── .vscode └── settings.json ├── 404.html ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── components ├── .DS_Store ├── ChatBot │ └── ChatBot.html ├── Footer │ └── Footer.html ├── GlobalScripts │ └── GlobalScripts.html ├── GlobalStyles │ └── GlobalStyles.html ├── LoadingScreen │ ├── LoadingScreen.css │ └── LoadingScreen.html ├── Navbar │ ├── Navbar.html │ └── Navbar.js └── ScrollToTop │ ├── ScrollToTop.css │ └── ScrollToTop.html ├── contributing.md ├── desktop.ini ├── favicon.ico ├── images ├── STEM.jpg ├── abcd.png ├── account.png ├── artscholar.jpg ├── dark.png ├── favicon.ico ├── features.png ├── feedback-testimonial-icon.png ├── ficon.png ├── globalearth.jpg ├── greenscholar.jpg ├── hispanic-teenage-girl-holding-american-flag-stick.jpg ├── image.png ├── initialpng.png ├── jicon.png ├── leaderscholar.jpg ├── light.png ├── logo.png ├── moon.png ├── pathsphere.png ├── peacescholar.jpg ├── sc1.jpg ├── sc2.webp ├── sc3.jpeg ├── sc4.jpg ├── sc5.jpg ├── sc6.jpg ├── scholars.jpeg ├── scholarship.jpg ├── sicon.png ├── sun.png ├── team1.png ├── team2.png ├── team3.jpeg ├── team4.jpeg ├── techscholar.jpg └── techwomen.jpg ├── index.html ├── logo.png ├── package-lock.json ├── pages ├── .DS_Store ├── about │ ├── about.css │ └── about.html ├── blog │ ├── blog.css │ ├── blog.html │ ├── blog.js │ └── write_your_blog.html ├── communityforums │ ├── 4a3499c6b5cca368ec4e3717f9077114.gif │ └── communityfor.html ├── contact │ ├── contact.css │ ├── contact.html │ └── contact.js ├── contributor │ ├── .DS_Store │ ├── index.html │ ├── script.js │ └── styles.css ├── faqs │ ├── faqs.css │ ├── faqs.html │ └── faqs.js ├── favicon.ico ├── forum │ ├── .DS_Store │ ├── forum.css │ ├── forum.html │ └── forum.images │ │ └── sergey-zolkin-_UeY8aTI6d0-unsplash.jpg ├── jobs │ ├── job_images │ │ ├── christina-wocintechchat-com-KAULAzQwxzE-unsplash.jpg │ │ ├── data_science.jpeg │ │ ├── design.jpg │ │ ├── download (2).png │ │ ├── download.png │ │ ├── fullstack.jpeg │ │ ├── ian-schneider-TamMbr4okv4-unsplash.jpg │ │ ├── innovation.png │ │ ├── krakenimages-376KN_ISplE-unsplash.jpg │ │ ├── manage.png │ │ ├── market.png │ │ ├── product.png │ │ └── secure.png │ ├── jobs.css │ ├── jobs.html │ ├── jobs.js │ └── jobs2.css ├── login-signup │ ├── login-signup.css │ ├── login-signup.html │ └── login-signup.js ├── privacypolicy │ ├── privacypolicy.css │ └── privacypolicy.html ├── resume-builder │ ├── 4a3499c6b5cca368ec4e3717f9077114.gif │ ├── resume.css │ ├── resume.html │ ├── resume.js │ └── welcome.html ├── scholarship-feature │ ├── buddy4study.xlsx │ ├── scholarships.css │ └── scholarships.html ├── scholarships │ ├── favicon.ico │ ├── scholarships.css │ ├── scholarships.html │ └── scholarships.js ├── terms │ ├── index.html │ ├── terms.css │ └── terms.js └── testimonials │ └── test.html ├── pathsphere.png ├── popup.jpg ├── popup.js ├── resources ├── resource_library.html ├── script.js └── styles.css ├── scripts ├── componentLoader.js └── script.js └── styles └── styles.css /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/.DS_Store -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bugs.yml: -------------------------------------------------------------------------------- 1 | name: '🐞 Bug Report' 2 | description: 'Report a bug found in the Pathsphere source code' 3 | labels: ['bug', 'GSSoC24 Extd.'] 4 | 5 | body: 6 | - type: textarea 7 | id: description 8 | attributes: 9 | label: 'Description' 10 | description: 'A brief description of the issue, including what you tried and what did not work.' 11 | validations: 12 | required: true 13 | 14 | - type: textarea 15 | id: steps_to_reproduce 16 | attributes: 17 | label: 'Steps to Reproduce' 18 | description: 'Please list the steps needed to reproduce the issue.' 19 | validations: 20 | required: true 21 | 22 | - type: textarea 23 | id: expected_behavior 24 | attributes: 25 | label: 'Expected Behavior' 26 | description: 'Describe what you expected to happen.' 27 | 28 | - type: textarea 29 | id: actual_behavior 30 | attributes: 31 | label: 'Actual Behavior' 32 | description: 'Describe what actually happened.' 33 | 34 | - type: textarea 35 | id: screenshots 36 | attributes: 37 | label: 'Screenshots' 38 | description: 'Please add screenshots if applicable (recommended).' 39 | 40 | - type: textarea 41 | id: additional_information 42 | attributes: 43 | label: 'Additional Information' 44 | description: 'Is there anything else we should know about this bug?' 45 | 46 | - type: checkboxes 47 | id: browser 48 | attributes: 49 | label: 'What browser are you seeing the problem on?' 50 | options: 51 | - label: 'Firefox' 52 | - label: 'Chrome' 53 | - label: 'Safari' 54 | - label: 'Microsoft Edge' 55 | 56 | - type: checkboxes 57 | id: checklist 58 | attributes: 59 | label: 'Checklist' 60 | description: 'Please ensure you have completed the following:' 61 | options: 62 | - label: 'I have checked the [existing issues](https://github.com/aditya-bhaumik/Pathsphere/issues)' 63 | required: true 64 | - label: 'I have read the [Contributing Guidelines](https://github.com/aditya-bhaumik/Pathsphere/blob/main/contributing.md)' 65 | required: true 66 | - label: 'I want to work on this issue. (optional)' 67 | 68 | - type: markdown 69 | attributes: 70 | value: | 71 | **Thank you for taking the time to report this issue! Your feedback is greatly appreciated.** 72 | 73 | You can also join the Discord community [here](https://discord.gg/FZxBRpTEeH). 74 | Feel free to check out other amazing repositories of the Techsphere [here](https://github.com/aditya-bhaumik/Pathsphere). 75 | -------------------------------------------------------------------------------- /.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: ['documentation', '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 | 15 | - type: textarea 16 | id: additional_context_docs 17 | attributes: 18 | label: 'Additional Context' 19 | description: 'If there is any additional context or information that would be helpful for addressing the documentation issue, please provide it here.' 20 | 21 | - type: textarea 22 | id: screenshots_examples_docs 23 | attributes: 24 | label: 'Screenshots or Examples (if applicable)' 25 | description: 'Please include relevant screenshots or examples to help illustrate the problem.' 26 | 27 | - type: textarea 28 | id: proposed_solution_docs 29 | attributes: 30 | label: 'Proposed Solution (optional)' 31 | 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.' 32 | 33 | - type: checkboxes 34 | id: terms_checklist_docs 35 | attributes: 36 | label: 'Checklist' 37 | description: 'By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/aditya-bhaumik/Pathsphere/blob/main/contributing.md)' 38 | options: 39 | - label: 'I have checked the existing [issues](https://github.com/aditya-bhaumik/Pathsphere/issues)' 40 | required: true 41 | - label: 'I have read the [Contributing Guidelines](https://github.com/aditya-bhaumik/Pathsphere/blob/main/contributing.md)' 42 | required: true 43 | - label: 'I am willing to work on this issue (optional)' 44 | required: false 45 | 46 | - type: markdown 47 | attributes: 48 | value: 'Thank you for taking the time to raise this issue! Your input is greatly appreciated.' -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature.yml: -------------------------------------------------------------------------------- 1 | name: 🧑‍💻 Feature Request 2 | description: Suggest a feature request 3 | title: "[Mention The Feature]: " 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/aditya-bhaumik/Pathsphere/issues)" 48 | required: true 49 | - label: "I have read the [Contributing Guidelines](https://github.com/aditya-bhaumik/Pathsphere/blob/main/contributing.md)" 50 | required: true 51 | - label: "I want to work on this issue. (optional)" 52 | required: false -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Issues Identification 4 | 5 | Closes: #(issue number) 6 | 7 | ## Description 8 | 9 | ### Summary 10 | A brief description of what this pull request does and why it is needed. 11 | 12 | ### Details 13 | Include any detailed information about the changes in this pull request. 14 | 15 | ## Types of Changes 16 | 17 | _Please check the boxes that apply_ 18 | 19 | - [ ] Bugfix (non-breaking change that fixes an issue) 20 | - [ ] New feature (non-breaking change that adds functionality) 21 | - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) 22 | - [ ] Documentation update (Documentation content changed) 23 | - [ ] Other (please describe): 24 | 25 | ## Checklist 26 | 27 | _Please check the boxes that apply_ 28 | 29 | - [ ] My code follows the style guidelines of this project 30 | - [ ] I have performed a self-review of my own code 31 | - [ ] I have commented my code, particularly in hard-to-understand areas 32 | - [ ] I have made corresponding changes to the documentation 33 | - [ ] My changes generate no new warnings 34 | - [ ] My changes do not break the current system and pass all existing test cases 35 | - [ ] I have added tests that prove my fix is effective or that my feature works 36 | - [ ] New and existing unit tests pass locally with my changes 37 | 38 | ## Screenshots 39 | 40 | If applicable, please attach screenshots of the changes made to the user interface. 41 | 42 | ## Additional Information 43 | 44 | Please provide any other information that is relevant to this pull request. 45 | 46 | -------------------------------------------------------------------------------- /.github/workflows/greetings.yaml: -------------------------------------------------------------------------------- 1 | name: Greetings 🐦‍🔥 2 | on: [pull_request_target, issues] 3 | 4 | jobs: 5 | greeting: 6 | runs-on: ubuntu-latest 7 | permissions: 8 | issues: write 9 | pull-requests: write 10 | steps: 11 | - uses: actions/first-interaction@v1 12 | with: 13 | repo-token: ${{ secrets.GITHUB_TOKEN }} 14 | 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." 15 | pr-message: "Thank you, ${{ github.actor }}, for creating this pull request and contributing to Pathsphere! 💗\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! 😀" 16 | -------------------------------------------------------------------------------- /.github/workflows/pr-checker.yml: -------------------------------------------------------------------------------- 1 | name: PR Issue Checker 2 | # Created my @smog-root. 3 | on: 4 | pull_request: 5 | types: [opened, edited] 6 | 7 | jobs: 8 | check_pr_description: 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - name: Checkout code 13 | uses: actions/checkout@v2 14 | 15 | - name: Check PR Description 16 | id: check_pr_description 17 | run: | 18 | PR_DESCRIPTION="${{ github.event.pull_request.body }}" 19 | if [[ -z "$PR_DESCRIPTION" ]]; then 20 | echo "PR description is missing." 21 | exit 1 22 | fi 23 | 24 | if [[ ! "$PR_DESCRIPTION" =~ Fixes\ #[0-9]+ ]]; then 25 | echo "The PR description should include 'Fixes #' if not addressing any issue." 26 | echo "##[error]Fixes #NEW must be included in the description." 27 | exit 1 28 | fi 29 | 30 | echo "PR description is valid." 31 | 32 | - name: Output result 33 | run: echo "All checks passed." 34 | -------------------------------------------------------------------------------- /.hintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "development" 4 | ], 5 | "hints": { 6 | "axe/name-role-value": [ 7 | "default", 8 | { 9 | "button-name": "off", 10 | "link-name": "off" 11 | } 12 | ], 13 | "disown-opener": "off" 14 | } 15 | } -------------------------------------------------------------------------------- /.htaccess: -------------------------------------------------------------------------------- 1 | ErrorDocument 404 /404.html -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "liveServer.settings.port": 5501 3 | } -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 404 PAGE 7 | 8 | 9 | 10 | 41 | 42 | 43 | 44 | 45 | 46 |
47 |
48 |
49 |
50 |
51 |
52 |

404

53 | 54 | 55 |
56 | 57 |
58 |

59 | Look like you're lost 60 |

61 | 62 |

The page you are looking for not available!

63 | 64 | Go to Home 65 |
66 |
67 |
68 |
69 |
70 |
71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # PathSphere Code of Conduct 2 | 3 | ## Introduction 4 | 5 | PathSphere is an comprehensive platform that connects students, educators, and professionals to resources such as scholarships, job opportunities, and community discussions. By participating in this community, you agree to contribute positively and respectfully, fostering an environment that promotes inclusivity, learning, and collaboration. 6 | 7 | ## Our Commitment 8 | 9 | We are dedicated to maintaining a welcoming, respectful, and harassment-free community. Everyone, regardless of background, is encouraged to participate, contribute, and share. All interactions should promote learning and be free of discrimination. 10 | 11 | ## Our Values 12 | 13 | 1. **Respect and Empathy** 14 | All users and contributors are expected to engage with others respectfully. Harassment, discrimination, or offensive behavior of any kind will not be tolerated. We believe respect is the foundation for growth and collaboration. 15 | 16 | 2. **Collaboration and Knowledge Sharing** 17 | PathSphere thrives on collaboration. We encourage members to help one another, share knowledge, and contribute to the platform's growth. Whether it’s code, advice, or feedback, working together makes us stronger. 18 | 19 | 3. **Constructive Feedback** 20 | Feedback is essential to improving PathSphere. When giving feedback, focus on constructive suggestions that help improve the platform. We expect all feedback to be respectful and aimed at helping others grow. 21 | 22 | 4. **Inclusivity and Diversity** 23 | PathSphere is for everyone. We value diverse perspectives and welcome contributions from individuals of all backgrounds and experiences. Everyone should feel empowered to share their thoughts and ideas. 24 | 25 | 5. **Professionalism** 26 | All interactions in PathSphere should be conducted in a professional and courteous manner. Whether you’re reporting an issue, submitting a pull request, or discussing in forums, professionalism is key to maintaining a positive community. 27 | 28 | ## Expected Behavior 29 | 30 | - Be respectful and considerate of others. 31 | - Embrace diversity and be inclusive in all interactions. 32 | - Provide constructive and kind feedback. 33 | - Collaborate to improve the platform for everyone. 34 | - Offer help and be patient, especially with newcomers. 35 | 36 | ## Unacceptable Behavior 37 | 38 | - Discrimination, harassment, or any form of abuse. 39 | - Personal attacks, trolling, or inflammatory behavior. 40 | - Use of inappropriate language, sexualized content, or offensive imagery. 41 | - Disrupting contributions or discussions. 42 | - Threatening or bullying others. 43 | 44 | ## Spammy Contribution Rules 45 | 46 | To ensure meaningful contributions, PathSphere has established guidelines to avoid spammy submissions: 47 | 48 | - Pull Requests (PRs) should address open issues or provide meaningful improvements. 49 | - Avoid trivial changes unless they significantly enhance the platform. 50 | - Contributions made during events (e.g., Hacktoberfest) should focus on solving real problems, not superficial changes. 51 | - PRs failing to adhere to these guidelines may be flagged as spam. 52 | 53 | ## Reporting Issues 54 | 55 | If you experience or witness unacceptable behavior, please report it to the project maintainers. All reports will be treated confidentially and with care to maintain the safety of the community. 56 | 57 | ## Enforcement 58 | 59 | Any violations of this Code of Conduct may result in actions by project maintainers, including warnings, temporary bans, or permanent removal from the platform. 60 | 61 | ## Conclusion 62 | 63 | By contributing to PathSphere, you agree to abide by this Code of Conduct. Let’s work together to create a community that fosters growth, inclusivity, and collaboration. 64 | 65 | --- 66 | 67 | Thank you for being a part of PathSphere! 68 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Aditya Bhaumik 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 | -------------------------------------------------------------------------------- /components/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/components/.DS_Store -------------------------------------------------------------------------------- /components/ChatBot/ChatBot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Document 7 | 8 | 9 | 15 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /components/GlobalScripts/GlobalScripts.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Document 7 | 8 | 9 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /components/GlobalStyles/GlobalStyles.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Document 7 | 14 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /components/LoadingScreen/LoadingScreen.css: -------------------------------------------------------------------------------- 1 | #LoadingScreen { 2 | position: fixed; 3 | top: 0; 4 | left: 0; 5 | width: 100%; 6 | height: 100%; 7 | z-index: 20000; 8 | display: flex; 9 | justify-content: center; 10 | align-items: center; 11 | overflow: hidden; 12 | background-color: rgba(255, 255, 255, 1); 13 | } 14 | 15 | body.darkmode #LoadingScreen { 16 | background-color: rgba(0, 0, 0, 1); 17 | } 18 | 19 | .wrapper { 20 | position: absolute; 21 | left: 50%; 22 | top: 50%; 23 | margin: -100px; 24 | width: 200px; 25 | height: 200px; 26 | background-color: transparent; 27 | border: none; 28 | } 29 | .wrapper .box-wrap { 30 | width: 70%; 31 | height: 70%; 32 | margin: calc((100% - 70%) / 2) calc((100% - 70%) / 2); 33 | position: relative; 34 | transform: rotate(-45deg); 35 | } 36 | .wrapper .box-wrap .box { 37 | width: 100%; 38 | height: 100%; 39 | position: absolute; 40 | left: 0; 41 | top: 0; 42 | background: rgba(135, 0, 0, 0.6); 43 | background: linear-gradient( 44 | to right, 45 | #141562, 46 | #486fbc, 47 | #eab5a1, 48 | #8dd6ff, 49 | #4973c9, 50 | #d07ca7, 51 | #f4915e, 52 | #f5919e, 53 | #b46f89, 54 | #141562, 55 | #486fbc 56 | ); 57 | background-position: 0% 50%; 58 | background-size: 1000% 1000%; 59 | visibility: hidden; 60 | } 61 | .wrapper .box-wrap .box.one { 62 | animation: moveGradient 15s infinite, oneMove 3.5s infinite; 63 | } 64 | .wrapper .box-wrap .box.two { 65 | animation: moveGradient 15s infinite, twoMove 3.5s 0.15s infinite; 66 | } 67 | .wrapper .box-wrap .box.three { 68 | animation: moveGradient 15s infinite, threeMove 3.5s 0.3s infinite; 69 | } 70 | .wrapper .box-wrap .box.four { 71 | animation: moveGradient 15s infinite, fourMove 3.5s 0.575s infinite; 72 | } 73 | .wrapper .box-wrap .box.five { 74 | animation: moveGradient 15s infinite, fiveMove 3.5s 0.725s infinite; 75 | } 76 | .wrapper .box-wrap .box.six { 77 | animation: moveGradient 15s infinite, sixMove 3.5s 0.875s infinite; 78 | } 79 | 80 | @keyframes moveGradient { 81 | to { 82 | background-position: 100% 50%; 83 | } 84 | } 85 | 86 | @keyframes oneMove { 87 | 0% { 88 | visibility: visible; 89 | clip-path: inset(0% 35% 70% round 5%); 90 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 91 | } 92 | 14.2857% { 93 | clip-path: inset(0% 35% 70% round 5%); 94 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 95 | } 96 | 28.5714% { 97 | clip-path: inset(35% round 5%); 98 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 99 | } 100 | 42.8571% { 101 | clip-path: inset(35% 70% 35% 0 round 5%); 102 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 103 | } 104 | 57.1428% { 105 | clip-path: inset(35% 70% 35% 0 round 5%); 106 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 107 | } 108 | 71.4285% { 109 | clip-path: inset(0% 70% 70% 0 round 5%); 110 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 111 | } 112 | 85.7142% { 113 | clip-path: inset(0% 70% 70% 0 round 5%); 114 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 115 | } 116 | 100% { 117 | clip-path: inset(0% 35% 70% round 5%); 118 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 119 | } 120 | } 121 | 122 | @keyframes twoMove { 123 | 0% { 124 | visibility: visible; 125 | clip-path: inset(0% 70% 70% 0 round 5%); 126 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 127 | } 128 | 14.2857% { 129 | clip-path: inset(0% 70% 70% 0 round 5%); 130 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 131 | } 132 | 28.5714% { 133 | clip-path: inset(0% 35% 70% round 5%); 134 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 135 | } 136 | 42.8571% { 137 | clip-path: inset(0% 35% 70% round 5%); 138 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 139 | } 140 | 57.1428% { 141 | clip-path: inset(35% round 5%); 142 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 143 | } 144 | 71.4285% { 145 | clip-path: inset(35% 70% 35% 0 round 5%); 146 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 147 | } 148 | 85.7142% { 149 | clip-path: inset(35% 70% 35% 0 round 5%); 150 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 151 | } 152 | 100% { 153 | clip-path: inset(0% 70% 70% 0 round 5%); 154 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 155 | } 156 | } 157 | 158 | @keyframes threeMove { 159 | 0% { 160 | visibility: visible; 161 | clip-path: inset(35% 70% 35% 0 round 5%); 162 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 163 | } 164 | 14.2857% { 165 | clip-path: inset(35% 70% 35% 0 round 5%); 166 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 167 | } 168 | 28.5714% { 169 | clip-path: inset(0% 70% 70% 0 round 5%); 170 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 171 | } 172 | 42.8571% { 173 | clip-path: inset(0% 70% 70% 0 round 5%); 174 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 175 | } 176 | 57.1428% { 177 | clip-path: inset(0% 35% 70% round 5%); 178 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 179 | } 180 | 71.4285% { 181 | clip-path: inset(0% 35% 70% round 5%); 182 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 183 | } 184 | 85.7142% { 185 | clip-path: inset(35% round 5%); 186 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 187 | } 188 | 100% { 189 | clip-path: inset(35% 70% 35% 0 round 5%); 190 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 191 | } 192 | } 193 | 194 | @keyframes fourMove { 195 | 0% { 196 | visibility: visible; 197 | clip-path: inset(35% 0% 35% 70% round 5%); 198 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 199 | } 200 | 14.2857% { 201 | clip-path: inset(35% 0% 35% 70% round 5%); 202 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 203 | } 204 | 28.5714% { 205 | clip-path: inset(35% round 5%); 206 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 207 | } 208 | 42.8571% { 209 | clip-path: inset(70% 35% 0% 35% round 5%); 210 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 211 | } 212 | 57.1428% { 213 | clip-path: inset(70% 35% 0% 35% round 5%); 214 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 215 | } 216 | 71.4285% { 217 | clip-path: inset(70% 0 0 70% round 5%); 218 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 219 | } 220 | 85.7142% { 221 | clip-path: inset(70% 0 0 70% round 5%); 222 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 223 | } 224 | 100% { 225 | clip-path: inset(35% 0% 35% 70% round 5%); 226 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 227 | } 228 | } 229 | 230 | @keyframes fiveMove { 231 | 0% { 232 | visibility: visible; 233 | clip-path: inset(70% 0 0 70% round 5%); 234 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 235 | } 236 | 14.2857% { 237 | clip-path: inset(70% 0 0 70% round 5%); 238 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 239 | } 240 | 28.5714% { 241 | clip-path: inset(35% 0% 35% 70% round 5%); 242 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 243 | } 244 | 42.8571% { 245 | clip-path: inset(35% 0% 35% 70% round 5%); 246 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 247 | } 248 | 57.1428% { 249 | clip-path: inset(35% round 5%); 250 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 251 | } 252 | 71.4285% { 253 | clip-path: inset(70% 35% 0% 35% round 5%); 254 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 255 | } 256 | 85.7142% { 257 | clip-path: inset(70% 35% 0% 35% round 5%); 258 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 259 | } 260 | 100% { 261 | clip-path: inset(70% 0 0 70% round 5%); 262 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 263 | } 264 | } 265 | 266 | @keyframes sixMove { 267 | 0% { 268 | visibility: visible; 269 | clip-path: inset(70% 35% 0% 35% round 5%); 270 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 271 | } 272 | 14.2857% { 273 | clip-path: inset(70% 35% 0% 35% round 5%); 274 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 275 | } 276 | 28.5714% { 277 | clip-path: inset(70% 0 0 70% round 5%); 278 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 279 | } 280 | 42.8571% { 281 | clip-path: inset(70% 0 0 70% round 5%); 282 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 283 | } 284 | 57.1428% { 285 | clip-path: inset(35% 0% 35% 70% round 5%); 286 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 287 | } 288 | 71.4285% { 289 | clip-path: inset(35% 0% 35% 70% round 5%); 290 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 291 | } 292 | 85.7142% { 293 | clip-path: inset(35% round 5%); 294 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 295 | } 296 | 100% { 297 | clip-path: inset(70% 35% 0% 35% round 5%); 298 | animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1); 299 | } 300 | } 301 | 302 | #LoadingScreen.loaded { 303 | animation: split 1s forwards; 304 | } 305 | 306 | @keyframes split { 307 | 0% { 308 | clip-path: inset(0); 309 | } 310 | 100% { 311 | clip-path: inset(0 50% 0 50%); 312 | display: none; 313 | } 314 | } 315 | -------------------------------------------------------------------------------- /components/LoadingScreen/LoadingScreen.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Document 7 | 8 | 9 | 10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | 23 | 24 | -------------------------------------------------------------------------------- /components/Navbar/Navbar.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | PathSphere Navbar 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 47 |
48 | 49 | 268 | 269 | 270 | 271 | -------------------------------------------------------------------------------- /components/Navbar/Navbar.js: -------------------------------------------------------------------------------- 1 | // Hamburger menu toggle 2 | const hamburger = document.getElementsByClassName("hamburger")[0]; 3 | const menu = document.getElementsByClassName("menu")[0]; 4 | const icon = document.getElementById("theme-toggle"); 5 | 6 | hamburger.addEventListener("click", () => { 7 | hamburger.classList.toggle("active"); 8 | menu.classList.toggle("active"); 9 | }); 10 | 11 | // Function to toggle dark mode 12 | const toggleDarkMode = () => { 13 | const body = document.body; 14 | body.classList.toggle('darkmode'); 15 | 16 | //setting photopaths for the images 17 | const photoPaths = ["/images/sun.png", "/images/moon.png"]; 18 | const photoElement = document.getElementById("photo"); 19 | 20 | // Update the theme preference in local storage 21 | if (body.classList.contains('darkmode')) { 22 | icon.checked = true; // Set checkbox to checked 23 | localStorage.setItem('theme', 'dark'); 24 | photoElement.src = photoPaths[1]; //set moon for night mode 25 | 26 | } else { 27 | icon.checked = false; // Set checkbox to unchecked 28 | localStorage.setItem('theme', 'light'); 29 | photoElement.src = photoPaths[0]; //set sun for day 30 | } 31 | }; 32 | 33 | // Check local storage for saved theme on page load 34 | window.onload = () => { 35 | const savedTheme = localStorage.getItem('theme'); 36 | if (savedTheme === 'dark') { 37 | document.body.classList.add('darkmode'); 38 | icon.checked = true; // Set checkbox to checked 39 | } else { 40 | document.body.classList.remove('darkmode'); 41 | icon.checked = false; // Set checkbox to unchecked 42 | } 43 | }; 44 | 45 | // Assign the change event to the theme toggle for toggling dark mode 46 | icon.addEventListener('change', toggleDarkMode); 47 | 48 | 49 | 50 | // Function to mark the active tab based on the current URL 51 | function setActiveTab() { 52 | const tabs = document.querySelectorAll('#tabs .tab'); // Select all tab
  • elements 53 | const currentPath = window.location.pathname; // Get the current path from the URL 54 | 55 | // Loop through each tab to add or remove the active class 56 | tabs.forEach(tab => { 57 | const link = tab.querySelector('a'); // Get the inside the
  • 58 | const linkPath = link.getAttribute('href'); // Get the href attribute of the 59 | console.log('Current Path:', currentPath); 60 | console.log('Link Path:', linkPath); 61 | 62 | // Check if the href of the link matches the current path 63 | if (currentPath === linkPath || currentPath === linkPath.split('?')[0]) { 64 | tab.classList.add('active'); // Add 'active' to the current tab 65 | } else { 66 | tab.classList.remove('active'); // Remove 'active' from other tabs 67 | } 68 | // if (link.getAttribute('href') === currentPath) { 69 | // tab.classList.add('active'); // Add 'active' to the current tab 70 | // } else { 71 | // tab.classList.remove('active'); // Remove 'active' from other tabs 72 | // } 73 | }); 74 | } 75 | 76 | // Call the function on page load 77 | window.onload = () => { 78 | setActiveTab(); 79 | 80 | // Existing theme setup 81 | const savedTheme = localStorage.getItem('theme'); 82 | if (savedTheme === 'dark') { 83 | document.body.classList.add('darkmode'); 84 | icon.checked = true; // Set checkbox to checked 85 | } else { 86 | document.body.classList.remove('darkmode'); 87 | icon.checked = false; // Set checkbox to unchecked 88 | } 89 | }; 90 | -------------------------------------------------------------------------------- /components/ScrollToTop/ScrollToTop.css: -------------------------------------------------------------------------------- 1 | .scroll-top { 2 | position: fixed; 3 | right: 1.6%; 4 | background: linear-gradient(100deg, #1ca6f0, #3c7aff, #05deff); 5 | color: white; 6 | width: 60px; 7 | height: 60px; 8 | border-radius: 50%; 9 | border: none; 10 | cursor: pointer; 11 | display: flex; 12 | align-items: center; 13 | justify-content: center; 14 | font-size: 24px; 15 | opacity: 0; 16 | visibility: hidden; 17 | transition: opacity 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease; 18 | box-shadow: 0 5px 15px rgba(255, 69, 159, 0.4); 19 | overflow: visible; 20 | z-index: 10; 21 | bottom: 75px; 22 | /* Ensure button is on top */ 23 | } 24 | 25 | .scroll-top.show { 26 | opacity: 1; 27 | visibility: visible; 28 | } 29 | 30 | .scroll-top:hover { 31 | transform: scale(1.1); 32 | /* Subtle scaling instead of expanding */ 33 | box-shadow: 0 8px 20px rgba(255, 69, 159, 0.6); 34 | /* Slightly larger shadow */ 35 | } 36 | 37 | .scroll-top:active { 38 | transform: scale(1.05); 39 | /* Minor scale reduction on click */ 40 | } 41 | 42 | .scroll-top-icon { 43 | position: relative; 44 | z-index: 2; 45 | transition: transform 0.3s ease; 46 | } 47 | 48 | .scroll-top:hover .scroll-top-icon { 49 | transform: translateY(-3px); 50 | } 51 | 52 | /* Progress Ring Styling */ 53 | .progress-ring { 54 | position: absolute; 55 | top: 0; 56 | left: 0; 57 | width: 100%; 58 | height: 100%; 59 | transform: rotate(-90deg); 60 | /* To start from the top */ 61 | } 62 | 63 | .progress-ring__circle { 64 | transition: stroke-dashoffset 0.35s; 65 | transform-origin: 50% 50%; 66 | } 67 | 68 | /* Pulse Animation */ 69 | @keyframes pulse { 70 | 0% { 71 | box-shadow: 0 5px 15px rgba(255, 69, 159, 0.4); 72 | } 73 | 74 | 50% { 75 | box-shadow: 0 5px 15px rgba(255, 69, 159, 0.7); 76 | } 77 | 78 | 100% { 79 | box-shadow: 0 5px 15px rgba(255, 69, 159, 0.4); 80 | } 81 | } 82 | 83 | .scroll-top:hover { 84 | animation: pulse 1.5s infinite; 85 | } 86 | 87 | .scroll-top.show { 88 | animation: none; 89 | /* No animation when showing the button */ 90 | } 91 | 92 | .scroll-top.show:hover { 93 | animation: pulse 1.5s infinite; 94 | /* Pulse on hover */ 95 | } -------------------------------------------------------------------------------- /components/ScrollToTop/ScrollToTop.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Document 7 | 8 | 9 | 10 | 19 | 59 | 60 | 71 | 72 | -------------------------------------------------------------------------------- /contributing.md: -------------------------------------------------------------------------------- 1 | # Contributors Guide⚡ 2 | 3 | Welcome to our open-source project! Make sure to star this repository 4 | 5 | We appreciate your interest in contributing.😊 6 | 7 | This guide will help you get started with the project and make your first contribution. 8 | 9 | Join the discord link for more information related to this repository: 10 | 11 | [Discord](https://discord.gg/FZxBRpTEeH) 12 | 13 |
    14 | 15 | # Project Structure 📂 16 | 17 | ```bash 18 | 19 | PATHSPHERE/ 20 | ├── .github/ # GitHub-specific files (e.g., workflows) 21 | ├── components/ # Reusable UI components 22 | ├── images/ # Image assets for the project 23 | ├── pages/ # HTML or main pages of the application 24 | ├── scripts/ # JavaScript files or other scripts 25 | ├── styles/ # CSS or styling files 26 | ├── .hintrc # Linter configuration file 27 | ├── CODE_OF_CONDUCT.md 28 | ├── contributing.md # Instructions For The Contribution 29 | ├── index.html # Main entry HTML file 30 | ├── LICENSE 31 | ├── package-lock.json # Lock file for npm dependencies 32 | └── README.md # Project overview and instructions 33 | ``` 34 | 35 |
    36 | 37 | # Creating first Pull Request 🌟 38 | 39 | 1. **Star this repository** 40 | Click on the top right corner marked as **Stars** at last. 41 | 42 | 2. **Fork this repository** 43 | Click on the top right corner marked as **Fork** at second last. 44 | 45 | 3. **Clone the forked repository** 46 | 47 | ```bash 48 | git clone https://github.com//Pathsphere.git 49 | ``` 50 | 51 | 4. **Navigate to the project directory** 52 | 53 | ```bash 54 | cd Pathsphere 55 | ``` 56 | 57 | 5. **Create a new branch** 58 | 59 | ```bash 60 | git checkout -b 61 | ``` 62 | 63 | 6. **To make changes** 64 | 65 | ```bash 66 | git add . 67 | ``` 68 | 69 | 7. **Now to commit** 70 | 71 | ```bash 72 | git commit -m "added readme 73 | 74 | Co-authored-by: your github username 75 | Co-authored-by: aditya-bhaumik " 76 | ``` 77 | 78 | 8. **Push your local commits to the remote repository** 79 | 80 | ```bash 81 | git push -u origin 82 | ``` 83 | 84 | 9. **Create a Pull Request** 85 | 86 | 10. **Congratulations! 🎉 you've made your contribution** 87 | 88 |
    89 | 90 | # Alternatively contribute using GitHub Desktop 🖥️ 91 | 92 | 1. **Open GitHub Desktop:** 93 | Launch GitHub Desktop and log in to your GitHub account if you haven't already. 94 | 95 | 2. **Clone the Repository:** 96 | - If you haven't cloned the repository yet, you can do so by clicking on the "File" menu and selecting "Clone Repository." 97 | - Choose the repository from the list of repositories on GitHub and clone it to your local machine. 98 | 99 | 3. **Switch to the Correct Branch:** 100 | - Ensure you are on the branch that you want to submit a pull request for. 101 | - If you need to switch branches, you can do so by clicking on the "Current Branch" dropdown menu and selecting the desired branch. 102 | 103 | 4. **Make Changes:** 104 | Make your changes to the code or files in the repository using your preferred code editor. 105 | 106 | 5. **Commit Changes:** 107 | - 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. 108 | - 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. 109 | 110 | 6. **Push Changes to GitHub:** 111 | 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. 112 | 113 | 7. **Create a Pull Request:** 114 | - Go to the GitHub website and navigate to your fork of the repository. 115 | - You should see a button to "Compare & pull request" between your fork and the original repository. Click on it. 116 | 117 | 8. **Review and Submit:** 118 | - 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. 119 | - Once you're satisfied, click the "Create pull request" button to submit your pull request. 120 | 121 | 9. **Wait for Review:** 122 | 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 repository. 123 | 124 |
    125 | 126 | # Pull Requests Review Criteria 🧲 127 | 128 | 1. Please fill the **PR Template** properly while making a Pull Request. 129 | 2. Never commit in the `main` branch. 130 | 3. Your work must be original, written by you not copied from other resources. 131 | 4. You must comment on your code where necessary. 132 | 133 |
    134 | 135 | # Issues Report Process 📌 136 | 137 | 1. Go to the project's issues :- [Issues](https://github.com/aditya-bhaumik/Pathsphere/issues) 138 | 2. Give proper description for the issues. 139 | 3. Don't spam to get the assignment of the issue 😀. 140 | 4. Wait for till someone is looking into it !. 141 | 5. Start working on issue only after you got assigned that issue 🚀. 142 | 143 |
    144 | 145 | # Communication and Support 💬 146 | 147 | - Admin :- **Aditya Bhaumik** 148 | - Join the project's communication channels to interact with other contributors and seek assistance. 149 | - If you have any questions or need help, don't hesitate to ask in the project's communication channels or comment on the relevant issue. 150 | 151 |
    152 | 153 | # Code of Conduct 😇 154 | 155 | - Please follow our project's code of conduct while contributing. 156 | 157 | - Treat all contributors and users with respect and create a positive and inclusive environment for everyone. 158 | 159 |
    160 | 161 | # Good Coding Practices 🧑‍💻 162 | 163 | 1. **Follow the Project's Code Style** 164 | 165 | - Maintain consistency with the existing code style (indentation, spacing, comments). 166 | - Use meaningful and descriptive names for variables, functions, and classes. 167 | - Keep functions short and focused on a single task. 168 | - Avoid hardcoding values; instead, use constants or configuration files when possible. 169 | 170 | 2. **Write Clear and Concise Comments** 171 | 172 | - Use comments to explain why you did something, not just what you did. 173 | - Avoid unnecessary comments that state the obvious. 174 | - Document complex logic and functions with brief explanations to help others understand your thought -process. 175 | 176 | 3. **Keep Code DRY (Don't Repeat Yourself)** 177 | 178 | - Avoid duplicating code. Reuse functions, methods, and components whenever possible. 179 | - If you find yourself copying and pasting code, consider creating a new function or component. 180 | 181 | 4. **Write Tests** 182 | 183 | - Write unit tests for your functions and components. 184 | - Ensure your tests cover both expected outcomes and edge cases. 185 | - Run tests locally before making a pull request to make sure your changes don’t introduce new bugs. 186 | 187 | 5. **Code Reviews and Feedback** 188 | 189 | - Be open to receiving constructive feedback from other contributors. 190 | - Conduct code reviews for others and provide meaningful suggestions to improve the code. 191 | - Always refactor your code based on feedback to meet the project's standards. 192 | 193 |
    194 | 195 | # License 📄 196 | 197 | The project is licensed under **MIT**. Make sure to review and comply with the license terms.
    We hope this guide helps you get started with contributing to our open-source project. Thank you for your contribution! 198 | 199 |
    200 | 201 | # Thank you for contributing 💗 202 | 203 | We truly appreciate your time and effort to help improve our project. Feel free to reach out if you have any questions or need guidance. Happy coding! 🚀 204 | 205 | ## -------------------------------------------------------------------------------- /desktop.ini: -------------------------------------------------------------------------------- 1 | [.ShellClassInfo] 2 | LocalizedResourceName=@Pathsphere,0 3 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/favicon.ico -------------------------------------------------------------------------------- /images/STEM.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/STEM.jpg -------------------------------------------------------------------------------- /images/abcd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/abcd.png -------------------------------------------------------------------------------- /images/account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/account.png -------------------------------------------------------------------------------- /images/artscholar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/artscholar.jpg -------------------------------------------------------------------------------- /images/dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/dark.png -------------------------------------------------------------------------------- /images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/favicon.ico -------------------------------------------------------------------------------- /images/features.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/features.png -------------------------------------------------------------------------------- /images/feedback-testimonial-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/feedback-testimonial-icon.png -------------------------------------------------------------------------------- /images/ficon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/ficon.png -------------------------------------------------------------------------------- /images/globalearth.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/globalearth.jpg -------------------------------------------------------------------------------- /images/greenscholar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/greenscholar.jpg -------------------------------------------------------------------------------- /images/hispanic-teenage-girl-holding-american-flag-stick.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/hispanic-teenage-girl-holding-american-flag-stick.jpg -------------------------------------------------------------------------------- /images/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/image.png -------------------------------------------------------------------------------- /images/initialpng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/initialpng.png -------------------------------------------------------------------------------- /images/jicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/jicon.png -------------------------------------------------------------------------------- /images/leaderscholar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/leaderscholar.jpg -------------------------------------------------------------------------------- /images/light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/light.png -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/logo.png -------------------------------------------------------------------------------- /images/moon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/moon.png -------------------------------------------------------------------------------- /images/pathsphere.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/pathsphere.png -------------------------------------------------------------------------------- /images/peacescholar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/peacescholar.jpg -------------------------------------------------------------------------------- /images/sc1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/sc1.jpg -------------------------------------------------------------------------------- /images/sc2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/sc2.webp -------------------------------------------------------------------------------- /images/sc3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/sc3.jpeg -------------------------------------------------------------------------------- /images/sc4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/sc4.jpg -------------------------------------------------------------------------------- /images/sc5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/sc5.jpg -------------------------------------------------------------------------------- /images/sc6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/sc6.jpg -------------------------------------------------------------------------------- /images/scholars.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/scholars.jpeg -------------------------------------------------------------------------------- /images/scholarship.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/scholarship.jpg -------------------------------------------------------------------------------- /images/sicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/sicon.png -------------------------------------------------------------------------------- /images/sun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/sun.png -------------------------------------------------------------------------------- /images/team1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/team1.png -------------------------------------------------------------------------------- /images/team2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/team2.png -------------------------------------------------------------------------------- /images/team3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/team3.jpeg -------------------------------------------------------------------------------- /images/team4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/team4.jpeg -------------------------------------------------------------------------------- /images/techscholar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/techscholar.jpg -------------------------------------------------------------------------------- /images/techwomen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/images/techwomen.jpg -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/logo.png -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Pathsphere", 3 | "lockfileVersion": 3, 4 | "requires": true, 5 | "packages": {} 6 | } 7 | -------------------------------------------------------------------------------- /pages/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/.DS_Store -------------------------------------------------------------------------------- /pages/about/about.css: -------------------------------------------------------------------------------- 1 | /* Adding style for about page */ 2 | .hero { 3 | color: var(--primary-color); 4 | text-align: center; 5 | padding: 100px 20px; 6 | margin-top: 60px; 7 | display: flex; 8 | align-items: center; 9 | justify-content: center; 10 | flex-direction: column; 11 | gap: 50px; 12 | background-image: url('https://img.freepik.com/free-photo/education-day-arrangement-table-with-copy-space_23-2148721266.jpg?t=st=1727864712~exp=1727868312~hmac=ad6cdca7dd7562e07c00b01f1fc711291818cc361847f5101e93b993ec72ed69&w=826'); 13 | background-repeat: no-repeat; 14 | 15 | background-size: cover; 16 | height: 100vh; 17 | } 18 | 19 | .hero h1 { 20 | font-size: 50px; 21 | margin: 0; 22 | padding: 5px; 23 | text-decoration: none; /* No underline by default */ 24 | transition: all 0.3s ease; /* Smooth transition for hover effects */ 25 | } 26 | 27 | /* Hover state */ 28 | .hero h1:hover { 29 | text-decoration: underline; /* Underline on hover */ 30 | color: #ffa500; /* Change color on hover (optional) */ 31 | transform: scale(1.05); /* Slight pop-out effect */ 32 | } 33 | 34 | .hero p { 35 | font-size: 24px; 36 | padding: 10px; 37 | } 38 | .hero .left { 39 | width: 100%; 40 | } 41 | .hero .right { 42 | width: 40%; 43 | } 44 | .hero .right img { 45 | width: 500px; 46 | height: 300px; 47 | } 48 | 49 | /* General Section Styling */ 50 | .containerTag { 51 | padding: 20px; 52 | margin-bottom: 40px; 53 | } 54 | 55 | /* Headings */ 56 | h2 { 57 | margin-top: 10px; 58 | padding: 60px 0; 59 | font-family: 'Poppins', sans-serif; 60 | font-size: 3rem; /* Adjust the size according to your needs */ 61 | font-weight: bold; 62 | color: #FFB400; /* Orange color */ 63 | text-align: center; 64 | margin-bottom: 20px; 65 | } 66 | 67 | .highlight { 68 | background: linear-gradient(90deg, #F7A700, #e64b4b); /* Orange to Red gradient */ 69 | -webkit-background-clip: text; 70 | background-clip: text; 71 | -webkit-text-fill-color: transparent; 72 | color: transparent; 73 | } 74 | 75 | /* Content Section */ 76 | .content-section { 77 | padding: 0px 0px; 78 | background-color: #a19d9d; 79 | text-align: center; 80 | margin-bottom: 60px; 81 | } 82 | 83 | .content-section h1, .content-section h2 { 84 | font-size: 2.5em; 85 | margin-bottom: 30px; 86 | color: #333; 87 | } 88 | 89 | /* Highlight Section */ 90 | .bg-highlight { 91 | background: #8ABFA3; 92 | padding: 40px 20px; 93 | margin-bottom: 40px; 94 | } 95 | 96 | .bg-light { 97 | background-color: #f299b4; 98 | } 99 | 100 | /* Cards Grid */ 101 | .cards-grid { 102 | display: grid; 103 | grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); 104 | gap: 30px; /* Increased gap for better spacing */ 105 | justify-items: center; 106 | margin: 20px 0; 107 | } 108 | 109 | /* General Card Styling */ 110 | .content-card, .offering-card, .team-card { 111 | background-color: #f9f9f9; 112 | border: 1px solid #ddd; 113 | border-radius: 8px; 114 | padding: 25px; 115 | box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); 116 | transition: transform 0.3s ease, box-shadow 0.3s ease; 117 | text-align: center; 118 | width: 100%; 119 | max-width: 300px; 120 | } 121 | 122 | .content-card:hover, .offering-card:hover, .team-card:hover { 123 | transform: translateY(-5px); 124 | box-shadow: 0 6px 12px rgba(32, 31, 31, 0.15); 125 | } 126 | 127 | .content-card h3 { 128 | font-size: 1.3em; 129 | margin-bottom: 15px; 130 | color: #333; 131 | } 132 | 133 | .content-card p { 134 | font-size: 1em; 135 | color: #666; 136 | line-height: 1.5; 137 | } 138 | 139 | /* Vision Section */ 140 | .vision-cards { 141 | margin-top: 60px; 142 | } 143 | 144 | 145 | .vision-cards { 146 | background: linear-gradient(to bottom right, #f299b4, #FFC0CB); /* Light pink gradient */ 147 | padding: 60px 20px; 148 | margin-bottom: 40px; 149 | text-align: center; 150 | } 151 | 152 | .vision-cards .container { 153 | max-width: 800px; 154 | margin: 0 auto; 155 | } 156 | 157 | .vision-cards h2 { 158 | color: #FFC0CB; /* Hot pink heading */ 159 | margin-bottom: 30px; 160 | } 161 | 162 | .vision-cards .vision-card { 163 | background-color: #FFC0CB; /* Semi-transparent white */ 164 | border: 10px; 165 | border-radius: 10px; 166 | padding: 30px; 167 | margin-bottom: 20px; 168 | transition: all 0.3s ease; 169 | } 170 | 171 | .vision-cards .vision-card:hover { 172 | transform: translateY(-5px); 173 | box-shadow: 0 10px 20px rgba(250, 86, 168, 0.2); /* Pink shadow */ 174 | } 175 | 176 | .vision-cards .vision-card h3 { 177 | color: #070707; /* Black subheadings */ 178 | margin-bottom: 15px; 179 | } 180 | 181 | .vision-cards .vision-card p { 182 | color: #232323; 183 | margin-bottom: 15px; 184 | padding-left: 20px; 185 | position: relative; 186 | } 187 | 188 | /* Bullet points */ 189 | .vision-cards .content-card p:before { 190 | content: '•'; 191 | color: #d2a1b9; /* Hot pink bullet points */ 192 | position: absolute; 193 | left: 0; 194 | font-size: 1.2em; 195 | } 196 | 197 | .Vision .content-card p:hover { 198 | color: #d2a1b9; /* Hot pink hover */ 199 | transform: translateX(5px); 200 | transition: all 0.3s ease; 201 | } 202 | 203 | /* Team Section */ 204 | .team-card { 205 | background-color: #f9f9f9; 206 | border-radius: 10px; 207 | box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); 208 | overflow: hidden; 209 | transition: transform 0.3s, box-shadow 0.3s; 210 | padding: 20px; 211 | text-align: center; 212 | } 213 | 214 | .team-card:hover { 215 | transform: translateY(-5px); 216 | box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2); 217 | background-color: #f0f0f0; 218 | } 219 | 220 | .team-card img { 221 | width: 100%; 222 | height: auto; 223 | border-radius: 50%; 224 | border: 3px solid #FFB400; 225 | margin-bottom: 15px; 226 | transition: transform 0.3s; 227 | } 228 | 229 | .team-card img:hover { 230 | transform: scale(1.05); 231 | } 232 | 233 | .team-card h3 { 234 | font-size: 1.5em; 235 | margin: 15px 0 5px; 236 | color: #333; 237 | } 238 | 239 | .team-card p { 240 | font-size: 1.1em; 241 | margin: 0 0 15px; 242 | color: #777; 243 | } 244 | 245 | /* Offer Section */ 246 | .offering-card i { 247 | font-size: 40px; 248 | color: #4CAF50; 249 | } 250 | 251 | .offering-card:hover { 252 | background-color: #e0f7fa; 253 | transform: scale(1.05); 254 | } 255 | 256 | .offer { 257 | background-color: #03346E; 258 | } 259 | 260 | .offer h2 { 261 | color: #fff; 262 | } 263 | 264 | /* Icon Styling */ 265 | .offering-card i { 266 | font-size: 3em; 267 | color: #FFB400; 268 | margin-bottom: 15px; 269 | } 270 | 271 | .offering-card h3 { 272 | font-size: 1.5em; 273 | margin: 15px 0 5px; 274 | color: #333; 275 | } 276 | 277 | .offering-card p { 278 | font-size: 1.1em; 279 | color: #777; 280 | } 281 | 282 | /* Scroll to Top Button */ 283 | .scroll-top { 284 | position: fixed; 285 | bottom: 20px; 286 | right: 20px; 287 | background-color: #FFB400; 288 | color: white; 289 | border-radius: 50%; 290 | padding: 15px; 291 | box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2); 292 | font-size: 1.5em; 293 | transition: background-color 0.3s; 294 | } 295 | 296 | .scroll-top:hover { 297 | background-color: #f39c12; 298 | } 299 | 300 | /* Responsive Styles */ 301 | @media (max-width: 768px) { 302 | h2 { 303 | font-size: 2rem; 304 | } 305 | 306 | .content-section h1, .content-section h2 { 307 | font-size: 2rem; 308 | } 309 | 310 | .Vision { 311 | flex-direction: column; 312 | height: auto; 313 | padding: 20px; 314 | } 315 | 316 | .Vision .container { 317 | width: 90%; 318 | padding: 15px; 319 | } 320 | 321 | .Vision h1, .Vision h3 { 322 | font-size: 2rem; 323 | } 324 | 325 | .Vision p { 326 | font-size: 1em; 327 | } 328 | 329 | .cards-grid { 330 | grid-template-columns: 1fr; 331 | } 332 | 333 | .scroll-top { 334 | font-size: 1.2em; 335 | padding: 10px; 336 | } 337 | } 338 | 339 | @media (max-width: 480px) { 340 | h2 { 341 | font-size: 1.8rem; 342 | } 343 | 344 | .content-section h1, .content-section h2 { 345 | font-size: 1.5rem; 346 | } 347 | 348 | .Vision h1, .Vision h3 { 349 | font-size: 1.8rem; 350 | } 351 | 352 | .Vision p { 353 | font-size: 0.9em; 354 | } 355 | 356 | .scroll-top { 357 | bottom: 10px; 358 | right: 10px; 359 | padding: 10px; 360 | } 361 | } 362 | -------------------------------------------------------------------------------- /pages/about/about.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | PathSphere | Forum 9 | 10 | 11 | 12 | 13 | 14 |
    15 | 22 | 26 |
    27 |
    28 |

    Empowering Futures,One Opportunity at a Time

    29 |
    30 | 31 | 32 |
    33 |
    34 |

    Our Mission

    35 |
    36 |
    37 |

    Empowerment

    38 |

    Empowering students and educators by providing a platform for discovering and connecting with relevant educational and career opportunities.

    39 |
    40 |
    41 |

    Accessibility

    42 |

    43 | Democratizing access to education and employment by removing 44 | barriers and making opportunities accessible to all. 45 |

    46 |
    47 |
    48 |

    Innovation

    49 |

    50 | Driving innovation in education and career development through 51 | technology and community-driven solutions. 52 |

    53 |
    54 |
    55 |

    Impact

    56 |

    57 | Creating a lasting positive impact on individuals and 58 | communities by fostering lifelong learning and career growth. 59 |

    60 |
    61 |
    62 |

    Equity

    63 |

    64 | Promoting equality in education and employment by 65 | ensuring that all individuals have equal opportunities to 66 | succeed. 67 |

    68 |
    69 |
    70 |
    71 | 72 |
    73 | 74 |
    75 |
    76 |

    Our Vision

    77 |
    78 |
    79 |

    Global Leader

    80 |

    To become the global leader in connecting students with scholarships and educators with job openings, revolutionizing the way education and career paths are discovered.

    81 |
    82 | 83 |
    84 |

    Impactful Community

    85 |

    86 | To cultivate a vibrant and supportive online community where 87 | students and educators can connect, collaborate, and learn from 88 | each other. 89 |

    90 | 91 |
    92 |

    Driving Positive Change

    93 |

    94 | To be a catalyst for positive change in education and the 95 | workforce by fostering innovation, accessibility, and equity. 96 |

    97 |
    98 | 99 |
    100 |

    Trusted Partner

    101 |

    102 | To be a trusted partner to students, educators, institutions, 103 | and organizations, providing valuable resources and services. 104 |

    105 |
    106 | 107 |
    108 |

    Empowered Future

    109 |

    110 | To empower individuals to achieve their full potential by 111 | providing them with the tools, resources, and support they need 112 | to succeed in their academic and professional journeys. 113 |

    114 |
    115 |
    116 |
    117 | 118 |
    119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 |
    130 |

    Meet Our Team

    131 |
    132 |
    133 |  John Doe 134 |

    Aditya Bhaumik

    135 |

    Founder & CEO

    136 |
    137 |
    138 | Jane Smith 139 |

    Vivek Vardhan

    140 |

    Cofounder

    141 |
    142 |
    143 | Emily Johnson 144 |

    Apoorva Singh

    145 |

    Mentor

    146 |
    147 |
    148 | Michael Brown 149 |

    Avinash Pradhan

    150 |

    Mentor

    151 |
    152 |
    153 |
    154 | 155 |
    156 |

    What We Offer

    157 |
    158 |
    159 | 160 |

    Find Jobs

    161 |

    162 | Discover job opportunities that align with your skills and career goals. 163 |

    164 |
    165 |
    166 | 167 |

    Find Scholarships

    168 |

    169 | Explore scholarships tailored to your academic background and needs. 170 |

    171 |
    172 |
    173 | 174 |

    Discussion Forum

    175 |

    176 | Connect with peers and mentors to discuss education and career-related topics. 177 |

    178 |
    179 |
    180 |
    181 |
    182 | 183 |
    184 |
    185 | 186 | 187 | 194 | 195 |
    196 |
    197 |
    198 |
    199 |
    200 |
    201 |
    202 |
    203 |
    204 |
    205 |
    206 |
    207 |
    208 |
    209 |
    210 |
    211 |
    212 |
    213 |
    214 |
    215 |
    216 |
    217 |
    218 |
    219 |
    220 |
    221 |
    222 |
    223 |
    224 |
    225 |
    226 |
    227 | 248 | 249 | 289 | 290 | 291 | 292 | -------------------------------------------------------------------------------- /pages/blog/blog.css: -------------------------------------------------------------------------------- 1 | /* Blogs Section */ 2 | .blogs-section { 3 | padding: 50px 0; 4 | background-color: #f5f7fa; 5 | /* Softer background */ 6 | text-align: center; 7 | } 8 | 9 | .heading { 10 | font-size: 36px; 11 | color: #2c3e50; 12 | /* Darker, more modern color */ 13 | margin-bottom: 20px; 14 | /* Slightly reduced spacing */ 15 | } 16 | 17 | .heading span { 18 | color: #ff6347; 19 | /* Eye-catching color for span */ 20 | } 21 | 22 | /* Updated CSS for Blogs Section */ 23 | .blogs-section { 24 | padding: 50px 0; 25 | background-color: #f5f7fa; 26 | text-align: center; 27 | } 28 | .neat-button { 29 | display: inline-flex; /* Use flexbox for centering */ 30 | justify-content: center; /* Center text horizontally */ 31 | align-items: center; /* Center text vertically */ 32 | width: 150px; /* Set a fixed width for both buttons */ 33 | height: 40px; /* Set a fixed height for both buttons */ 34 | padding: 10px; /* Consistent padding */ 35 | font-size: 16px; /* Consistent font size */ 36 | font-weight: bold; /* Bold text */ 37 | color: white; /* Text color */ 38 | background-color: #2980b9; /* Button background color */ 39 | border: none; /* Remove default border */ 40 | border-radius: 5px; /* Rounded corners */ 41 | cursor: pointer; /* Pointer cursor on hover */ 42 | transition: background-color 0.3s ease; /* Smooth background color transition */ 43 | } 44 | 45 | .neat-button:hover { 46 | background-color: #ff6347; /* Darker shade on hover */ 47 | } 48 | 49 | .swiper-container { 50 | width: 80%; /* Set a specific width for the carousel */ 51 | max-width: 1200px; /* Max width for larger screens */ 52 | margin: 0 auto; /* Center the carousel */ 53 | padding: 20px 0; 54 | padding-bottom: 80px; /* Add padding for better spacing */ 55 | } 56 | 57 | .swiper-slide { 58 | display: flex; 59 | justify-content: center; /* Center the content */ 60 | align-items: center; 61 | justify-content: center; 62 | } 63 | 64 | .blog-card { 65 | background-color: #fff; 66 | border-radius: 12px; 67 | box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); 68 | overflow: hidden; 69 | cursor: pointer; 70 | transition: transform 0.3s ease, box-shadow 0.3s ease; /* Smooth transition for transform and shadow */ 71 | width: calc(33.333% - 20px); /* Make it responsive */ 72 | max-width: 350px; /* Set a max width for better control */ 73 | margin: 0 auto; /* Center the card */ 74 | } 75 | 76 | .blog-card:hover { 77 | transform: translateY(10px); /* Lift the card slightly */ 78 | box-shadow: 0 8px 30px rgba(0, 0, 0, 0.2); /* Increase shadow on hover */ 79 | } 80 | 81 | .blog-image img { 82 | width: 100%; 83 | height: 220px; 84 | object-fit: cover; 85 | border-bottom: 2px solid #ff6347; 86 | } 87 | 88 | .blog-content { 89 | padding: 20px; 90 | text-align: left; 91 | } 92 | 93 | .blog-content h3 { 94 | font-size: 22px; 95 | color: #2c3e50; 96 | margin-bottom: 12px; 97 | } 98 | 99 | .blog-content h3:hover { 100 | color: #2980b9; /* Change color on hover */ 101 | } 102 | 103 | .blog-content p { 104 | font-size: 16px; 105 | color: #666; 106 | line-height: 1.4; 107 | text-align: center; 108 | } 109 | 110 | .swiper-button-next, 111 | .swiper-button-prev { 112 | color: #2980b9; /* Change navigation button color */ 113 | top: auto !important; 114 | bottom: 5px !important; /* Align with pagination */ 115 | font-size: 9px; 116 | } 117 | .swiper-button-prev { 118 | left: calc(50% - 90px) !important; /* Position to the left of pagination */ 119 | } 120 | 121 | .swiper-button-next { 122 | right: calc(50% - 90px) !important; 123 | /* Position to the right of pagination */ 124 | } 125 | .button-wrapper { 126 | display: flex; 127 | justify-content: center; 128 | gap: 10px; 129 | margin-top: 20px; 130 | } 131 | 132 | .swiper-pagination { 133 | bottom: 10px !important; /* Move pagination down */ /* Space between slides and pagination */ 134 | } 135 | 136 | .swiper-pagination-bullet { 137 | width: 12px; 138 | height: 12px; 139 | background: #2980b9; 140 | opacity: 0.5; 141 | } 142 | 143 | .swiper-pagination-bullet-active { 144 | opacity: 1; 145 | } 146 | /* Carousel Responsive Styles */ 147 | @media (max-width: 768px) { 148 | .swiper-container { 149 | width: 100%; /* Full width on smaller screens */ 150 | padding: 10px 0; /* Adjust padding */ 151 | } 152 | 153 | .swiper-slide { 154 | width: 100%; /* Full width for each slide */ 155 | } 156 | 157 | .blog-card { 158 | width: 90%; /* Make cards wider on smaller screens */ 159 | margin: 10px auto; /* Center with margin */ 160 | } 161 | 162 | .swiper-button-next, 163 | .swiper-button-prev { 164 | font-size: 10px; /* Slightly larger button size for better touch targets */ 165 | width: 30px; /* Set a fixed width for buttons */ 166 | height: 30px; /* Set a fixed height for buttons */ 167 | } 168 | } 169 | 170 | @media (max-width: 480px) { 171 | .blog-card { 172 | width: 100%; /* Full width for cards on very small screens */ 173 | } 174 | 175 | .swiper-button-next, 176 | .swiper-button-prev { 177 | font-size: 7px; /* Smaller button size */ 178 | width: 25px; /* Adjust width for smaller screens */ 179 | height: 25px; /* Adjust height for smaller screens */ 180 | } 181 | 182 | .swiper-button-prev { 183 | left: 10px !important; /* Position to the left with some margin */ 184 | } 185 | 186 | .swiper-button-next { 187 | right: 10px !important; /* Position to the right with some margin */ 188 | } 189 | 190 | .swiper-pagination-bullet { 191 | width: 10px; /* Smaller pagination bullets */ 192 | height: 10px; 193 | } 194 | } 195 | 196 | /* Newsletter Section */ 197 | .newsletter { 198 | display: flex; 199 | flex-direction: column; 200 | justify-content: space-between; 201 | align-items: center; 202 | background-color: #ecf2fc; 203 | /* Softer blue background */ 204 | padding: 40px 30px; 205 | border-radius: 15px; 206 | box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1); 207 | /* Deeper shadow for a more prominent effect */ 208 | margin: 30px 0; 209 | height: 250px; 210 | /* Increased height */ 211 | position: relative; 212 | } 213 | 214 | .newsletter-left { 215 | text-align: center; 216 | margin-bottom: auto; 217 | /* Keeps input at the bottom */ 218 | } 219 | 220 | .newsletter-left h1 { 221 | font-size: 26px; 222 | color: #2c3e50; 223 | margin-bottom: 15px; 224 | /* Adjusted spacing */ 225 | } 226 | 227 | .newsletter-left p { 228 | font-size: 16px; 229 | color: #34495e; 230 | line-height: 1.6; 231 | } 232 | 233 | .newsletter-left span { 234 | font-weight: bold; 235 | color: #2980b9; 236 | } 237 | 238 | .newsletter-right { 239 | position: absolute; 240 | bottom: 30px; 241 | /* Positioned at the bottom */ 242 | width: 100%; 243 | display: flex; 244 | justify-content: center; 245 | } 246 | 247 | .input-group { 248 | display: flex; 249 | max-width: 450px; 250 | width: 100%; 251 | } 252 | 253 | .input-group .input { 254 | width: 100%; 255 | padding: 12px 20px; 256 | border: 2px solid #bdc3c7; 257 | border-right: none; 258 | border-radius: 8px 0 0 8px; 259 | font-size: 16px; 260 | outline: none; 261 | transition: border-color 0.3s ease, background-color 0.3s ease; 262 | } 263 | 264 | .input-group .input:focus { 265 | border-color: #2980b9; 266 | background-color: #ecf0f1; 267 | } 268 | 269 | .button--submit { 270 | background-color: #2980b9; 271 | color: #fff; 272 | border: none; 273 | padding: 12px 20px; 274 | border-radius: 0 8px 8px 0; 275 | font-size: 16px; 276 | font-weight: bold; 277 | cursor: pointer; 278 | transition: background-color 0.3s ease, transform 0.3s ease; 279 | } 280 | 281 | .button--submit:hover { 282 | background-color: #21618c; 283 | transform: scale(1.03); 284 | } 285 | 286 | /* Responsive Styles */ 287 | @media (max-width: 768px) { 288 | .blogs-container { 289 | flex-direction: column; 290 | align-items: center; 291 | } 292 | 293 | .blog-card { 294 | width: 80%; 295 | } 296 | 297 | .newsletter { 298 | padding: 30px; 299 | height: auto; 300 | } 301 | 302 | .newsletter-right { 303 | position: static; 304 | margin-top: 20px; 305 | width: 100%; 306 | } 307 | } 308 | 309 | @media (max-width: 480px) { 310 | .newsletter-left h1 { 311 | font-size: 22px; 312 | } 313 | 314 | .newsletter-left p { 315 | font-size: 14px; 316 | } 317 | 318 | .input-group .input { 319 | font-size: 14px; 320 | padding: 10px 15px; 321 | } 322 | 323 | .button--submit { 324 | font-size: 14px; 325 | padding: 10px 15px; 326 | } 327 | } 328 | 329 | .toast { 330 | position: fixed; 331 | top: 20px; /* Position from the top */ 332 | left: 50%; /* Center horizontally */ 333 | transform: translateX(-50%); /* Adjust for centering */ 334 | background-color: #4caf50; /* Green background */ 335 | color: white; /* White text */ 336 | padding: 10px 20px; /* Padding around the text */ 337 | border-radius: 5px; /* Rounded corners */ 338 | box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); /* Shadow for depth */ 339 | z-index: 1000; /* Ensure it appears above other elements */ 340 | transition: opacity 0.5s ease; /* Smooth fade out */ 341 | opacity: 1; /* Initial opacity */ 342 | } 343 | .toast-success { 344 | background-color: #4caf50; /* Success color */ 345 | } 346 | -------------------------------------------------------------------------------- /pages/blog/blog.js: -------------------------------------------------------------------------------- 1 | document.querySelectorAll('.like-button').forEach((button) => { 2 | button.addEventListener('click', function () { 3 | this.classList.toggle('liked'); 4 | }); 5 | }); 6 | 7 | document.querySelectorAll('.submit-comment').forEach((button) => { 8 | button.addEventListener('click', function () { 9 | const textarea = this.previousElementSibling; 10 | const comment = textarea.value.trim(); 11 | if (comment) { 12 | alert(`Comment submitted: ${comment}`); 13 | textarea.value = ''; 14 | } else { 15 | alert('Please enter a comment.'); 16 | } 17 | }); 18 | }); 19 | 20 | // subscribe Button Fuctionality 21 | document.addEventListener('DOMContentLoaded', function () { 22 | const subscribeButton = document.getElementById('subscribe-button'); 23 | const emailInput = document.getElementById('newsletter-input'); 24 | const toastContainer = document.getElementById('toast-container'); 25 | 26 | function showToast(message, type = 'success') { 27 | const toast = document.createElement('div'); 28 | toast.className = `toast ${type === 'success' ? 'toast-success' : 'toast-error'}`; 29 | 30 | // Add tick icon for success and cross icon for error 31 | const icon = document.createElement('span'); 32 | icon.className = 'toast-icon'; 33 | icon.innerHTML = type === 'success' ? '✓' : '✗'; 34 | 35 | const messageSpan = document.createElement('span'); 36 | messageSpan.className = 'toast-message'; 37 | messageSpan.textContent = message; 38 | 39 | const closeButton = document.createElement('button'); 40 | closeButton.className = 'toast-close'; 41 | closeButton.innerHTML = '×'; 42 | closeButton.onclick = () => { 43 | toast.remove(); 44 | }; 45 | 46 | // Append tick for success, cross for error 47 | toast.appendChild(icon); 48 | toast.appendChild(messageSpan); 49 | toast.appendChild(closeButton); 50 | 51 | // Set position to center of the page 52 | toast.style.position = 'fixed'; 53 | toast.style.top = '50%'; 54 | toast.style.left = '50%'; 55 | toast.style.transform = 'translate(-50%, -50%)'; 56 | 57 | toastContainer.appendChild(toast); 58 | 59 | setTimeout(() => { 60 | toast.classList.add('show'); 61 | }, 10); 62 | 63 | setTimeout(() => { 64 | toast.classList.remove('show'); 65 | setTimeout(() => { 66 | toast.remove(); 67 | }, 300); 68 | }, 3000); 69 | } 70 | 71 | subscribeButton.addEventListener('click', function () { 72 | const email = emailInput.value.trim(); 73 | const gmailRegex = /^[a-zA-Z0-9._%+-]+@gmail\.com$/; // Gmail format regex 74 | 75 | if (gmailRegex.test(email)) { 76 | // If email is valid 77 | showToast('Thank you for subscribing!', 'success'); 78 | emailInput.value = ''; 79 | } else { 80 | // If email is invalid 81 | showToast('Please enter a valid Gmail address.', 'error'); 82 | } 83 | }); 84 | }); 85 | 86 | 87 | 88 | // Read more functionality 89 | document.querySelectorAll('.read-more').forEach((button) => { 90 | button.addEventListener('click', function () { 91 | const additionalContent = this.nextElementSibling; 92 | additionalContent.style.display = 93 | additionalContent.style.display === 'none' || 94 | additionalContent.style.display === '' 95 | ? 'block' 96 | : 'none'; 97 | this.textContent = 98 | additionalContent.style.display === 'block' ? 'Read less' : 'Read more'; 99 | }); 100 | }); 101 | -------------------------------------------------------------------------------- /pages/communityforums/4a3499c6b5cca368ec4e3717f9077114.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/communityforums/4a3499c6b5cca368ec4e3717f9077114.gif -------------------------------------------------------------------------------- /pages/contact/contact.css: -------------------------------------------------------------------------------- 1 | /* General Styles */ 2 | body { 3 | font-family: Arial, sans-serif; 4 | margin: 0; 5 | padding: 0; 6 | background-color: #f7f7f7; 7 | color: #000; 8 | } 9 | 10 | main { 11 | display: flex; 12 | flex-direction: column; 13 | align-items: center; 14 | padding: 20px; 15 | } 16 | 17 | h1 { 18 | color: #333; 19 | text-align: center; 20 | margin-bottom: 20px; 21 | } 22 | 23 | .hero { 24 | background-color: #4caf50; 25 | color: white; 26 | padding: 20px; 27 | text-align: center; 28 | width: 100%; 29 | margin-bottom: 30px; 30 | } 31 | 32 | .heading { 33 | height: 65px; 34 | width: 100%; 35 | background-color: rgb(40, 40, 154); 36 | color: white; 37 | text-align: center; 38 | padding: 5px; 39 | margin: 10px; 40 | } 41 | 42 | .contact-form-container h1 { 43 | color: #fff; 44 | } 45 | 46 | .contact { 47 | background-color: #fff; 48 | padding: 40px; 49 | box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); 50 | max-width: 600px; 51 | width: 100%; 52 | border-radius: 10px; 53 | } 54 | 55 | .contact-form-container { 56 | display: flex; 57 | flex-direction: column; 58 | } 59 | 60 | .form-group { 61 | display: flex; 62 | flex-direction: column; /* Stack label, input, and error vertically */ 63 | margin-bottom: 25px; 64 | } 65 | 66 | .form-group label { 67 | font-weight: bold; 68 | color: #333; 69 | font-size: 16px; 70 | margin-bottom: 8px; /* Space between label and input */ 71 | } 72 | 73 | .form-group input, 74 | .form-group textarea { 75 | padding: 12px 15px; 76 | border: 1px solid #ccc; 77 | border-radius: 8px; 78 | font-size: 16px; 79 | background-color: #f9f9f9; 80 | transition: border-color 0.3s ease, background-color 0.3s ease; 81 | } 82 | 83 | .form-group input:hover, 84 | .form-group textarea:hover { 85 | border-color: #161313; 86 | background-color: #fff; 87 | } 88 | 89 | .form-group input:focus, 90 | .form-group textarea:focus { 91 | border-color: #0f2d10; 92 | background-color: #fff; 93 | outline: none; 94 | box-shadow: 0 0 8px rgba(76, 175, 80, 0.2); 95 | } 96 | 97 | .error-message { 98 | display: none; /* Hidden initially */ 99 | color: red; 100 | font-size: 0.9em; 101 | margin-top: 5px; /* Space between input and error message */ 102 | } 103 | 104 | .success-message { 105 | color: green; 106 | font-size: 1em; 107 | margin-top: 10px; 108 | display: none; /* Hidden initially */ 109 | } 110 | 111 | .submit-button { 112 | background-color: #402cb4; 113 | color: white; 114 | padding: 12px 20px; 115 | border: none; 116 | border-radius: 5px; 117 | font-size: 16px; 118 | cursor: pointer; 119 | transition: background-color 0.3s; 120 | } 121 | 122 | .submit-button:hover { 123 | background-color: #45a049; 124 | } 125 | 126 | /* Responsive Design */ 127 | @media (max-width: 768px) { 128 | .contact { 129 | padding: 20px; 130 | } 131 | 132 | .hero { 133 | padding: 15px; 134 | } 135 | 136 | .heading { 137 | height: 65px; 138 | width: 95%; 139 | background-color: rgb(40, 40, 154); 140 | color: white; 141 | text-align: center; 142 | padding: 5px; 143 | margin: 10px; 144 | } 145 | 146 | .submit-button { 147 | width: 100%; 148 | } 149 | } 150 | -------------------------------------------------------------------------------- /pages/contact/contact.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Contact 9 | 10 | 11 | 12 | 13 | 25 | 26 | 27 | 28 |
    29 | 36 | 40 |
    41 |
    42 |

    Contact Us

    43 |

    Fill the below form, we will reach you out

    44 |
    45 |
    46 |
    47 |
    48 |

    Submit your Details

    49 |
    50 |
    51 |
    52 | 53 | 54 |
    Numbers and symbols are not allowed
    55 |
    56 |
    57 | 58 | 59 |
    Please enter a valid email address
    60 |
    61 |
    62 | 63 | 64 |
    Please enter a valid phone number
    65 |
    66 |
    67 | 68 | 69 |
    Please enter your message
    70 |
    71 | 72 |
    73 | 74 |
    75 |
    76 | 77 | 78 |
    79 |
    80 |
    81 |

    Our Locations

    82 |
    83 | 84 | 85 |
    86 |
    87 | 88 | 89 |
    90 |
    91 | 92 | 93 | 101 | 102 |
    103 |
    104 |
    105 |
    106 |
    107 |
    108 |
    109 |
    110 |
    111 |
    112 |
    113 |
    114 |
    115 |
    116 |
    117 |
    118 |
    119 |
    120 |
    121 |
    122 |
    123 |
    124 |
    125 |
    126 |
    127 |
    128 |
    129 |
    130 |
    131 |
    132 |
    133 |
    134 |
    135 | 155 | 187 | 188 | 189 | 190 | -------------------------------------------------------------------------------- /pages/contact/contact.js: -------------------------------------------------------------------------------- 1 | document 2 | .getElementById('contactForm') 3 | .addEventListener('submit', function (event) { 4 | event.preventDefault(); 5 | 6 | // Hide all previous error messages 7 | const errorElements = document.querySelectorAll('.error-message'); 8 | errorElements.forEach((el) => (el.style.display = 'none')); 9 | 10 | // Get form values 11 | const name = document.getElementById('name').value.trim(); 12 | const email = document.getElementById('email').value.trim(); 13 | const phone = document.getElementById('phone').value.trim(); 14 | const message = document.getElementById('message').value.trim(); 15 | 16 | // Validation flags 17 | let isValid = true; 18 | 19 | // Name validation (at least 3 characters) 20 | if (name.length < 3) { 21 | document.getElementById('nameError').textContent = 22 | 'Name must be at least 3 characters long'; 23 | document.getElementById('nameError').style.display = 'block'; 24 | isValid = false; 25 | } 26 | 27 | // Email validation (formal email pattern) 28 | const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; 29 | if (!emailPattern.test(email)) { 30 | document.getElementById('emailError').textContent = 31 | 'Please enter a valid email address'; 32 | document.getElementById('emailError').style.display = 'block'; 33 | isValid = false; 34 | } 35 | 36 | // Phone validation (exactly 10 digits) 37 | const phonePattern = /^[0-9]{10}$/; 38 | if (!phonePattern.test(phone)) { 39 | document.getElementById('phoneError').textContent = 40 | 'Phone number must be exactly 10 digits'; 41 | document.getElementById('phoneError').style.display = 'block'; 42 | isValid = false; 43 | } 44 | 45 | // Message validation (at least 10 characters) 46 | if (message.length < 10) { 47 | document.getElementById('messageError').textContent = 48 | 'Message must be at least 10 characters long'; 49 | document.getElementById('messageError').style.display = 'block'; 50 | isValid = false; 51 | } 52 | 53 | // If form is valid, display success message 54 | if (isValid) { 55 | document.getElementById('successMessage').textContent = 56 | 'Thank you for contacting us! We will reach you soon.'; 57 | document.getElementById('successMessage').style.display = 'block'; 58 | 59 | // Clear the form fields 60 | document.getElementById('contactForm').reset(); 61 | } 62 | }); 63 | -------------------------------------------------------------------------------- /pages/contributor/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/contributor/.DS_Store -------------------------------------------------------------------------------- /pages/contributor/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | PathSphere Contributors 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
    17 | 24 | 28 | 29 |
    30 |
    31 |
    32 |

    Our Amazing Contributors

    33 |

    34 | Shaping the future of Pathsphere, one commit at a time 35 |

    36 | Become a Contributor 37 |
    38 |
    39 | 40 | 41 |
    42 |

    Project Statistics

    43 |
    44 | 45 |
    46 |
    47 | 48 | 49 |
    50 |

    Meet Our Contributors

    51 |
    52 |
    53 |
    54 |
    55 |
    56 |
    57 | 58 | 59 |
    60 |
    61 |

    Ready to Make an Impact?

    62 |

    Join our community and help shape the future of StationGuide.

    63 |
    64 | 70 | 71 |
    72 |
    73 |
    74 | 75 | 76 | 84 | 85 |
    86 |
    87 |
    88 |
    89 |
    90 |
    91 |
    92 |
    93 |
    94 |
    95 |
    96 |
    97 |
    98 |
    99 |
    100 |
    101 |
    102 |
    103 |
    104 |
    105 |
    106 |
    107 |
    108 |
    109 |
    110 |
    111 |
    112 |
    113 |
    114 |
    115 |
    116 |
    117 | 138 | 139 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /pages/contributor/script.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded", function () { 2 | const contributorsContainer = document.getElementById('contributors'); 3 | const statsContainer = document.getElementById('stats'); 4 | const loadingIndicator = document.getElementById('loading'); 5 | const emailForm = document.getElementById('emailForm'); 6 | const emailInput = document.getElementById('email'); 7 | 8 | async function fetchData() { 9 | loadingIndicator.style.display = 'flex'; 10 | let contributorsData = []; 11 | let page = 1; 12 | 13 | try { 14 | while (true) { 15 | const contributorsResponse = await axios.get(`https://api.github.com/repos/aditya-bhaumik/Pathsphere/contributors?per_page=100&page=${page}`); 16 | const newContributors = contributorsResponse.data; 17 | 18 | // If no new contributors are returned, break the loop 19 | if (newContributors.length === 0) { 20 | break; 21 | } 22 | 23 | contributorsData = contributorsData.concat(newContributors); 24 | page++; 25 | } 26 | 27 | const repoResponse = await axios.get('https://api.github.com/repos/aditya-bhaumik/Pathsphere'); 28 | const repoData = repoResponse.data; 29 | 30 | populateStats(repoData, contributorsData); 31 | populateContributors(contributorsData); 32 | } catch (error) { 33 | console.error('Error fetching data:', error); 34 | } finally { 35 | loadingIndicator.style.display = 'none'; 36 | } 37 | } 38 | 39 | 40 | function populateStats(repoData, contributors) { 41 | const stats = [ 42 | { label: "Contributors", value: contributors.length, icon: '' }, 43 | { label: "Total Contributions", value: contributors.reduce((sum, contributor) => sum + contributor.contributions, 0), icon: '' }, 44 | { label: "GitHub Stars", value: repoData.stargazers_count, icon: '' }, 45 | { label: "Forks", value: repoData.forks_count, icon: '' }, 46 | ]; 47 | 48 | statsContainer.innerHTML = ''; 49 | stats.forEach((stat, index) => { 50 | const statCard = document.createElement('div'); 51 | statCard.className = "stat-card"; 52 | statCard.innerHTML = ` 53 |
    ${stat.icon}
    54 |

    ${stat.value}

    55 |

    ${stat.label}

    56 | `; 57 | statCard.style.opacity = '0'; 58 | statCard.style.transform = 'translateY(20px)'; 59 | statsContainer.appendChild(statCard); 60 | 61 | setTimeout(() => { 62 | statCard.style.transition = 'opacity 0.5s, transform 0.5s'; 63 | statCard.style.opacity = '1'; 64 | statCard.style.transform = 'translateY(0)'; 65 | }, index * 100); 66 | }); 67 | } 68 | 69 | function populateContributors(contributors) { 70 | contributorsContainer.innerHTML = ''; 71 | contributors.forEach((contributor, index) => { 72 | const contributorCard = document.createElement('div'); 73 | contributorCard.className = "contributor-card"; 74 | contributorCard.innerHTML = ` 75 | ${contributor.login} 76 |

    ${contributor.login}

    77 |

    ${contributor.type}

    78 |
    ${contributor.contributions} contributions
    79 | 80 | 81 | 82 | 83 | 84 | View Profile 85 | 86 | `; 87 | contributorCard.style.opacity = '0'; 88 | contributorsContainer.appendChild(contributorCard); 89 | 90 | setTimeout(() => { 91 | contributorCard.style.transition = 'opacity 0.5s'; 92 | contributorCard.style.opacity = '1'; 93 | }, index * 100); 94 | }); 95 | } 96 | 97 | // Handle email form submission 98 | emailForm.addEventListener('submit', function (event) { 99 | event.preventDefault(); 100 | const emailValue = emailInput.value; 101 | alert(`Thank you for signing up with ${emailValue}!`); 102 | emailInput.value = ''; 103 | }); 104 | 105 | // Initialize 106 | fetchData(); 107 | }); -------------------------------------------------------------------------------- /pages/contributor/styles.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | box-sizing: border-box; 5 | } 6 | 7 | body { 8 | font-family: Arial, sans-serif; 9 | background-color: #f9fafb; 10 | color: #1f2937; 11 | line-height: 1.5; 12 | } 13 | 14 | .hero { 15 | height: 70vh; 16 | display: flex; 17 | align-items: center; 18 | justify-content: center; 19 | position: relative; 20 | background-color: #bfdbfe; 21 | color: white; 22 | text-align: center; 23 | } 24 | 25 | .hero-overlay { 26 | position: absolute; 27 | inset: 0; 28 | background-color: rgba(0, 0, 0, 0.5); 29 | } 30 | 31 | .hero-content { 32 | position: relative; 33 | z-index: 10; 34 | max-width: 64rem; 35 | padding: 0 1rem; 36 | } 37 | 38 | .hero h1 { 39 | font-size: 3rem; 40 | font-weight: bold; 41 | margin-bottom: 1rem; 42 | } 43 | 44 | .hero p { 45 | font-size: 1.5rem; 46 | color: #bfdbfe; 47 | margin-bottom: 2rem; 48 | } 49 | 50 | .cta-button { 51 | display: inline-block; 52 | padding: 1rem 2rem; 53 | background-color: white; 54 | color: #2563eb; 55 | font-weight: bold; 56 | text-decoration: none; 57 | border-radius: 9999px; 58 | transition: background-color 0.3s ease; 59 | } 60 | 61 | .cta-button:hover { 62 | background-color: #bfdbfe; 63 | } 64 | 65 | .stats, .contributors { 66 | padding: 4rem 1rem; 67 | } 68 | 69 | .stats { 70 | background-color: white; 71 | } 72 | 73 | .contributors { 74 | background-color: #f3f4f6; 75 | } 76 | 77 | .stats h2, .contributors h2 { 78 | font-size: 2rem; 79 | font-weight: bold; 80 | text-align: center; 81 | margin-bottom: 3rem; 82 | } 83 | 84 | .stats-container, .contributors-container { 85 | display: grid; 86 | grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); 87 | gap: 2rem; 88 | max-width: 80rem; 89 | margin: 0 auto; 90 | } 91 | 92 | .stat-card, .contributor-card { 93 | background-color: white; 94 | border-radius: 0.5rem; 95 | padding: 1.5rem; 96 | box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); 97 | transition: transform 0.3s ease, box-shadow 0.3s ease; 98 | } 99 | 100 | .contributor-card:hover { 101 | transform: translateY(-5px); 102 | box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); 103 | } 104 | 105 | .stat-card h3 { 106 | font-size: 2rem; 107 | font-weight: bold; 108 | color: #1f2937; 109 | } 110 | 111 | .stat-card p { 112 | color: #6b7280; 113 | } 114 | 115 | .contributor-card img { 116 | width: 6rem; 117 | height: 6rem; 118 | border-radius: 50%; 119 | margin: 0 auto 1rem; 120 | border: 4px solid #3b82f6; 121 | } 122 | 123 | .contributor-card h3 { 124 | font-size: 1.25rem; 125 | font-weight: bold; 126 | margin-bottom: 0.5rem; 127 | } 128 | 129 | .contributor-card p { 130 | font-size: 0.875rem; 131 | color: #3b82f6; 132 | margin-bottom: 1rem; 133 | } 134 | 135 | .contributor-card .contributions { 136 | display: inline-block; 137 | background-color: #dbeafe; 138 | color: #1e40af; 139 | font-weight: 600; 140 | padding: 0.25rem 0.75rem; 141 | border-radius: 9999px; 142 | font-size: 0.875rem; 143 | } 144 | 145 | .contributor-card a { 146 | display: inline-flex; 147 | align-items: center; 148 | color: #3b82f6; 149 | text-decoration: none; 150 | font-weight: 500; 151 | transition: color 0.3s ease; 152 | } 153 | 154 | .contributor-card a:hover { 155 | color: #1e40af; 156 | } 157 | 158 | .contributor-card svg { 159 | margin-right: 0.5rem; 160 | } 161 | 162 | .loading { 163 | display: flex; 164 | justify-content: center; 165 | align-items: center; 166 | height: 200px; 167 | } 168 | 169 | .spinner { 170 | border: 4px solid #f3f3f3; 171 | border-top: 4px solid #3b82f6; 172 | border-radius: 50%; 173 | width: 40px; 174 | height: 40px; 175 | animation: spin 1s linear infinite; 176 | } 177 | 178 | @keyframes spin { 179 | 0% { transform: rotate(0deg); } 180 | 100% { transform: rotate(360deg); } 181 | } 182 | 183 | .contribute { 184 | background-color: #2563eb; 185 | color: white; 186 | padding: 4rem 1rem; 187 | text-align: center; 188 | margin-bottom: 4rem; 189 | } 190 | 191 | .contribute h2 { 192 | font-size: 2rem; 193 | font-weight: bold; 194 | margin-bottom: 1rem; 195 | } 196 | 197 | .contribute p { 198 | font-size: 1.25rem; 199 | color: #bfdbfe; 200 | margin-bottom: 2rem; 201 | } 202 | 203 | #emailForm { 204 | display: flex; 205 | flex-direction: column; 206 | align-items: center; 207 | gap: 1rem; 208 | } 209 | 210 | #emailForm input { 211 | padding: 0.75rem 1.5rem; 212 | border-radius: 9999px; 213 | border: none; 214 | width: 100%; 215 | max-width: 20rem; 216 | } 217 | 218 | #emailForm button { 219 | padding: 0.75rem 2rem; 220 | background-color: white; 221 | color: #2563eb; 222 | font-weight: bold; 223 | border: none; 224 | border-radius: 9999px; 225 | cursor: pointer; 226 | transition: background-color 0.3s ease; 227 | } 228 | 229 | #emailForm button:hover { 230 | background-color: #bfdbfe; 231 | } 232 | 233 | @media (min-width: 640px) { 234 | .hero h1 { 235 | font-size: 3.75rem; 236 | } 237 | 238 | .hero p { 239 | font-size: 1.875rem; 240 | } 241 | 242 | #emailForm { 243 | flex-direction: row; 244 | justify-content: center; 245 | } 246 | 247 | #emailForm input { 248 | width: auto; 249 | } 250 | } -------------------------------------------------------------------------------- /pages/faqs/faqs.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', () => { 2 | const accordions = document.querySelectorAll('.accordions__item'); 3 | 4 | accordions.forEach((el) => { 5 | el.addEventListener('click', (e) => { 6 | const self = e.currentTarget; 7 | const control = self.querySelector('.accordions__control'); 8 | const content = self.querySelector('.accordions__content'); 9 | 10 | // Close all other open accordions 11 | accordions.forEach((otherEl) => { 12 | if (otherEl !== self && otherEl.classList.contains('open')) { 13 | const otherControl = otherEl.querySelector('.accordions__control'); 14 | const otherContent = otherEl.querySelector('.accordions__content'); 15 | 16 | otherEl.classList.remove('open'); 17 | otherControl.setAttribute('aria-expanded', false); 18 | otherContent.setAttribute('aria-hidden', true); 19 | otherContent.style.maxHeight = null; 20 | 21 | // Reset styles for closed items 22 | const otherIcon = otherEl.querySelector('.accordions__icon'); 23 | const otherTitle = otherEl.querySelector('.accordions__title'); 24 | const otherNumber = otherEl.querySelector('.accordions__number'); 25 | if (otherIcon) otherIcon.style.color = 'black'; 26 | if (otherTitle) otherTitle.style.color = 'black'; 27 | if (otherNumber) otherNumber.style.color = 'black'; 28 | } 29 | }); 30 | 31 | // Toggle the clicked accordion 32 | self.classList.toggle('open'); 33 | if (self.classList.contains('open')) { 34 | control.setAttribute('aria-expanded', true); 35 | content.setAttribute('aria-hidden', false); 36 | content.style.maxHeight = content.scrollHeight + 'px'; 37 | 38 | // Change colors for the opened item 39 | const icon = self.querySelector('.accordions__icon'); 40 | const title = self.querySelector('.accordions__title'); 41 | const number = self.querySelector('.accordions__number'); 42 | if (icon) icon.style.color = 'white'; 43 | if (title) title.style.color = 'white'; 44 | if (number) number.style.color = 'white'; 45 | } else { 46 | control.setAttribute('aria-expanded', false); 47 | content.setAttribute('aria-hidden', true); 48 | content.style.maxHeight = null; 49 | // Reset styles for closed item 50 | const icon = self.querySelector('.accordions__icon'); 51 | const title = self.querySelector('.accordions__title'); 52 | const number = self.querySelector('.accordions__number'); 53 | if (icon) icon.style.color = 'black'; 54 | if (title) title.style.color = 'black'; 55 | if (number) number.style.color = 'black'; 56 | } 57 | }); 58 | }); 59 | }); 60 | -------------------------------------------------------------------------------- /pages/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/favicon.ico -------------------------------------------------------------------------------- /pages/forum/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/forum/.DS_Store -------------------------------------------------------------------------------- /pages/forum/forum.css: -------------------------------------------------------------------------------- 1 | 2 | body, html { 3 | 4 | width:100%; 5 | margin:0; 6 | padding:0; 7 | overflow-x: hidden; 8 | } 9 | .container-fluid, .row ,.col-12{ 10 | height: 100%; 11 | width:100%; 12 | background-color: #ffffff; 13 | } 14 | .replies{ 15 | color:black; 16 | } 17 | .community-forum 18 | { 19 | background-image: url("./forum.images/sergey-zolkin-_UeY8aTI6d0-unsplash.jpg"); 20 | background-size: cover; 21 | height:90vh; 22 | width:100%; 23 | text-align: center; 24 | margin-top: 20px; 25 | 26 | } 27 | 28 | .com-head 29 | { 30 | 31 | color:white; 32 | font: 5rem Afacad Flux; 33 | font-weight:lighter; 34 | font-size: 3.5rem; 35 | /* -webkit-text-stroke: 2px white; */ 36 | text-shadow: 4px 4px 8px rgba(71, 70, 70, 0.922); 37 | } 38 | .com-head2 39 | { 40 | color:white; 41 | font: 1.5rem Arial; 42 | margin-top: 30px;; 43 | } 44 | .com-pera 45 | { 46 | color:white; 47 | font-size:1rem; 48 | text-decoration: wavy; 49 | font-style: italic; 50 | } 51 | 52 | .com-diss 53 | { 54 | text-align: center; 55 | margin:5%; 56 | font-style:italic; 57 | background-color:#e9e9e9; 58 | border-radius:50px; 59 | height:15%; 60 | padding-top:10px; 61 | border:black solid 1px; 62 | } 63 | 64 | .diss 65 | { 66 | height:60%; 67 | width:94%; 68 | margin:3%; 69 | /* margin-right:4%; */ 70 | padding:25px; 71 | border-radius:15px; 72 | background-color:rgb(241, 241, 241); 73 | border:rgb(166, 166, 166) solid 2px; 74 | margin-top:6%; 75 | margin-bottom:100px; 76 | box-shadow: 10px 15px #c9c9c9; 77 | } 78 | 79 | .diss-head 80 | { 81 | text-align: center; 82 | font-family:Monaco; 83 | font-size:2.5rem; 84 | font-weight: bold; 85 | } 86 | 87 | .diss-pera{ 88 | text-align: center; 89 | font-family: Arial; 90 | font-style: oblique; 91 | color: #4d4d4d; 92 | font-size:0.8rem;; 93 | } 94 | .diss-slides 95 | { 96 | height:60%; 97 | width:100%; 98 | } 99 | 100 | .dis-card:hover { 101 | background-color: white; 102 | transform: scale(1.1); /* Enlarge on hover */ 103 | } 104 | .dis-card 105 | { 106 | height:100%; 107 | width:90%; 108 | margin:10px; 109 | border:rgba(172, 172, 172, 0.551) solid 2px; 110 | border-radius: 15px; 111 | padding:15px; 112 | box-shadow: 10px 15px #d7d7d7; 113 | background-color: white; 114 | transition: transform 0.3s ease, background-color 0.3s ease; 115 | } 116 | .diss-top 117 | { 118 | font-size:25px; 119 | font-weight: 500; 120 | 121 | } 122 | .posted 123 | { 124 | font-size: 10px;; 125 | font-weight: bold; 126 | font-style: oblique; 127 | color:#767575; 128 | } 129 | .join 130 | { 131 | width:30%; 132 | border-radius: 5px; 133 | background-color: rgb(0, 0, 0); 134 | color:white; 135 | font-weight: bold; 136 | border:none; 137 | transition: transform 0.2s ease; 138 | } 139 | .join:active { 140 | background-color:white; 141 | color:#000000; 142 | transform: scale(0.95); 143 | } 144 | 145 | .more { 146 | 147 | width:20%; 148 | height:50%; 149 | border-radius: 10px; 150 | color:white; 151 | background-color: black; 152 | cursor: pointer; 153 | transition: all 0.3s ease; 154 | } 155 | 156 | .more:hover { 157 | background-color: #ffffff; 158 | color:black; 159 | transform: scale(1.1); /* Slightly enlarge the button on hover */ 160 | box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); /* Add shadow on hover */ 161 | } 162 | -------------------------------------------------------------------------------- /pages/forum/forum.images/sergey-zolkin-_UeY8aTI6d0-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/forum/forum.images/sergey-zolkin-_UeY8aTI6d0-unsplash.jpg -------------------------------------------------------------------------------- /pages/jobs/job_images/christina-wocintechchat-com-KAULAzQwxzE-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/jobs/job_images/christina-wocintechchat-com-KAULAzQwxzE-unsplash.jpg -------------------------------------------------------------------------------- /pages/jobs/job_images/data_science.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/jobs/job_images/data_science.jpeg -------------------------------------------------------------------------------- /pages/jobs/job_images/design.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/jobs/job_images/design.jpg -------------------------------------------------------------------------------- /pages/jobs/job_images/download (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/jobs/job_images/download (2).png -------------------------------------------------------------------------------- /pages/jobs/job_images/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/jobs/job_images/download.png -------------------------------------------------------------------------------- /pages/jobs/job_images/fullstack.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/jobs/job_images/fullstack.jpeg -------------------------------------------------------------------------------- /pages/jobs/job_images/ian-schneider-TamMbr4okv4-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/jobs/job_images/ian-schneider-TamMbr4okv4-unsplash.jpg -------------------------------------------------------------------------------- /pages/jobs/job_images/innovation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/jobs/job_images/innovation.png -------------------------------------------------------------------------------- /pages/jobs/job_images/krakenimages-376KN_ISplE-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/jobs/job_images/krakenimages-376KN_ISplE-unsplash.jpg -------------------------------------------------------------------------------- /pages/jobs/job_images/manage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/jobs/job_images/manage.png -------------------------------------------------------------------------------- /pages/jobs/job_images/market.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/jobs/job_images/market.png -------------------------------------------------------------------------------- /pages/jobs/job_images/product.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/jobs/job_images/product.png -------------------------------------------------------------------------------- /pages/jobs/job_images/secure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/jobs/job_images/secure.png -------------------------------------------------------------------------------- /pages/jobs/jobs.js: -------------------------------------------------------------------------------- 1 | const jobListings = [ 2 | { 3 | id: 1, 4 | title: "Software Engineer", 5 | company: "Tech Corp", 6 | location: "New York, USA", 7 | description: "Develop and maintain web applications using modern frameworks.", 8 | salary: "$90K - $120K", 9 | tools: ["JavaScript", "React", "Node.js"], 10 | daysPosted: "5 days ago", 11 | logo: "./job_images/manage.png", 12 | 13 | }, 14 | { 15 | id: 2, 16 | title: "Data Scientist", 17 | company: "DataSolutions", 18 | location: "San Francisco, USA", 19 | description: "Analyze large datasets to extract insights and support decision-making.", 20 | salary: "$110K - $150K", 21 | tools: ["Python", "R", "TensorFlow"], 22 | daysPosted: "12 days ago", 23 | logo: "./job_images/data_science.jpeg", // updated path 24 | }, 25 | { 26 | id: 3, 27 | title: "UI/UX Designer", 28 | company: "Creative Minds", 29 | location: "London, UK", 30 | description: "Design intuitive and responsive interfaces for web and mobile applications.", 31 | salary: "$70K - $100K", 32 | tools: ["Sketch", "Figma", "Adobe XD"], 33 | daysPosted: "6 hours ago", 34 | logo: "./job_images/design.jpg", 35 | }, 36 | { 37 | id: 4, 38 | title: "Project Manager", 39 | company: "Business Solutions", 40 | location: "Toronto, Canada", 41 | description: "Oversee project execution and ensure timely delivery within scope and budget.", 42 | salary: "$100K - $130K", 43 | tools: ["Jira", "Asana", "Trello"], 44 | daysPosted: "9 days ago", 45 | logo: "./job_images/innovation.png", 46 | }, 47 | { 48 | id: 5, 49 | title: "DevOps Engineer", 50 | company: "CloudTech", 51 | location: "Berlin, Germany", 52 | description: "Implement CI/CD pipelines, automate infrastructure, and manage cloud services.", 53 | salary: "$95K - $140K", 54 | tools: ["Docker", "Kubernetes", "AWS"], 55 | daysPosted: "12 hours ago", 56 | logo: "./job_images/download.png", 57 | }, 58 | { 59 | id: 6, 60 | title: "Cybersecurity Analyst", 61 | company: "SecureWorks", 62 | location: "Sydney, Australia", 63 | description: "Monitor and analyze security systems to prevent data breaches and cyberattacks.", 64 | salary: "$105K - $160K", 65 | tools: ["Network Security", "Penetration Testing", "Firewalls", "Encryption", "Azure"], 66 | daysPosted: "1 day ago", 67 | logo: "./job_images/secure.png", 68 | }, 69 | { 70 | id: 7, 71 | title: "Full-Stack Developer", 72 | company: "InnoTech", 73 | location: "Paris, France", 74 | description: "Build end-to-end solutions, from front-end to back-end, for enterprise applications.", 75 | salary: "$100K - $150K", 76 | tools: ["HTML", "CSS", "JavaScript", "React", "Node.js", "MongoDB"], 77 | daysPosted: "1 day ago", 78 | logo: "./job_images/fullstack.jpeg", 79 | }, 80 | { 81 | id: 8, 82 | title: "Marketing Specialist", 83 | company: "Brandify", 84 | location: "Dubai, UAE", 85 | description: "Develop and execute marketing campaigns to enhance brand visibility and engagement.", 86 | salary: "$70K - $110K", 87 | tools: ["SEO", "Google Analytics", "Social Media", "Content Marketing", "Brand Strategy"], 88 | daysPosted: "2 days ago ago", 89 | logo: "./job_images/market.png", 90 | }, 91 | { 92 | id: 9, 93 | title: "Blockchain Developer", 94 | company: "Crypto Solutions", 95 | location: "Singapore", 96 | description: "Design, implement, and maintain blockchain technologies and decentralized apps.", 97 | salary: "$120K - $180K", 98 | tools: ["Ethereum", "Solidity", "Smart Contracts", "DeFi", "Cryptography"], 99 | daysPosted: "5 days ago", 100 | logo: "./job_images/download (2).png", 101 | }, 102 | { 103 | id: 10, 104 | title: "Product Manager", 105 | company: "NextGen", 106 | location: "Austin, USA", 107 | description: "Drive the product development lifecycle from ideation to market launch.", 108 | salary: "$130K - $200K", 109 | tools: ["Agile", "Scrum", "JIRA", "Stakeholder Management", "Product Roadmap"], 110 | daysPosted: "8 days ago", 111 | logo: "./job_images/product.png", 112 | }, 113 | // Add more job listings as needed 114 | ]; 115 | 116 | const searchInput = document.getElementById('search-input'); 117 | const searchButton = document.getElementById('search-button'); 118 | const jobsContainer = document.getElementById('jobs'); 119 | 120 | searchButton.addEventListener('click', searchJobs); 121 | searchInput.addEventListener('keyup', liveSearchJobs); 122 | 123 | function searchJobs() { 124 | const searchTerm = searchInput.value.toLowerCase(); 125 | filterJobs(searchTerm); 126 | } 127 | 128 | function liveSearchJobs() { 129 | const searchTerm = searchInput.value.toLowerCase(); 130 | filterJobs(searchTerm); 131 | } 132 | 133 | function filterJobs(searchTerm) { 134 | const jobItems = document.querySelectorAll('.job-item'); 135 | 136 | jobItems.forEach(jobItem => { 137 | const jobTitle = jobItem.querySelector('h5').textContent.toLowerCase(); 138 | const jobCompany = jobItem.querySelector('h6').textContent.toLowerCase(); 139 | const jobLocation = jobItem.querySelector('.location').textContent.toLowerCase(); 140 | const jobDescription = jobItem.querySelector('p').textContent.toLowerCase(); 141 | 142 | if ( 143 | jobTitle.includes(searchTerm) || 144 | jobCompany.includes(searchTerm) || 145 | jobLocation.includes(searchTerm) || 146 | jobDescription.includes(searchTerm) 147 | ) { 148 | jobItem.style.display = 'flex'; 149 | } else { 150 | jobItem.style.display = 'none'; 151 | } 152 | }); 153 | } 154 | 155 | function generateJobCards() { 156 | const jobContainer = document.getElementById("jobs"); 157 | jobContainer.innerHTML = jobListings 158 | .map( 159 | (job) => ` 160 |
    161 |
    162 |
    163 | 164 |
    165 |
    166 |
    ${job.title}
    167 |
    ${job.company}
    168 | ${job.location} 169 |

    ${job.description}

    170 |

    Salary: ${job.salary}

    171 |

    Required Tools: ${job.tools.join(", ")}

    172 |

    Days Posted:${job.daysPosted}

    173 |
    174 |
    175 | 176 |
    177 |
    178 |
    179 | ` 180 | ) 181 | .join(""); 182 | } 183 | 184 | generateJobCards(); -------------------------------------------------------------------------------- /pages/jobs/jobs2.css: -------------------------------------------------------------------------------- 1 | body { 2 | overflow-x: hidden; 3 | width:100%; 4 | background-color: #e9e6e6; 5 | 6 | } 7 | .container-fluid 8 | { 9 | max-width: 100%; 10 | background-color: #e9e6e6; 11 | align-items:center; 12 | } 13 | 14 | .page-headings 15 | { 16 | margin-top:50px; 17 | text-align:center; 18 | font-family:Nunito; 19 | 20 | } 21 | 22 | .heading-pera 23 | { 24 | font-size: 15px; 25 | text-align:center; 26 | 27 | } 28 | 29 | .heading-head 30 | { 31 | font-family:Nunito; 32 | font-size: 60px; 33 | text-align:center; 34 | } 35 | .carousel-size 36 | { 37 | margin-top:80px; 38 | width:100%; 39 | height:80vh; 40 | } 41 | 42 | .darkmode .page-headings{ 43 | color: #fff; 44 | } 45 | 46 | .carousel-images 47 | { 48 | height:82vh; 49 | width:100%; 50 | object-fit: cover; 51 | margin-top: 35px; 52 | } 53 | 54 | .search-bar 55 | { 56 | 57 | height:3%; 58 | width:50%; 59 | background-color: black; 60 | border-radius:40px; 61 | padding:5px; 62 | align-items: center; 63 | padding-left:15px; 64 | padding-top:6px; 65 | margin:auto; 66 | margin-top:30px; 67 | 68 | } 69 | .searching 70 | { 71 | height:90%; 72 | width:80%; 73 | border-radius: 40px; 74 | padding:15px; 75 | color:#767272; 76 | } 77 | .search-button 78 | { 79 | width:17%; 80 | height:90%; 81 | background-color: #ffffff; 82 | color:#000000; 83 | border-radius:30px; 84 | } 85 | 86 | .search-bar-smd 87 | { 88 | align-items: center; 89 | width:100%; 90 | height:3%; 91 | background-color:black ; 92 | border-radius:40px; 93 | padding:2.5%; 94 | padding-left:12%; 95 | } 96 | .searching-smd 97 | { 98 | width:70%; 99 | height:90%; 100 | border-radius: 40px; 101 | padding:5%; 102 | 103 | } 104 | 105 | .search-button-smd 106 | { 107 | height: 90%; 108 | width:20%; 109 | border-radius:80px; 110 | } 111 | .job-widges 112 | { 113 | height:50%; 114 | width:100%; 115 | border-color: #000000; 116 | background-color: #e9e6e6; 117 | padding:30px; 118 | /* margin-top:1%; */ 119 | } 120 | 121 | .job-wid-smd 122 | { 123 | width:100%; 124 | border-color: #000000; 125 | background-color: #e9e6e6; 126 | padding:10px; 127 | } 128 | 129 | .job-card 130 | { 131 | height:55%; 132 | width:50%; 133 | border-color: black; 134 | background-color: #ffffff; 135 | padding:35px; 136 | border-radius:20px; 137 | padding-right: 50px; 138 | margin:2%; 139 | } 140 | 141 | .job-card-smd 142 | { 143 | 144 | height:55%; 145 | width:100%; 146 | border-color: black; 147 | background-color: #ffffff; 148 | padding:20px; 149 | border-radius:20px; 150 | padding-right: 50px; 151 | margin:2%; 152 | } 153 | 154 | .company-name 155 | { 156 | font-family:Tahoma; 157 | font-size:18px; 158 | color:#525050 159 | } 160 | 161 | .comp-logo 162 | { 163 | height:45px ; 164 | width:45px; 165 | margin-left: auto; 166 | } 167 | 168 | .job-name 169 | { 170 | font-family:Tahoma; 171 | font-size:25px; 172 | font-weight:bold ; 173 | } 174 | 175 | .location-details 176 | { 177 | margin-right:40px; 178 | margin-top:20px; 179 | margin-bottom:20px; 180 | } 181 | 182 | .det-name 183 | { 184 | margin-left:13px; 185 | font-weight: bold; 186 | font-family: Georgia; 187 | margin-bottom: 5px; 188 | } 189 | .det-ans 190 | { 191 | font-size: 16px; 192 | font-weight: 500; 193 | color:#747272; 194 | } 195 | .apply-sec 196 | { 197 | height:100%; 198 | width:100%; 199 | 200 | } 201 | .apply-button 202 | { 203 | height:80%; 204 | width:40%; 205 | border-radius: 25px; 206 | color:#ffffff; 207 | background-color: #000000; 208 | font-family: Arial; 209 | font-weight:600; 210 | } 211 | 212 | .loading 213 | { 214 | margin:50px; 215 | background-color: black; 216 | height:50px; 217 | width:40%; 218 | color:white; 219 | font-weight: 500; 220 | border-radius: 15px; 221 | margin-left:90px; 222 | } 223 | 224 | .load-box 225 | { 226 | height:20%; 227 | width:100%; 228 | } 229 | -------------------------------------------------------------------------------- /pages/privacypolicy/privacypolicy.css: -------------------------------------------------------------------------------- 1 | /* Background container for the privacy policy page */ 2 | .background-container { 3 | min-height: 100vh; 4 | background-image: linear-gradient(135deg, #908388 10%, #63605e 100%,#363333 30%); 5 | background-size: cover; 6 | background-position: center; 7 | display: flex; 8 | align-items: center; 9 | justify-content: center; 10 | padding: 20px; 11 | } 12 | 13 | .policy-container { 14 | padding: 32px; 15 | max-width: 800px; 16 | margin: 170px auto; /* Add top margin to account for the fixed navbar */ 17 | background-color: rgba(77, 71, 71, 0.8); 18 | backdrop-filter: blur(10px); 19 | border-radius: 8px; 20 | box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5); 21 | transition: transform 0.3s ease, box-shadow 0.3s ease; 22 | color: white; 23 | } 24 | 25 | .policy-container:hover { 26 | transform: translateY(-5px); 27 | box-shadow: 0 20px 40px rgba(0, 0, 0, 0.6); 28 | } 29 | 30 | /* Typography */ 31 | h1 { 32 | font-family: 'Montserrat', Arial, sans-serif; 33 | font-size: 2.5rem; /* Larger and more prominent heading */ 34 | color: #1a1818; 35 | text-align: center; 36 | margin-bottom: 20px; 37 | } 38 | 39 | h2 { 40 | font-family: 'Future2', Arial, sans-serif; 41 | font-size: 1.75rem; /* Slightly smaller than h1 */ 42 | color: #1a1818; 43 | margin-top: 30px; 44 | margin-bottom: 10px; 45 | } 46 | 47 | p { 48 | font-family: Arial, sans-serif; /* Clean and easy to read */ 49 | font-size: 1.125rem; /* Slightly larger for readability */ 50 | font-weight: 300; /* Light font-weight for modern look */ 51 | line-height: 1.6; /* Increase line spacing for readability */ 52 | color: #ffffff; 53 | margin-bottom: 15px; 54 | } 55 | .center-text { 56 | text-align: center; 57 | font-family: Arial, sans-serif; /* Optional: Choose your preferred font */ 58 | font-size: 1.125rem; /* Adjust size if needed */ 59 | margin: 20px 0; /* Adds space above and below the text */ 60 | } 61 | 62 | 63 | -------------------------------------------------------------------------------- /pages/privacypolicy/privacypolicy.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Privacy Policy 7 | 8 | 9 | 10 |
    11 | 18 | 22 |
    23 |
    24 |
    25 |

    Privacy Policy

    26 |

    Welcome to our Privacy Policy page. Your privacy is critically important to us.

    27 | 28 |

    1. Information We Collect

    29 |

    We collect several types of information for various purposes to provide and improve our service to you.

    30 | 31 |

    2. How We Use Your Information

    32 |

    We use the data we collect to operate, maintain, and improve our services. This includes using your data to understand how users interact with our services and to communicate updates.

    33 | 34 |

    3. Cookies

    35 |

    We use cookies and similar tracking technologies to track the activity on our website and hold certain information.

    36 | 37 |

    4. Data Protection Rights

    38 |

    You have the right to access, update, or delete your personal information. If you make a request, we have one month to respond to you.

    39 | 40 |

    5. Changes to This Privacy Policy

    41 |

    We may update our Privacy Policy from time to time. You are advised to review this page periodically for any changes.

    42 | 43 |

    6. Contact Us

    44 |

    If you have any questions about this Privacy Policy, please contact us.

    45 |
    46 |
    47 | 48 | 49 |
    50 | 51 | 52 | 57 | 63 | 69 | 70 |
    71 |
    72 |
    73 |
    74 |
    75 |
    76 |
    77 |
    78 |
    79 |
    80 |
    81 |
    82 |
    83 |
    84 |
    85 |
    86 |
    87 |
    88 |
    89 |
    90 |
    91 |
    92 |
    93 |
    94 |
    95 |
    96 |
    97 |
    98 |
    99 |
    100 |
    101 |
    102 | 123 | 124 | 164 | 165 | -------------------------------------------------------------------------------- /pages/resume-builder/4a3499c6b5cca368ec4e3717f9077114.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/resume-builder/4a3499c6b5cca368ec4e3717f9077114.gif -------------------------------------------------------------------------------- /pages/resume-builder/resume.css: -------------------------------------------------------------------------------- 1 | :root { 2 | /* --primary-color: #007bff; */ 3 | /* --primary-hover-color: #0056b3; */ 4 | --text-color: #fff; /* Changed text color to white */ 5 | --secondary-text-color: rgba(255, 255, 255, 0.7); /* Changed secondary text color to a lighter shade of white */ 6 | --border-color: #ddd; 7 | /* --focus-color: #007bff; */ 8 | } 9 | 10 | * { 11 | margin: 0; 12 | padding: 0; 13 | box-sizing: border-box; 14 | } 15 | body { 16 | font-family: 'Arial', sans-serif; 17 | background-image: url('pages/resume-builder/4a3499c6b5cca368ec4e3717f9077114.gif'); 18 | background-color: black; 19 | background-size: cover; 20 | background-attachment: fixed; 21 | background-position: center; 22 | padding: 20px; 23 | line-height: 1.6; 24 | } 25 | 26 | .container { 27 | max-width: 1200px; 28 | margin: 0 auto; 29 | border-radius: 8px; 30 | box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); 31 | padding: 40px; 32 | } 33 | 34 | #header1 { 35 | text-align: center; 36 | margin: 110px 0 30px; 37 | } 38 | 39 | h1 { 40 | font-size: 2.5rem; 41 | color: var(--text-color); 42 | } 43 | 44 | p { 45 | color: var(--secondary-text-color); 46 | font-size: 1.1rem; 47 | } 48 | 49 | .form-section { 50 | margin-bottom: 30px; 51 | color: white; 52 | } 53 | 54 | .form-group { 55 | display: flex; 56 | gap: 20px; 57 | } 58 | 59 | .form-field { 60 | flex: 1; 61 | display: flex; 62 | flex-direction: column; 63 | } 64 | 65 | label { 66 | font-weight: bold; 67 | margin-bottom: 8px; 68 | color: var(--text-color); /* Ensure label color is white */ 69 | } 70 | 71 | input, 72 | textarea { 73 | padding: 10px; 74 | border: 1px solid var(--border-color); 75 | border-radius: 5px; 76 | font-size: 1rem; 77 | transition: border-color 0.3s ease; 78 | color: var(--text-color); /* Set input text color to white */ 79 | background-color: transparent; /* Make input background transparent */ 80 | } 81 | 82 | input:focus, 83 | textarea:focus { 84 | border-color: var(--focus-color); 85 | outline: none; 86 | } 87 | 88 | textarea { 89 | resize: vertical; 90 | } 91 | 92 | button { 93 | background-color: var(--primary-color); 94 | color: white; 95 | border: none; 96 | padding: 12px 20px; 97 | font-size: 1rem; 98 | cursor: pointer; 99 | border-radius: 5px; 100 | transition: background-color 0.3s ease; 101 | display: block; 102 | margin-top: 20px; 103 | } 104 | 105 | button:hover { 106 | background-color: var(--primary-hover-color); 107 | } 108 | 109 | #resumePreview { 110 | margin-top: 40px; 111 | color: white; 112 | } 113 | 114 | #resumeContent { 115 | padding: 30px; 116 | border: 1px solid var(--border-color); 117 | background-color: var(--preview-bg-color); 118 | border-radius: 8px; 119 | font-size: 1rem; 120 | color: black/* Set resume content text color to white */ 121 | } 122 | 123 | #downloadBtn { 124 | margin-top: 20px; 125 | } 126 | 127 | /* Template styles */ 128 | .template1 { 129 | font-family: 'Georgia', serif; 130 | padding: 30px; 131 | } 132 | 133 | .template1 h3 { 134 | font-size: 1.8rem; 135 | margin-bottom: 10px; 136 | color: var(--text-color); 137 | } 138 | 139 | .template1 p { 140 | color: #fff; /* Changed to white */ 141 | margin-bottom: 20px; 142 | } 143 | 144 | .template1 h4 { 145 | font-size: 1.4rem; 146 | margin-top: 20px; 147 | color: var(--text-color); 148 | } 149 | 150 | .template2 { 151 | font-family: 'Arial', sans-serif; 152 | /* Removed background color */ 153 | color: var(--text-color); 154 | } 155 | 156 | .template2 h3 { 157 | font-size: 2rem; 158 | margin-bottom: 8px; 159 | color: #fff; /* Changed to white */ 160 | } 161 | 162 | .template2 p { 163 | color: var(--text-color); 164 | margin-bottom: 8px; 165 | } 166 | 167 | .template2 h4 { 168 | font-size: 1.6rem; 169 | color: #fff; /* Changed to white */ 170 | } 171 | 172 | @media (max-width: 768px) { 173 | .form-group { 174 | flex-direction: column; 175 | } 176 | 177 | button { 178 | width: 100%; 179 | } 180 | } 181 | .features { 182 | background-color: transparent; 183 | padding: 3rem 0; 184 | margin: 3rem 0; 185 | color: white; 186 | } 187 | .feature-list { 188 | display: flex; 189 | justify-content: space-around; 190 | flex-wrap: wrap; 191 | color: white; 192 | } 193 | .feature-item { 194 | width: 30%; 195 | min-width: 250px; 196 | margin: 1rem; 197 | text-align: center; 198 | } 199 | .feature-icon { 200 | font-size: 3rem; 201 | /* color: #3498db; */ 202 | margin-bottom: 1rem; 203 | } 204 | -------------------------------------------------------------------------------- /pages/resume-builder/resume.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Resume Builder 8 | 9 | 10 | 11 | 12 |
    13 | 20 | 24 |
    25 |
    26 |

    Resume Builder

    27 |

    Fill in your details to build your professional resume.

    28 |
    29 |
    30 |
    31 |

    Objective:

    32 |
    33 | 34 |
    35 |
    36 | 37 |
    38 |

    Personal Details:

    39 |
    40 |
    41 | 42 | 43 |
    44 |
    45 | 46 | 47 |
    48 |
    49 | 50 | 51 |
    52 |
    53 | 54 | 55 |
    56 |
    57 |
    58 | 59 |
    60 |

    Education:

    61 |
    62 | 63 |
    64 |
    65 | 66 |
    67 |
    68 | 69 |
    70 |

    Experience:

    71 |
    72 | 73 |
    74 |
    75 | 76 |
    77 |

    Projects:

    78 |
    79 | 80 |
    81 |
    82 | 83 |
    84 |

    Skills:

    85 |
    86 | 87 |
    88 |
    89 | 90 |
    91 |

    Achievements:

    92 |
    93 | 94 |
    95 |
    96 | 97 |
    98 |

    Choose Template:

    99 |
    100 | 104 |
    105 |
    106 | 107 | 108 |
    109 | 110 |
    111 |

    Preview:

    112 |
    113 | 114 |
    115 |
    116 | 117 |
    118 |

    Why Choose Creative PathSphere Resume Builder?

    119 |
    120 |
    121 |
    🎨
    122 |

    User-Friendly Interface

    123 |

    Intuitive design that anyone can master, regardless of experience level.

    124 |
    125 |
    126 |
    🚀
    127 |

    Time-Saving Templates

    128 |

    Hundreds of professionally designed templates to jumpstart your creativity.

    129 |
    130 |
    131 |
    💡
    132 |

    Endless Customization

    133 |

    Flexible tools that allow you to bring your unique vision to life.

    134 |
    135 |
    136 |
    137 | 138 | 139 | 140 | 141 | 190 | 191 | 192 | 193 | -------------------------------------------------------------------------------- /pages/scholarship-feature/buddy4study.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/scholarship-feature/buddy4study.xlsx -------------------------------------------------------------------------------- /pages/scholarship-feature/scholarships.css: -------------------------------------------------------------------------------- 1 | /* General body and typography settings */ 2 | 3 | body { 4 | font-family: Arial, sans-serif; 5 | background-color: #3e3e3ef4; 6 | margin: 0; 7 | padding: 0; 8 | 9 | } 10 | 11 | 12 | 13 | #heroid 14 | { 15 | background: linear-gradient(135deg, #3e3e3ef4, #000000e3 , #000000 ,#1b1b1bdf); 16 | background-size: 300% 300%; 17 | animation: ga 10s ease infinite; 18 | height: 100vh; 19 | display: flex; 20 | justify-content: center; 21 | align-items: center; 22 | color: white; 23 | 24 | } 25 | 26 | @keyframes ga { 27 | 0% { background-position: 0% 50%; } 28 | 50% { background-position: 100% 50%; } 29 | 100% { background-position: 0% 50%; } 30 | 31 | } 32 | 33 | #herohead 34 | { 35 | font-family: 'Playfair Display', serif; 36 | font-size: 4rem; /* Large font size */ 37 | letter-spacing: 1px; 38 | margin-bottom: 0; 39 | color: white; 40 | opacity: 0; /* Start invisible for fade-in */ 41 | transform: scale(0.9); /* Slightly shrink for zoom-in effect */ 42 | text-align: center; 43 | animation: fadeInZoom 4s ease-in-out forwards, glow 8s ease-in-out infinite alternate; 44 | } 45 | 46 | @keyframes fadeInZoom { 47 | 0% { opacity: 0; transform: scale(0.7); } 48 | 100% { opacity: 1; transform: scale(1); } 49 | } 50 | 51 | #herohead:hover { 52 | text-shadow: 2px 2px 20px rgba(255, 255, 255, 0.8); 53 | } 54 | 55 | #herocap 56 | { 57 | font-size: 1.2rem; 58 | color: #d3d3d3; 59 | margin-top: 0rem; 60 | font-style: italic; 61 | opacity: 0.5; 62 | animation: fadeInCaption 5s ease-in forwards 2s; 63 | text-align: center; 64 | position: relative; 65 | transition: color 0.4s ease; /* Smooth color transition on hover */ 66 | } 67 | 68 | #herocap:hover { 69 | color: #ffffff; 70 | } 71 | 72 | /* Underline Animation */ 73 | #herocap::after { 74 | content: ''; 75 | position: absolute; 76 | left: 50%; 77 | bottom: -5px; /* Slightly below the text */ 78 | width: 0; 79 | height: 2px; 80 | background-color: white; 81 | transition: width 0.4s ease, left 0.4s ease; 82 | } 83 | 84 | #herocap:hover::after { 85 | width: 100%; /* Underline expands to full width */ 86 | left: 0; 87 | } 88 | @keyframes fadeInCaption { 89 | 0% { opacity: 0; } 90 | 100% { opacity: 1; } 91 | } 92 | 93 | 94 | h1 { 95 | text-align: center; 96 | color: #333; 97 | margin-top: 0; 98 | } 99 | 100 | p { 101 | text-align: center; 102 | } 103 | 104 | 105 | .search-bar 106 | { 107 | height:10%; 108 | width:100%; 109 | } 110 | 111 | 112 | .scholarship-container { 113 | display: flex; 114 | flex-wrap: wrap; 115 | justify-content: center; 116 | padding: 20px; 117 | background-color: #e7e4e459; 118 | } 119 | 120 | 121 | /* Card styling */ 122 | .card { 123 | background: linear-gradient(145deg, #000000, #5f5f5f); /* Blue and green gradient background */ 124 | border-radius: 15px; 125 | box-shadow: 0 8px 18px rgba(0, 0, 0, 0.25); 126 | margin: 15px; /* Reduced margin */ 127 | width: 270px; /* Slightly smaller width */ 128 | padding: 15px; /* Reduced padding */ 129 | transition: transform 0.4s ease, box-shadow 0.4s ease, background 0.3s ease; 130 | color: #fff; 131 | font-family: "Arial", sans-serif; 132 | text-align: center; 133 | display: flex; 134 | flex-direction: column; 135 | justify-content: space-between; 136 | } 137 | 138 | /* Card hover effect - turns pink on hover */ 139 | 140 | .card:hover { 141 | transform: scale(1.08) rotateZ(2deg); 142 | box-shadow: 6px 6px 25px rgb(0, 0, 0); 143 | } 144 | 145 | /* Card image styling */ 146 | 147 | .card img { 148 | background-size: cover; 149 | background-repeat: no-repeat; 150 | border: 2px solid rgb(234, 231, 231); 151 | border-radius: 5px; 152 | width: 100%; 153 | height: 150px; /* Smaller image to reduce height */ 154 | object-fit: cover; 155 | margin-bottom: 10px; /* Reduced margin below the image */ 156 | box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2); /* Adds shadow effect */ 157 | } 158 | 159 | 160 | /* Card heading */ 161 | 162 | .card h2 { 163 | font-size: 18px; /* Slightly smaller font */ 164 | color: black; 165 | } 166 | 167 | /* Card paragraph */ 168 | 169 | .card p { 170 | color: #5a5757; 171 | font-size: 14px; /* Reduced font size */ 172 | margin: 8px 0; /* Smaller margin */ 173 | line-height: 1.4; /* Slightly tighter line spacing */ 174 | } 175 | 176 | /* Button styling inside card */ 177 | 178 | .card a, 179 | .card button { 180 | display: inline-block; 181 | padding: 5px 10px; 182 | background-color: white; 183 | color: black; 184 | border-radius: 5px; 185 | text-decoration: none; 186 | border: solid black 1px; 187 | cursor: pointer; 188 | font-size: 16px; 189 | transition: background-color 0.4s ease, transform 0.4s ease, box-shadow 0.4s ease; 190 | } 191 | 192 | /* Hover effect for buttons */ 193 | 194 | .card a:hover, 195 | .card button:hover { 196 | background-color: black; 197 | color:white; 198 | transform: translateY(-6px); 199 | box-shadow: 0 8px 18px rgba(0, 0, 0, 0.6); 200 | } 201 | 202 | /* Card transition effects */ 203 | 204 | .card { 205 | perspective: 1000px; 206 | } 207 | 208 | .card:hover { 209 | transform: rotateY(3deg) scale(1.05); 210 | transition: transform 0.5s ease; 211 | } 212 | 213 | /* Modal styling */ 214 | 215 | .modal { 216 | display: none; 217 | position: fixed; 218 | z-index: 1000; 219 | left: 0; 220 | top: 0; 221 | width: 100%; 222 | height: 100%; 223 | background-color: rgba(0, 0, 0, 0.5); 224 | justify-content: center; 225 | align-items: center; 226 | } 227 | 228 | 229 | /* Modal content box */ 230 | 231 | .modal-content { 232 | background-color: white; 233 | padding: 20px; 234 | border-radius: 10px; 235 | max-width: 500px; 236 | width: 90%; 237 | } 238 | 239 | 240 | /* Close button for modal */ 241 | 242 | .close-btn { 243 | float: right; 244 | cursor: pointer; 245 | color: #aaa; 246 | font-size: 24px; 247 | } 248 | 249 | .close-btn:hover { 250 | color: #333; 251 | } 252 | 253 | .modal h2 { 254 | margin-top: 0; 255 | } 256 | 257 | 258 | /* Modal text */ 259 | 260 | .modal p { 261 | font-size: 16px; 262 | color: #333; 263 | } 264 | 265 | 266 | /* Modal apply button */ 267 | 268 | .modal a { 269 | display: inline-block; 270 | margin-top: 10px; 271 | padding: 10px 15px; 272 | background-color: #000000; 273 | color: white; 274 | border-radius: 5px; 275 | text-decoration: none; 276 | transition: background-color 0.2s ease; 277 | } 278 | 279 | .modal a:hover { 280 | background-color: #343434; 281 | } 282 | 283 | 284 | /* Search bar styling */ 285 | 286 | .search-bar { 287 | display: flex; 288 | align-items: center; 289 | border: 1px solid #ccc; 290 | border-radius: 40px; 291 | overflow: hidden; 292 | width: 550px; 293 | height:70px; 294 | padding:20px; 295 | margin: 20px auto; 296 | border-radius: 20px; 297 | background: linear-gradient(90deg, #a9a9a9, #333333); 298 | transition: width 0.5s ease, background-color 0.5s ease; 299 | box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); 300 | } 301 | 302 | .search-bar:hover { 303 | width: 700px; /* Expands smoothly */ 304 | background: linear-gradient(90deg, #272727, #111111); /* Darker gradient on hover */ 305 | box-shadow: 0 8px 16px rgba(0, 0, 0, 0.5); 306 | color :white; 307 | } 308 | 309 | .search-bar input { 310 | border: black solid 1px; 311 | color:#2f2f2f; 312 | border-radius: 40px; 313 | padding: 10px; 314 | font-size: 16px; 315 | flex: 1; 316 | } 317 | 318 | .pagination { 319 | display: flex; 320 | justify-content: center; 321 | align-items: center; 322 | margin: 20px 0; 323 | } 324 | 325 | .pagination button { 326 | background-color: #000000; 327 | color: white; 328 | border: none; 329 | padding: 10px 15px; 330 | margin: 0 5px; 331 | cursor: pointer; 332 | border-radius: 5px; 333 | transition: background-color 0.3s ease, transform 0.2s; 334 | } 335 | 336 | .pagination button:hover { 337 | background-color: #535353; 338 | transform: scale(1.05); 339 | } 340 | 341 | .pagination button:disabled { 342 | background-color: #c0c0c0; 343 | cursor: not-allowed; 344 | } 345 | #like_btn{ 346 | border:none; 347 | } 348 | #page-info { 349 | margin: 0 15px; 350 | font-size: 1.1em; 351 | font-weight: bold; 352 | } 353 | .card .buttons{ 354 | margin-top: 8px; 355 | margin-bottom: 10px; 356 | } 357 | .read-more{ 358 | margin-left: 10px; 359 | } 360 | .card h4{ 361 | width: 100%; 362 | 363 | } 364 | .comment-input { 365 | height: 2.5rem; 366 | margin-right: 5px; 367 | border-radius: 8px; 368 | padding-left: 5px; 369 | padding-top: 7px; 370 | border: 1px solid #ccc; 371 | outline: none; 372 | font-size: 1rem; 373 | resize: none; /* Disables the text area's resize handle */ 374 | box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.1); 375 | transition: box-shadow 0.3s ease; 376 | } 377 | 378 | .comment-input:focus { 379 | box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2); /* Highlight shadow on focus */ 380 | border-color: #66afe9; 381 | } 382 | 383 | .card .comments-section{ 384 | display: flex; 385 | justify-content: center; 386 | align-items: center; 387 | flex-wrap: wrap; 388 | } 389 | 390 | #post_btn{ 391 | color:white; 392 | background: #000; 393 | } 394 | #comm_ent{ 395 | padding: 0px; 396 | } 397 | -------------------------------------------------------------------------------- /pages/scholarships/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pages/scholarships/favicon.ico -------------------------------------------------------------------------------- /pages/scholarships/scholarships.js: -------------------------------------------------------------------------------- 1 | // Function to filter scholarships based on search input 2 | function filterScholarships() { 3 | const input = document.getElementById('searchInput').value.toLowerCase(); 4 | const items = document.getElementsByClassName('scholarship-item'); 5 | 6 | Array.from(items).forEach((item) => { 7 | const title = item.getElementsByTagName('h2')[0].textContent.toLowerCase(); 8 | if (title.includes(input)) { 9 | item.style.display = ''; 10 | } else { 11 | item.style.display = 'none'; 12 | } 13 | }); 14 | } 15 | 16 | // Function to simulate the application process 17 | function applyForScholarship(scholarshipName) { 18 | alert(`You have applied for the ${scholarshipName}.`); 19 | } 20 | 21 | // Function to toggle display of scholarship details for a specific card 22 | function toggleDetails(button) { 23 | // Get the specific card that contains the clicked button 24 | const scholarshipItem = button.closest('.scholarship-item'); 25 | 26 | // Find the details section within the specific card 27 | const details = scholarshipItem.querySelector('.scholarship-details'); 28 | 29 | // Toggle the visibility of the details section 30 | if (details.style.display === 'none' || details.style.display === '') { 31 | details.style.display = 'block'; 32 | button.textContent = 'Read Less'; 33 | } else { 34 | details.style.display = 'none'; 35 | button.textContent = 'Read More'; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /pages/terms/terms.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500&display=swap'); 2 | * { 3 | padding: 0px; 4 | margin: 0px; 5 | border: 0px; 6 | } 7 | *, 8 | *:before, 9 | *:after { 10 | box-sizing: border-box; 11 | } 12 | html, 13 | body { 14 | height: 700px; 15 | min-width: 320px; 16 | font-size: 16px; 17 | } 18 | body { 19 | line-height: 1; 20 | font-family: "Space Grotesk", sans-serif; 21 | /* text-rendering: optimizeLegibility; */ 22 | -ms-text-size-adjust: 100%; 23 | -moz-text-size-adjust: 100%; 24 | -webkit-text-size-adjust: 100%; 25 | -webkit-font-smoothing: antialiased; 26 | -moz-osx-font-smoothing: grayscale; 27 | } 28 | input, 29 | button, 30 | textarea { 31 | font-size: inherit; 32 | line-height: inherit; 33 | } 34 | button { 35 | cursor: pointer; 36 | color: inherit; 37 | background-color: transparent; 38 | } 39 | a { 40 | color: inherit; 41 | text-decoration: none; 42 | } 43 | ul li { 44 | list-style: none; 45 | } 46 | img { 47 | vertical-align: top; 48 | } 49 | h1, 50 | h2, 51 | h3, 52 | h4, 53 | h5, 54 | h6 { 55 | font-weight: inherit; 56 | font-size: inherit; 57 | } 58 | 59 | /* Container */ 60 | [class*="__container"] { 61 | max-width: 1240px; 62 | margin: 0 auto; 63 | padding: 0 15px; 64 | } 65 | 66 | /* Font */ 67 | @import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500&display=swap"); 68 | 69 | /* Common blocks */ 70 | .intro { 71 | display: flex; 72 | align-items: center; 73 | gap: 2.5rem; 74 | } 75 | @media (max-width: 767.98px) { 76 | .intro { 77 | flex-direction: column; 78 | align-items: flex-start; 79 | gap: 0.8rem; 80 | } 81 | } 82 | 83 | .title { 84 | font-size: 40px; 85 | font-weight: 500; 86 | line-height: 127.5%; 87 | position: relative; 88 | /* top: 70px; 89 | left: 290px; */ 90 | margin-top: 130px; 91 | /* margin-left: 135px; */ 92 | left: 400px; 93 | text-transform: capitalize; 94 | display: inline-flex; 95 | font-family: Space Grotesk; 96 | padding: 0 7px 0 7px; 97 | } 98 | @media (max-width: 1010px) { 99 | .title { 100 | left: 250px; 101 | } 102 | } 103 | @media (max-width: 767.98px) { 104 | .title { 105 | font-size: 36px; 106 | left: 5px; 107 | } 108 | } 109 | 110 | .title::before { 111 | content: ""; 112 | position: absolute; 113 | top: 0; 114 | left: 0; 115 | width: 100%; 116 | height: 100%; 117 | z-index: -1; 118 | background-color: #b9ff66; 119 | border-radius: 0.4375rem; 120 | } 121 | 122 | .text { 123 | font-size: 18px; 124 | line-height: 127%; /* 23/18 */ 125 | } 126 | @media (max-width: 479.98px) { 127 | .text { 128 | font-size: 16px; 129 | } 130 | } 131 | 132 | /* Process */ 133 | .process { 134 | display: flex; 135 | flex-direction: column; 136 | align-items: center; 137 | justify-content: center; 138 | padding: 70px 0; 139 | font-family: Space Grotesk; 140 | } 141 | @media (max-width: 767.98px) { 142 | .process { 143 | padding: 30px 0 30px 0; 144 | } 145 | } 146 | 147 | .process__intro { 148 | margin-bottom: 80px; 149 | } 150 | @media (max-width: 991.98px) { 151 | .process__intro { 152 | margin-bottom: 32px; 153 | } 154 | } 155 | 156 | .process__title { 157 | flex-shrink: 0; 158 | 159 | } 160 | 161 | .process__text { 162 | max-width: 18.25rem; 163 | } 164 | 165 | .accordions__list { 166 | display: flex; 167 | flex-direction: column; 168 | gap: 1.8rem; 169 | } 170 | @media (max-width: 479.98px) { 171 | .accordions__list { 172 | gap: 1.25rem; 173 | } 174 | } 175 | 176 | .accordions__item { 177 | background-color: #f3f3f3; 178 | border-radius: 2.8rem; 179 | overflow: hidden; 180 | transition: 0.5s cubic-bezier(0.65, 0.2, 0.65, 1); 181 | box-shadow: 0px 0.3125rem 0px 0px #191a23; 182 | border: 0.0625rem solid #191a23; 183 | margin-top: 22px; 184 | } 185 | @media (max-width: 479.98px) { 186 | .accordions__item { 187 | border-radius: 1.5rem; 188 | width: 100%; 189 | display: flex; 190 | flex-direction: column; 191 | } 192 | } 193 | 194 | .accordions__control { 195 | display: flex; 196 | align-items: center; 197 | padding: 40px 60px; 198 | width: 100%; 199 | position: relative; 200 | } 201 | @media (max-width: 767.98px) { 202 | .accordions__control { 203 | padding: 30px; 204 | } 205 | } 206 | @media (max-width: 479.98px) { 207 | .accordions__control { 208 | padding: 20px; 209 | } 210 | } 211 | 212 | .accordions__number { 213 | font-size: 60px; 214 | font-family: Space Grotesk; 215 | padding-right: 1.5625rem; 216 | font-weight: 500; 217 | } 218 | @media (max-width: 767.98px) { 219 | .accordions__number { 220 | font-size: 40px; 221 | padding-right: 0.625rem; 222 | } 223 | } 224 | @media (max-width: 479.98px) { 225 | .accordions__number { 226 | font-size: 20px; 227 | } 228 | } 229 | 230 | .accordions__title { 231 | font-family: Space Grotesk; 232 | font-size: 30px; 233 | font-weight: 500; 234 | text-transform: capitalize; 235 | flex: 1 1 auto; 236 | display: flex; 237 | line-height: 120%; 238 | padding-right: 1.25rem; 239 | justify-content: flex-start; 240 | text-align: left; 241 | } 242 | @media (max-width: 767.98px) { 243 | .accordions__title { 244 | font-size: 20px; 245 | } 246 | } 247 | 248 | .accordions__icon { 249 | flex: 0 0 58px; 250 | display: flex; 251 | width: 58px; 252 | height: 58px; 253 | background-color: #f3f3f3; 254 | border: 1px solid #191a23; 255 | border-radius: 50%; 256 | position: relative; 257 | transition: 0.5s cubic-bezier(0.65, 0.2, 0.65, 1); 258 | } 259 | @media (max-width: 479.98px) { 260 | .accordions__icon { 261 | flex: 0 0 32px; 262 | display: flex; 263 | width: 32px; 264 | height: 32px; 265 | } 266 | } 267 | .accordions__icon::before { 268 | content: ""; 269 | width: 1.5625rem; 270 | height: 0.3125rem; 271 | background-color: #191a23; 272 | position: absolute; 273 | top: 50%; 274 | left: 50%; 275 | transform: translate(-50%, -50%); 276 | } 277 | @media (max-width: 479.98px) { 278 | .accordions__icon::before { 279 | width: 15px; 280 | height: 2px; 281 | } 282 | } 283 | 284 | .accordions__icon::after { 285 | content: ""; 286 | width: 1.5625rem; 287 | height: 0.3125rem; 288 | background-color: #191a23; 289 | position: absolute; 290 | top: 50%; 291 | left: 50%; 292 | transform: translate(-50%, -50%) rotate(90deg); 293 | } 294 | @media (max-width: 479.98px) { 295 | .accordions__icon::after { 296 | width: 15px; 297 | height: 2px; 298 | } 299 | } 300 | 301 | .accordions__content { 302 | padding: 0 60px 0 60px; 303 | max-height: 0; 304 | overflow: hidden; 305 | will-change: max-height; 306 | transition: 0.5s cubic-bezier(0.65, 0.2, 0.65, 1); 307 | box-sizing: content-box; 308 | position: relative; 309 | z-index: 5; 310 | } 311 | @media (max-width: 767.98px) { 312 | .accordions__content { 313 | padding: 0 30px 0 30px; 314 | } 315 | } 316 | @media (max-width: 479.98px) { 317 | .accordions__content { 318 | padding: 0 20px 0 20px; 319 | } 320 | } 321 | 322 | .open .accordions__content { 323 | padding: 20px 60px 40px 60px; 324 | } 325 | @media (max-width: 767.98px) { 326 | .open .accordions__content { 327 | padding: 20px 30px; 328 | } 329 | } 330 | @media (max-width: 479.98px) { 331 | .open .accordions__content { 332 | padding: 0px 20px 20px 20px; 333 | } 334 | } 335 | 336 | .open { 337 | background-color: #b9ff66; 338 | } 339 | 340 | .open .accordions__icon { 341 | transform: rotate(225deg); 342 | } 343 | .scroll-top{ 344 | position: fixed; 345 | bottom: 12px; 346 | right: 80px; 347 | background-color: #00ff40; 348 | color: #fff; 349 | border: none; 350 | padding: 20px; 351 | font-size: 16px; 352 | cursor: pointer; 353 | border-radius: 50%; 354 | z-index: 10000; 355 | width: 60px; 356 | height: 60px; 357 | display: flex; 358 | justify-content: center; 359 | align-items: center; 360 | text-decoration: none; 361 | } 362 | .scroll-top, .fa-arrow-up{ 363 | font-size: 20px; 364 | } 365 | .scroll-top .fa-arrow-up{ 366 | transition: 0.2s ease-out; 367 | color: #fff; 368 | transition: 0.2s ease-out; 369 | } 370 | 371 | .scroll-top:hover { 372 | background-color: #34947c; 373 | } 374 | .scroll-top:hover .fa-arrow-up { 375 | transform: translateY(-4px); 376 | } -------------------------------------------------------------------------------- /pages/terms/terms.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded", () => { 2 | const accordions = document.querySelectorAll(".accordions__item"); 3 | 4 | accordions.forEach((el) => { 5 | el.addEventListener("click", (e) => { 6 | const self = e.currentTarget; 7 | const control = self.querySelector(".accordions__control"); 8 | const content = self.querySelector(".accordions__content"); 9 | 10 | self.classList.toggle("open"); 11 | 12 | if (self.classList.contains("open")) { 13 | control.setAttribute("aria-expanded", true); 14 | content.setAttribute("aria-hidden", false); 15 | content.style.maxHeight = content.scrollHeight + "px"; 16 | } else { 17 | control.setAttribute("aria-expanded", false); 18 | content.setAttribute("aria-hidden", true); 19 | content.style.maxHeight = null; 20 | } 21 | }); 22 | }); 23 | }); 24 | 25 | // document.addEventListener("DOMContentLoaded", function () { 26 | // const accordionsIcon = document.querySelector(".accordions__icon"); 27 | 28 | // accordionsIcon.addEventListener("click", function () { 29 | // accordionsIcon.style.color = "white"; 30 | // }); 31 | // }); 32 | document.addEventListener("DOMContentLoaded", function () { 33 | const accordionsIcons = document.querySelectorAll(".accordions__icon"); 34 | 35 | accordionsIcons.forEach((icon) => { 36 | icon.addEventListener("click", function () { 37 | const parentItem = icon.closest(".accordions__item"); 38 | const accordionsTitle = parentItem.querySelector(".accordions__title"); 39 | const accordionsNumber = parentItem.querySelector(".accordions__number"); 40 | 41 | if (parentItem.classList.contains("open")) { 42 | icon.style.color = "white"; 43 | if (accordionsTitle) { 44 | accordionsTitle.style.color = "white"; 45 | } 46 | if (accordionsNumber) { 47 | accordionsNumber.style.color = "white"; 48 | } 49 | } else { 50 | icon.style.color = "black"; 51 | if (accordionsTitle) { 52 | accordionsTitle.style.color = "black"; 53 | } 54 | if (accordionsNumber) { 55 | accordionsNumber.style.color = "black"; 56 | } 57 | } 58 | }); 59 | }); 60 | 61 | const accordionsItems = document.querySelectorAll(".accordions__item"); 62 | accordionsItems.forEach((item) => { 63 | item.addEventListener("click", function () { 64 | const icon = item.querySelector(".accordions__icon"); 65 | const accordionsTitle = item.querySelector(".accordions__title"); 66 | const accordionsNumber = item.querySelector(".accordions__number"); 67 | 68 | if (item.classList.contains("open")) { 69 | icon.style.color = "white"; 70 | if (accordionsTitle) { 71 | accordionsTitle.style.color = "white"; 72 | } 73 | if (accordionsNumber) { 74 | accordionsNumber.style.color = "white"; 75 | } 76 | } else { 77 | icon.style.color = "black"; 78 | if (accordionsTitle) { 79 | accordionsTitle.style.color = "black"; 80 | } 81 | if (accordionsNumber) { 82 | accordionsNumber.style.color = "black"; 83 | } 84 | } 85 | }); 86 | }); 87 | }); 88 | -------------------------------------------------------------------------------- /pages/testimonials/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Reviews, Testimonials & Popular Services 7 | 145 | 146 | 147 |
    148 |

    Testimonials & Reviews

    149 |

    Create a standout resume with ease and confidence!

    150 |
    151 |
    152 |
    153 |
    154 |
    20k+
    155 |
    Satisfied Users
    156 |
    157 |
    158 |
    2M+
    159 |
    Resumes Created
    160 |
    161 |
    162 |
    4.9
    163 |
    User Rating
    164 |
    165 |
    166 | 167 |

    What Our Users Are Saying

    168 |
    169 |
    170 |

    Jessica M.

    171 |
    ★★★★★
    172 |

    "This resume builder has transformed my job application process. It's so simple yet effective!"

    173 |
    174 |
    175 |

    David P.

    176 |
    ★★★★☆
    177 |

    "The templates made my resume look professional and polished. Highly recommend for job seekers!"

    178 |
    179 |
    180 |

    Samantha K.

    181 |
    ★★★★★
    182 |

    "Building my resume was a breeze! The tool is incredibly user-friendly and offers tons of customization."

    183 |
    184 |
    185 | 186 |

    Features Loved by Our Users

    187 |
    188 |
    189 |

    Professional Templates

    190 |

    "The templates helped me structure my resume perfectly and stand out to recruiters."

    191 |
    192 |
    193 |

    Customizable Sections

    194 |

    "I loved how easy it was to customize my resume for each job I applied to."

    195 |
    196 |
    197 |

    Real-Time Previews

    198 |

    "Seeing changes in real-time helped me perfect my resume quickly."

    199 |
    200 |
    201 | 202 |
    203 |

    Why Choose Our Resume Builder?

    204 |
    205 |
    206 |
    ⚙️
    207 |

    Easy to Use

    208 |

    Our tool is designed to be simple and intuitive for everyone.

    209 |
    210 |
    211 |
    📄
    212 |

    ATS-Friendly Templates

    213 |

    Ensure your resume gets past the screening bots with optimized templates.

    214 |
    215 |
    216 |
    🎯
    217 |

    Tailored Suggestions

    218 |

    Receive helpful tips and suggestions based on your career field.

    219 |
    220 |
    221 |
    222 | 223 |
    224 |

    Ready to Land Your Dream Job?

    225 |

    Start creating your professional resume in minutes!

    226 | Start Building Now ➡ 227 |
    228 |
    229 | 230 | 231 | -------------------------------------------------------------------------------- /pathsphere.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/pathsphere.png -------------------------------------------------------------------------------- /popup.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aditya-bhaumik/Pathsphere/856b03263683372d510afd7dcc818cfaa587d1ab/popup.jpg -------------------------------------------------------------------------------- /popup.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', function() { 2 | document.getElementById('popup-nl').style.display = 'flex'; // Show the popup immediately 3 | 4 | // Close the pop-up when the user clicks the close button 5 | document.querySelector('.close-nl').addEventListener('click', function() { 6 | document.getElementById('popup-nl').style.display = 'none'; 7 | }); 8 | 9 | 10 | // Handle form submission 11 | document.getElementById('emailForm-nl').addEventListener('submit', function(event) { 12 | event.preventDefault(); 13 | 14 | const email = document.getElementById('email-nl').value; 15 | if (email) { 16 | alert(`Your email ID ${email} has been registered successfully for the newsletter.`); // Added quotes 17 | document.getElementById('popup-nl').style.display = 'none'; // Ensure this matches your popup ID 18 | } 19 | }); 20 | 21 | 22 | // Handle "No thanks" link 23 | document.querySelector('.no-thanks-nl').addEventListener('click', function(event) { 24 | event.preventDefault(); 25 | document.getElementById('popup-nl').style.display = 'none'; 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /resources/resource_library.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | PathSphere Collaborative Resource Library 7 | 8 | 9 | 10 | 11 |
    12 |
    13 |

    PathSphere

    14 | 19 |
    20 |
    21 | 22 |
    23 |
    24 |
    25 |

    Welcome to PathSphere

    26 |

    Join our collaborative resource library to discover and share valuable learning materials.

    27 |
    28 | 29 | 30 | 31 |
    32 |
    33 |
    34 | 35 |
    36 | 45 |
    46 |
    47 | 48 |
    49 |
    50 |

    Submit a Resource

    51 |
    52 | 53 | 54 | 55 | 61 | 62 |
    63 |
    64 |
    65 | 66 |
    67 |

    Moderation Panel

    68 |
    69 |
    70 |
    71 | 72 |
    73 |

    © 2024 PathSphere Collaborative Resource Library

    74 |
    75 |
    76 | 77 |
    78 | 79 | 80 | -------------------------------------------------------------------------------- /resources/styles.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700&display=swap'); 2 | 3 | :root { 4 | --primary-color: #4a6fa5; 5 | --secondary-color: #47b39d; 6 | --background-color: #f8f9fa; 7 | --text-color: #333; 8 | --card-background: #ffffff; 9 | --hover-color: #e9ecef; 10 | --shadow-color: rgba(0, 0, 0, 0.1); 11 | --transition-speed: 0.3s; 12 | } 13 | 14 | * { 15 | box-sizing: border-box; 16 | margin: 0; 17 | padding: 0; 18 | } 19 | 20 | body { 21 | font-family: 'Inter', sans-serif; 22 | line-height: 1.6; 23 | color: var(--text-color); 24 | background-color: var(--background-color); 25 | } 26 | 27 | .app-container { 28 | max-width: 1200px; 29 | margin: 0 auto; 30 | padding: 20px; 31 | } 32 | 33 | header { 34 | display: flex; 35 | justify-content: space-between; 36 | align-items: center; 37 | padding: 20px 0; 38 | margin-bottom: 30px; 39 | border-bottom: 2px solid var(--primary-color); 40 | } 41 | 42 | h1 { 43 | color: var(--primary-color); 44 | font-size: 2.5rem; 45 | font-weight: 700; 46 | transition: transform var(--transition-speed) ease; 47 | } 48 | 49 | h1:hover { 50 | transform: scale(1.05); 51 | } 52 | 53 | nav { 54 | display: flex; 55 | gap: 20px; 56 | } 57 | 58 | nav button { 59 | background: none; 60 | border: none; 61 | color: var(--text-color); 62 | font-size: 1rem; 63 | font-weight: 600; 64 | cursor: pointer; 65 | transition: color var(--transition-speed) ease, transform var(--transition-speed) ease; 66 | display: flex; 67 | align-items: center; 68 | gap: 8px; 69 | } 70 | 71 | nav button:hover, nav button.active { 72 | color: var(--primary-color); 73 | transform: translateY(-2px); 74 | } 75 | 76 | .panel { 77 | display: none; 78 | animation: fadeIn 0.5s ease; 79 | } 80 | 81 | .panel.active { 82 | display: block; 83 | } 84 | 85 | @keyframes fadeIn { 86 | from { opacity: 0; transform: translateY(20px); } 87 | to { opacity: 1; transform: translateY(0); } 88 | } 89 | 90 | .search-bar { 91 | display: flex; 92 | margin-bottom: 20px; 93 | gap: 10px; 94 | } 95 | 96 | .search-bar input, .search-bar select { 97 | flex: 1; 98 | padding: 12px; 99 | border: 1px solid #ddd; 100 | border-radius: 8px; 101 | font-size: 1rem; 102 | transition: box-shadow var(--transition-speed) ease, border-color var(--transition-speed) ease; 103 | } 104 | 105 | .search-bar input:focus, .search-bar select:focus { 106 | outline: none; 107 | border-color: var(--primary-color); 108 | box-shadow: 0 0 0 3px rgba(74, 111, 165, 0.2); 109 | } 110 | 111 | .resource-grid { 112 | display: grid; 113 | grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); 114 | gap: 25px; 115 | } 116 | 117 | .resource { 118 | background-color: var(--card-background); 119 | border-radius: 12px; 120 | padding: 25px; 121 | box-shadow: 0 4px 6px var(--shadow-color); 122 | transition: transform var(--transition-speed) ease, box-shadow var(--transition-speed) ease; 123 | } 124 | 125 | .resource:hover { 126 | transform: translateY(-5px); 127 | box-shadow: 0 8px 15px var(--shadow-color); 128 | } 129 | 130 | .resource h3 { 131 | color: var(--primary-color); 132 | margin-bottom: 12px; 133 | font-size: 1.3rem; 134 | } 135 | 136 | .resource-actions { 137 | margin-top: 20px; 138 | display: flex; 139 | justify-content: space-between; 140 | } 141 | 142 | button { 143 | background-color: var(--primary-color); 144 | color: white; 145 | border: none; 146 | padding: 12px 20px; 147 | border-radius: 8px; 148 | cursor: pointer; 149 | font-weight: 600; 150 | transition: background-color var(--transition-speed) ease, transform var(--transition-speed) ease; 151 | } 152 | 153 | button:hover { 154 | background-color: #3a5a8c; 155 | transform: translateY(-2px); 156 | } 157 | 158 | .auth-container, .form-container { 159 | max-width: 400px; 160 | margin: 0 auto; 161 | padding: 35px; 162 | background-color: var(--card-background); 163 | border-radius: 12px; 164 | box-shadow: 0 4px 6px var(--shadow-color); 165 | } 166 | 167 | form { 168 | display: flex; 169 | flex-direction: column; 170 | gap: 20px; 171 | } 172 | 173 | input, textarea, select { 174 | width: 100%; 175 | padding: 12px; 176 | border: 1px solid #ddd; 177 | border-radius: 8px; 178 | font-size: 1rem; 179 | transition: border-color var(--transition-speed) ease, box-shadow var(--transition-speed) ease; 180 | } 181 | 182 | input:focus, textarea:focus, select:focus { 183 | outline: none; 184 | border-color: var(--primary-color); 185 | box-shadow: 0 0 0 3px rgba(74, 111, 165, 0.2); 186 | } 187 | 188 | textarea { 189 | min-height: 120px; 190 | resize: vertical; 191 | } 192 | 193 | footer { 194 | text-align: center; 195 | margin-top: 50px; 196 | padding: 20px 0; 197 | border-top: 1px solid #ddd; 198 | color: #666; 199 | } 200 | 201 | #notificationContainer { 202 | position: fixed; 203 | top: 20px; 204 | right: 20px; 205 | z-index: 1000; 206 | } 207 | 208 | .notification { 209 | background-color: var(--secondary-color); 210 | color: white; 211 | padding: 15px 20px; 212 | border-radius: 8px; 213 | margin-bottom: 10px; 214 | box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); 215 | animation: slideIn 0.5s ease, fadeOut 0.5s ease 2.5s forwards; 216 | } 217 | 218 | @keyframes slideIn { 219 | from { transform: translateX(100%); opacity: 0; } 220 | to { transform: translateX(0); opacity: 1; } 221 | } 222 | 223 | @keyframes fadeOut { 224 | from { opacity: 1; } 225 | to { opacity: 0; } 226 | } 227 | 228 | /* Dark mode */ 229 | @media (prefers-color-scheme: dark) { 230 | :root { 231 | --background-color: #1a1a1a; 232 | --text-color: #f0f0f0; 233 | --card-background: #2a2a2a; 234 | --hover-color: #333; 235 | --shadow-color: rgba(0, 0, 0, 0.3); 236 | } 237 | 238 | input, textarea, select { 239 | background-color: #333; 240 | color: var(--text-color); 241 | border-color: #444; 242 | } 243 | 244 | input:focus, textarea:focus, select:focus { 245 | border-color: var(--primary-color); 246 | } 247 | } 248 | 249 | /* Responsive design */ 250 | @media (max-width: 768px) { 251 | header { 252 | flex-direction: column; 253 | align-items: flex-start; 254 | } 255 | 256 | nav { 257 | margin-top: 20px; 258 | flex-wrap: wrap; 259 | } 260 | 261 | .search-bar { 262 | flex-direction: column; 263 | } 264 | 265 | .resource-grid { 266 | grid-template-columns: 1fr; 267 | } 268 | } -------------------------------------------------------------------------------- /scripts/componentLoader.js: -------------------------------------------------------------------------------- 1 | const componentsToBeLoaded = []; 2 | const styles = []; 3 | const scripts = []; 4 | 5 | const fetchComponent = async (componentName) => { 6 | try { 7 | // fetch content from server 8 | const res = await fetch( 9 | `/components/${componentName}/${componentName}.html` 10 | ); 11 | 12 | // Check if the response is OK 13 | if (!res.ok) { 14 | throw new Error(`HTTP error! status: ${res.status}`); 15 | } 16 | 17 | // parse content 18 | const html = await res.text(); 19 | const parser = new DOMParser(); 20 | const doc = parser.parseFromString(html, 'text/html'); 21 | 22 | // Select components, styles, and scripts from the fetched HTML 23 | const components = doc.body.querySelectorAll('body > :not(script)') || []; 24 | const styles = doc.querySelectorAll('link[rel="stylesheet"], style') || []; 25 | const scripts = doc.querySelectorAll('script') || []; 26 | 27 | // return component, styles and scripts 28 | return [components, styles, scripts]; 29 | } catch (e) { 30 | console.error( 31 | 'Error while fetching component, please check if the given name is correct', 32 | e 33 | ); 34 | } 35 | }; 36 | 37 | const prepareComponent = async (stylesToLoad, scriptsToLoad) => { 38 | // iterate through styles to be loaded 39 | stylesToLoad.forEach((style) => { 40 | // get the href 41 | const href = style.href; 42 | // get the innerstyle 43 | const innerStyle = style.innerHTML; 44 | // if its empty then its redundant no need to inject 45 | if (!href && !innerStyle) return; 46 | 47 | // if the same content exists in the lists then dont add it to list 48 | if ( 49 | (href && styles.find((s) => s.href === href)) || 50 | (innerStyle && styles.find((s) => s.innerHTML === innerStyle)) 51 | ) 52 | return; 53 | // add style to html. this is done to avoid styles not loading properly 54 | document.head.appendChild(style); 55 | }); 56 | 57 | // iterate through scripts to be loaded 58 | scriptsToLoad.forEach((script) => { 59 | // get the innerHTML 60 | const innerScript = script.innerHTML; 61 | // get the src 62 | const src = script.src; 63 | 64 | // if its empty then its redundant no need to inject 65 | if (!innerScript && !src) return; 66 | 67 | // if the same content exists in the lists then dont add it to list 68 | if ( 69 | (innerScript && scripts.find((s) => s.innerHTML === innerScript)) || 70 | (src && scripts.find((s) => s.src === src)) 71 | ) 72 | return; 73 | // push to scripts list. its not injected directly right now to avoid loading scripts before all the html content is loaded 74 | scripts.push(script); 75 | }); 76 | }; 77 | 78 | const prependComponent = async ( 79 | componentName, 80 | targetElement = document.body 81 | ) => { 82 | componentsToBeLoaded.push(componentName); 83 | try { 84 | const [component, styles, scripts] = await fetchComponent(componentName); 85 | prepareComponent(styles, scripts); 86 | component.forEach((element) => { 87 | while (!targetElement) { 88 | targetElement = document.body; 89 | } 90 | targetElement.prepend(element); 91 | }); 92 | } catch (e) { 93 | console.error( 94 | 'error while fetching component, please check if the given name is correct', 95 | e 96 | ); 97 | } 98 | componentsToBeLoaded.pop(); 99 | console.log('Component loaded:', componentName); 100 | }; 101 | 102 | const appendComponent = async ( 103 | componentName, 104 | targetElement = document.body 105 | ) => { 106 | componentsToBeLoaded.push(componentName); 107 | const [component, styles, scripts] = await fetchComponent(componentName); 108 | 109 | prepareComponent(styles, scripts); 110 | 111 | component.forEach((element) => { 112 | targetElement.appendChild(element); 113 | }); 114 | 115 | componentsToBeLoaded.pop(); 116 | console.log('Component loaded:', componentName); 117 | }; 118 | 119 | const insertComponentBefore = async ( 120 | componentName, 121 | BeforeElement = document.body 122 | ) => { 123 | componentsToBeLoaded.push(componentName); 124 | const [component, styles, scripts] = await fetchComponent(componentName); 125 | 126 | prepareComponent(styles, scripts); 127 | 128 | component.forEach((element) => { 129 | BeforeElement.before(element); 130 | }); 131 | 132 | componentsToBeLoaded.pop(); 133 | console.log('Component loaded:', componentName); 134 | }; 135 | 136 | const insertComponentAfter = async ( 137 | componentName, 138 | AfterElement = document.body 139 | ) => { 140 | componentsToBeLoaded.push(componentName); 141 | const [component, styles, scripts] = await fetchComponent(componentName); 142 | 143 | prepareComponent(styles, scripts); 144 | 145 | component.forEach((element) => { 146 | AfterElement.after(element); 147 | }); 148 | 149 | componentsToBeLoaded.pop(); 150 | console.log('Component loaded:', componentName); 151 | }; 152 | 153 | const showContent = async () => { 154 | // remove loading screen 155 | const loadingScreen = document.getElementById('LoadingScreen'); 156 | loadingScreen.classList.remove('loading'); 157 | await new Promise((resolve) => setTimeout(resolve, 2000)); 158 | loadingScreen.classList.add('loaded'); 159 | 160 | // show body content 161 | // const bodyChildren = document.body.children; 162 | // Array.from(bodyChildren).forEach((child) => { 163 | // child.style.visibility = 'visible'; 164 | // }); 165 | }; 166 | 167 | const waitTillComponentsLoaded = async (callback = showContent) => { 168 | // wait till all components are loaded 169 | while (componentsToBeLoaded.length > 0) { 170 | await new Promise((resolve) => setTimeout(resolve, 100)); 171 | } 172 | 173 | // ! commented because this method is deprecated 174 | // load styles and scripts 175 | // for (const style of styles) { 176 | // document.head.appendChild(style); 177 | // console.log('Style loaded:', style); 178 | // } 179 | 180 | // load scripts 181 | for (const script of scripts) { 182 | const newScript = document.createElement('script'); 183 | const href = script.src; 184 | const innerScript = script.innerHTML; 185 | if (href) { 186 | newScript.src = href; 187 | } else { 188 | newScript.innerHTML = innerScript; 189 | } 190 | document.body.appendChild(newScript); 191 | } 192 | 193 | // call the callback by default show content 194 | callback(); 195 | }; 196 | 197 | const loadLoadingScreen = async () => { 198 | // add loading screen 199 | await prependComponent('LoadingScreen'); 200 | await waitTillComponentsLoaded(() => {}); 201 | // show the body content after loading screen is loaded 202 | document.body.style.visibility = 'visible'; 203 | }; 204 | 205 | const init = async () => { 206 | // wait till body tag is loaded 207 | while (!document.body) { 208 | await new Promise((resolve) => setTimeout(resolve, 100)); 209 | } 210 | // add loading screen 211 | await loadLoadingScreen(); 212 | // complete mounting the loadingscreen 213 | 214 | console.log('Loading components...'); 215 | 216 | await prependComponent('GlobalStyles'); 217 | await prependComponent('GlobalScripts'); 218 | }; 219 | init(); -------------------------------------------------------------------------------- /scripts/script.js: -------------------------------------------------------------------------------- 1 | gsap.from('nav', { 2 | duration: 1, 3 | y: -100, 4 | opacity: 0, 5 | ease: 'bounce', 6 | }); 7 | gsap.from('h1', { 8 | duration: 1.5, 9 | opacity: 0, 10 | x: -200, 11 | ease: 'power3.out', 12 | delay: 0.5, 13 | }); 14 | gsap.from('p', { 15 | duration: 1.5, 16 | opacity: 0, 17 | x: 200, 18 | ease: 'power3.out', 19 | delay: 1, 20 | }); 21 | gsap.from('.btn', { 22 | duration: 1, 23 | opacity: 0, 24 | scale: 0.5, 25 | stagger: 0.2, 26 | ease: 'back.out(1.7)', 27 | delay: 1.5, 28 | }); 29 | 30 | document.querySelectorAll('.faq-question').forEach((question) => { 31 | question.addEventListener('click', () => { 32 | const answer = question.nextElementSibling; 33 | const icon = question.querySelector('.toggle-icon'); 34 | 35 | if (answer.classList.contains('show')) { 36 | answer.classList.remove('show'); 37 | icon.textContent = '+'; 38 | icon.classList.remove('rotate'); 39 | } else { 40 | answer.classList.add('show'); 41 | icon.textContent = '-'; 42 | icon.classList.add('rotate'); 43 | } 44 | }); 45 | }); 46 | 47 | document.querySelectorAll('.btn').forEach((button) => { 48 | button.addEventListener('click', function () { 49 | button.style.animation = 'popup 0.5s ease'; 50 | 51 | // Remove the animation after it's done to allow it to be reapplied on subsequent clicks 52 | button.addEventListener('animationend', function () { 53 | button.style.animation = ''; 54 | }); 55 | }); 56 | }); 57 | --------------------------------------------------------------------------------