├── .env.sample ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.yml │ ├── feature_request.yml │ └── general_issue.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ └── welcome-contributors.yml ├── .gitignore ├── .husky └── pre-commit ├── .prettierignore ├── CODE_OF_CONDUCT.md ├── README.md ├── package.json ├── public ├── _redirects ├── favicon.ico ├── index.html ├── logo192.png ├── logo512.png ├── manifest.json ├── recievedToken.html └── robots.txt ├── src ├── App.css ├── App.test.tsx ├── App.tsx ├── assets │ ├── certificate_assets │ │ ├── cert-body.png │ │ ├── certificate.css │ │ └── projectpiker.css │ ├── darkwave1.svg │ ├── darkwave2.svg │ ├── darkwave3.svg │ ├── home.json │ ├── lightwave1.svg │ ├── lightwave2.svg │ ├── lightwave3.svg │ └── loginlightwave1.svg ├── components │ ├── Button.tsx │ ├── CertificatePdf.tsx │ ├── DarkModeButton.tsx │ ├── Footer.tsx │ ├── Fork.tsx │ ├── GenerateCertificate.tsx │ ├── Header.tsx │ ├── MicroLogin.tsx │ ├── OpenPopup.ts │ ├── ProjectDataTab.tsx │ ├── ProjectInput │ │ ├── BitbucketProjectInput.tsx │ │ ├── GithubProjectInput.tsx │ │ ├── GitlabProjectInput.tsx │ │ └── index.tsx │ ├── ProjectPicker.tsx │ ├── ProjectProgressBar │ │ ├── ProjectProgressBar.module.css │ │ └── ProjectProgressBar.tsx │ ├── ProjectStat.tsx │ ├── Spinner.tsx │ └── Toast.ts ├── config.ts ├── context │ ├── AuthContext │ │ ├── AuthProvider.tsx │ │ └── AuthReducer.ts │ ├── CertificateContext │ │ ├── CertificateProvider.tsx │ │ ├── CertificateReducer.ts │ │ └── CertificateRouter.tsx │ ├── ProjectContext │ │ ├── ProjectRouter.tsx │ │ └── index.tsx │ └── ThemeContext │ │ ├── ThemeProvider.tsx │ │ └── ThemeReducer.ts ├── index.css ├── index.tsx ├── logo.svg ├── pages │ ├── Certificate.tsx │ ├── Login.tsx │ ├── Main.tsx │ └── VerifyCertificate.tsx ├── react-app-env.d.ts ├── reportWebVitals.ts ├── router │ ├── config.ts │ └── route.tsx ├── setupTests.ts ├── sitemap │ └── .gitkeep └── tailwind.css ├── tailwind.config.js ├── tsconfig.json └── yarn.lock /.env.sample: -------------------------------------------------------------------------------- 1 | REACT_APP_API_BASE_URL=XXXXX 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.yml: -------------------------------------------------------------------------------- 1 | name: Bug Report 2 | description: Report a bug 3 | title: "[Bug]: " 4 | labels: 5 | - "bug" 6 | body: 7 | - type: checkboxes 8 | attributes: 9 | label: Preflight Checklist 10 | description: Please ensure you've completed all of the following. 11 | options: 12 | - label: I have read the Contribution.md for this project. 13 | required: true 14 | - label: I agree to follow the Code of Conduct that this project adheres to. 15 | required: true 16 | - label: I have searched the issue for a feature request that matches the one I want to file, without success. 17 | required: true 18 | - type: input 19 | attributes: 20 | label: Version 21 | description: What version of are you using? 22 | placeholder: 0.0.0 23 | validations: 24 | required: true 25 | - type: dropdown 26 | attributes: 27 | label: What arch are you using? 28 | options: 29 | - x64 30 | - ia32 31 | - arm64 (including Apple Silicon) 32 | - Other (specify below) 33 | validations: 34 | required: true 35 | - type: textarea 36 | attributes: 37 | label: Current Behavior 38 | description: A clear description of what actually happens. 39 | validations: 40 | required: true 41 | - type: textarea 42 | attributes: 43 | label: Expected Behavior 44 | description: A clear and concise description of what you expected to happen. 45 | validations: 46 | required: true 47 | - type: textarea 48 | attributes: 49 | label: Additional Information 50 | description: If your problem needs further explanation, or if the issue you're seeing cannot be reproduced in a gist, please add more information here. 51 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yml: -------------------------------------------------------------------------------- 1 | name: Feature Request 2 | description: Suggest an idea 3 | title: "[Feature Request]: " 4 | labels: 5 | - "enhancement" 6 | body: 7 | - type: checkboxes 8 | attributes: 9 | label: Preflight Checklist 10 | description: Please ensure you've completed all of the following. 11 | options: 12 | - label: I have read the Contribution.md for this project. 13 | required: true 14 | - label: I agree to follow the Code of Conduct that this project adheres to. 15 | required: true 16 | - label: I have searched the issue for a feature request that matches the one I want to file, without success. 17 | required: true 18 | - type: textarea 19 | attributes: 20 | label: Problem Description 21 | description: Please add a clear and concise description of the problem you are seeking to solve with this feature request. 22 | validations: 23 | required: true 24 | - type: textarea 25 | attributes: 26 | label: Proposed Solution 27 | description: Describe the solution you'd like in a clear and concise manner. 28 | validations: 29 | required: true 30 | - type: textarea 31 | attributes: 32 | label: Alternatives Considered 33 | description: A clear and concise description of any alternative solutions or features you've considered. 34 | validations: 35 | required: true 36 | - type: textarea 37 | attributes: 38 | label: Additional Information 39 | description: Add any other context about the problem here. 40 | validations: 41 | required: false 42 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/general_issue.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: General issue 3 | about: Suggest an issue for this project 4 | title: "" 5 | labels: "" 6 | assignees: "" 7 | --- 8 | 9 | # Prerequisites: 10 | 11 | Please answer the following questions for yourself before submitting an issue. **YOU MAY DELETE THE PREREQUISITES SECTION.** 12 | 13 | 14 | 15 | - [ ] I checked to make sure that this issue has not already been filed. 16 | 17 | # Expected Behavior: 18 | 19 | Please describe the behavior you are expecting. 20 | 21 | # Current Behavior: 22 | 23 | What is the current behavior? 24 | 25 | # Solution: 26 | 27 | Please describe what will you do to solve this issue or your approach to solve this issue. 28 | 29 | # Screenshots (optional): 30 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | # Description: 2 | 3 | Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. 4 | 5 | Fixes # (issue no.) 6 | 7 | 8 | 9 | ## Type of change: 10 | 11 | 12 | 13 | - [ ] Bug fix (non-breaking change which fixes an issue) 14 | - [ ] New feature (non-breaking change which adds functionality) 15 | - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) 16 | - [ ] This change requires a documentation update 17 | 18 | # Checklist: 19 | 20 | 21 | 22 | - [ ] My code follows the style guidelines of this project. 23 | - [ ] I have performed a self-review of my own code. 24 | - [ ] I have commented my code, particularly in hard-to-understand areas. 25 | - [ ] I have made corresponding changes to the documentation. 26 | - [ ] My changes generate no new warnings. 27 | - [ ] I have added tests that prove my fix is effective or that my feature works. 28 | - [ ] New and existing unit tests pass locally with my changes. 29 | - [ ] Any dependent changes have been merged and published in downstream modules. 30 | 31 | # Screenshots / Video: 32 | -------------------------------------------------------------------------------- /.github/workflows/welcome-contributors.yml: -------------------------------------------------------------------------------- 1 | name: Welcome contributors 2 | 3 | on: 4 | pull_request_target: 5 | types: 6 | - opened 7 | issues: 8 | types: 9 | - opened 10 | 11 | jobs: 12 | welcome: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/first-interaction@v1 16 | with: 17 | repo-token: ${{ secrets.GITHUB_TOKEN }} 18 | issue-message: | 19 | Hello there ${{ github.actor }} 👋 20 | 21 | Welcome to Open-Certs !!💖🥳 22 | 23 | Thank you 🎉 for opening an issue in this project. oc-frontend fosters an open and welcoming environment for all our contributors.🌸 24 | 25 | Please take care of few points : Clearly specify the title and description of the issue . You can even add supporting material like Screenshots etc. 26 | 27 | Incase you want to claim this issue, please tag the maintainers by commenting down below! We will try to get back to you as soon as we can.👀 28 | 29 | 👩‍💻 If you have any interesting ideas, just open an issue. We would love to hear you and engage in discussions. 30 | 31 | pr-message: | 32 | Hello there ${{ github.actor }} 👋 33 | 34 | Thank you and congrats 🎉 for opening a PR in this project.✨ 35 | 36 | oc-frontend fosters an open and welcoming environment for all our contributors.🌸 37 | 38 | Please take care of few points : Clearly specify the title and description of the Pull Request . Specify the issue no using " #[issue_no] " 39 | 40 | Please tag the maintainers by commenting down below! We will review it as soon as we can.👀 41 | 42 | 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env 17 | .env.local 18 | .env.development.local 19 | .env.test.local 20 | .env.production.local 21 | 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | 26 | .firebaserc 27 | firebase.json 28 | .firebase 29 | .babelrc 30 | GenerateSiteMap.js 31 | generator.ts 32 | index.ts -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | 5 | npm run format && git add . 6 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | build 2 | node_modules 3 | tailwind.generated.css 4 | .github 5 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | - Demonstrating empathy and kindness toward other people 21 | - Being respectful of differing opinions, viewpoints, and experiences 22 | - Giving and gracefully accepting constructive feedback 23 | - Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | - Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | - The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | - Trolling, insulting or derogatory comments, and personal or political attacks 33 | - Public or private harassment 34 | - Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | - Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | shukhu10@gmail.com. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OC-Frontend 2 | 3 | open certs 4 | 5 | > This includes the frontend for Open-Certs. 📜 6 | 7 | After seeing so many open-source projects being monetized :dollar: without giving any recognition to contributors, Open-Certs comes with the vision to certify every open-source contribution :tickets:. 8 | 9 | It really is that easy! 💚 10 | 11 | And the best part of it? **Open-Certs is open source!** 🤩 12 | 13 | You can also contribute to it 🏆. 14 | 15 | **The website is live and can be visited on https://open-certs.dev/** 😃 16 | 17 |

18 |
19 |
20 | Coding 21 |
22 | Live-Demo 23 |

24 | 25 | ## Table of Contents 🔖 26 | 27 | - [Major Objective](#major-objective-pushpin) 28 | - [Tech Stack](#tech-stack-) 29 | - [Set Up](#set-up-) 30 | - [Running the application locally](#running-the-application-locally-%EF%B8%8F) 31 | - [Contributing](#contributing-) 32 | - [Contribution Guidelines](#contribution-guidelines-) 33 | - [Contributors](#contributors) 34 | - [Visitor's Count](#visitors-count-) 35 |

36 | 37 | ## Major Objective :pushpin: 38 | 39 | - To let beginners venture into the world of Open Source. 40 | - To provide validation to every open-source contribution. 41 |

42 | 43 | ## Tech Stack 💻 44 | 45 | Open-Certs frontend is based on component-based architecture. It takes advantage of `Reactjs` as UI library, `Typescript` as programming language, `TailwindCSS`, `Material-UI`, etc and consumes [Open-Certs-Backend](https://github.com/open-certs/oc-backend) to delivery required services to the users. 46 |

47 | 48 | ## Set Up 🔨 49 | 50 | - To get started, install the required node modules: 51 | 52 | ``` 53 | yarn install 54 | ``` 55 | 56 | - Then copy the `.env.sample` to `.env` and configure it. 57 |

58 | 59 | ## Running the application locally ⚙️ 60 | 61 | Then issue the following command to run the server: 62 | 63 | ``` 64 | yarn start 65 | ``` 66 | 67 |

68 | 69 | ## Contributing 🏗 70 | 71 | Any contributions you make are **greatly appreciated**. 72 | 73 | 1. Create / Choose an issue [here](https://github.com/open-certs/oc-frontend/issues). 74 | 2. Get the issue assigned to yourself by commenting. 75 | 3. Fork the Project 76 | 4. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) 77 | 5. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) 78 | 6. Push to the Branch (`git push origin feature/AmazingFeature`) 79 | 7. Open a Pull Request on `dev` branch 80 | 81 | **Voila :exclamation: You have made a PR to the Open-Certs :boom: . Wait for your submission to be accepted ✔️ and your PR to be merged.** 82 | 83 | **Congratulations! 🎉 You've made your first contribution! 🙌🏼** 84 |

85 | 86 | ## Contribution Guidelines 📋 87 | 88 | - Please read our [Code of Conduct](https://github.com/open-certs/oc-frontend/blob/main/CODE_OF_CONDUCT.md) file for contributing towards the project. 89 | - If you are creating an issue, please make sure that it is a valid and significant issue that will actually contribute towards the project. 90 | - Write clear meaningful git commit messages 📧. 91 | - Make sure your PR's description is clear and it mentions the issue number that your PR fixes. 92 | - When you're submitting a PR, it would be really awesome if you add a screenshot 📸 or video 📽️ of your change or a link 🔗 to a deployment where it can be tested out along with your PR. It makes it very easy for the reviewers and you'll also get reviews quicker. 93 | - When you make very minor changes to a PR of yours (like for example fixing a text in button, minor changes requested by reviewers) make sure you squash your commits afterwards so that you don't have an absurd number of commits for a very small fix. (Learn how to squash at [here](https://davidwalsh.name/squash-commits-git)) 94 |

95 | 96 | ## Contributors 97 | 98 | ### Credits goes to these people: ✨ 99 | 100 | 101 | 102 | 107 | 108 |
103 | 104 | 105 | 106 |
109 | 110 | ## Visitor's Count 📍 111 | 112 | Visitor Count 113 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "oc-frontend", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@emotion/react": "^11.7.1", 7 | "@emotion/styled": "^11.6.0", 8 | "@headlessui/react": "^1.4.3", 9 | "@heroicons/react": "^1.0.5", 10 | "@mui/material": "^5.4.1", 11 | "@tailwindcss/line-clamp": "^0.3.1", 12 | "@testing-library/jest-dom": "^5.16.2", 13 | "@testing-library/react": "^12.1.2", 14 | "@testing-library/user-event": "^13.5.0", 15 | "@types/jest": "^27.4.0", 16 | "@types/node": "^16.11.24", 17 | "@types/react": "^17.0.39", 18 | "@types/react-dom": "^17.0.11", 19 | "react": "^17.0.2", 20 | "react-dom": "^17.0.2", 21 | "react-icons": "^4.3.1", 22 | "react-lottie": "^1.2.3", 23 | "react-router-dom": "^6.2.1", 24 | "react-scripts": "^5.0.0", 25 | "react-toastify": "^8.2.0", 26 | "sitemap": "^7.1.1", 27 | "sweetalert2": "^11.4.0", 28 | "typescript": "^4.5.5", 29 | "universal-cookie": "^4.0.4", 30 | "web-vitals": "^2.1.4" 31 | }, 32 | "scripts": { 33 | "start": "react-scripts start", 34 | "build": "react-scripts build", 35 | "test": "react-scripts test", 36 | "eject": "react-scripts eject", 37 | "prepare": "husky install", 38 | "format": "prettier --write ." 39 | }, 40 | "eslintConfig": { 41 | "extends": [ 42 | "react-app", 43 | "react-app/jest" 44 | ] 45 | }, 46 | "browserslist": { 47 | "production": [ 48 | ">0.2%", 49 | "not dead", 50 | "not op_mini all" 51 | ], 52 | "development": [ 53 | "last 1 chrome version", 54 | "last 1 firefox version", 55 | "last 1 safari version" 56 | ] 57 | }, 58 | "devDependencies": { 59 | "@babel/core": "^7.17.5", 60 | "@babel/node": "^7.16.8", 61 | "@babel/polyfill": "^7.12.1", 62 | "@babel/preset-env": "^7.16.11", 63 | "@babel/preset-typescript": "^7.16.7", 64 | "@babel/register": "^7.17.0", 65 | "@types/react-lottie": "^1.2.6", 66 | "husky": "^7.0.0", 67 | "postcss": "^8.4.6", 68 | "postcss-import": "^14.0.2", 69 | "postcss-loader": "^6.2.1", 70 | "prettier": "^2.5.1", 71 | "tailwind-scrollbar": "^1.3.1", 72 | "tailwindcss": "^3.0.21", 73 | "ts-node": "^10.5.0" 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /public/_redirects: -------------------------------------------------------------------------------- 1 | /* /index.html 200 -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-certs/oc-frontend/316d859a92f9489eeb8257f3ae5d642a7b5b8f2d/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 11 | 15 | 19 | 23 | 24 | 33 | Open-Certs 34 | 35 | 36 | 37 | 38 |
39 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-certs/oc-frontend/316d859a92f9489eeb8257f3ae5d642a7b5b8f2d/public/logo192.png -------------------------------------------------------------------------------- /public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-certs/oc-frontend/316d859a92f9489eeb8257f3ae5d642a7b5b8f2d/public/logo512.png -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "https://user-images.githubusercontent.com/41825906/153617213-e956c616-4f4a-4d62-95af-2d4ac4d57942.png", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "https://user-images.githubusercontent.com/41825906/153617213-e956c616-4f4a-4d62-95af-2d4ac4d57942.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "https://user-images.githubusercontent.com/41825906/153617213-e956c616-4f4a-4d62-95af-2d4ac4d57942.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /public/recievedToken.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Redirecting... 4 | 5 | 6 | 7 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | /* @import url("https://cdnjs.cloudflare.com/ajax/libs/inter-ui/3.18.0/inter.css"); */ 2 | @import "tailwindcss/base"; 3 | @import "tailwindcss/utilities"; 4 | 5 | h1, 6 | h2, 7 | h3, 8 | h4, 9 | p { 10 | line-height: 1.6; 11 | } 12 | 13 | h1, 14 | h2, 15 | h3, 16 | h4, 17 | p.bold { 18 | font-weight: 700; 19 | } 20 | 21 | :root { 22 | font-size: 14px; 23 | 24 | --color-button-text: #fff; 25 | --color-primary-100: #dee3ea; 26 | --color-primary-200: #b2bdcd; 27 | --color-primary-300: #5d7290; 28 | --color-primary-600: #323d4d; 29 | --color-primary-700: #242c37; 30 | --color-primary-800: #151a21; 31 | --color-primary-900: #0b0e11; 32 | --color-secondary-washed-out: #879eed; 33 | --color-secondary: #4a6ffd; 34 | --color-secondary-dark: #3158e6; 35 | --color-accent-glow: rgba(253, 77, 77, 0.3); 36 | --color-accent-gradient: linear-gradient( 37 | 90deg, 38 | rgba(255, 114, 110, 1) 0%, 39 | rgba(224, 68, 44, 1) 40%, 40 | rgba(74, 111, 253, 1) 69%, 41 | rgba(74, 111, 253, 1) 79% 42 | ); 43 | --color-accent-gradient-light: linear-gradient( 44 | 90deg, 45 | rgb(255, 255, 255) 0%, 46 | rgb(255, 255, 255) 40%, 47 | rgb(255, 255, 255) 69%, 48 | rgba(255, 255, 255, 0.959) 79% 49 | ); 50 | --color-accent: #e0442c; 51 | --color-accent-hover: #fd6868; 52 | --color-accent-disabled: #f5bfbf; 53 | --screen-height-reduction: 0px; 54 | --color-primary-100-translucent: rgba(222, 227, 234, 0.15); 55 | --color-dark-background: #0a0f14; 56 | --color-darkwave1-background: #273036; 57 | --color-white: #ffffff; 58 | } 59 | 60 | input:focus { 61 | text-decoration: none; 62 | border: none; 63 | outline: var(--color-secondary-washed-out) solid 2px !important; 64 | } 65 | h1 { 66 | font-size: 4rem; 67 | } 68 | 69 | h2 { 70 | font-size: 2.8rem; 71 | } 72 | 73 | h3 { 74 | font-size: 2rem; 75 | } 76 | 77 | h4 { 78 | font-size: 1.4rem; 79 | } 80 | 81 | p { 82 | font-size: 1rem; 83 | font-weight: 500; 84 | } 85 | 86 | p.small { 87 | font-size: 0.85rem; 88 | } 89 | 90 | /* for firefox */ 91 | * { 92 | scrollbar-width: thin; 93 | scrollbar-color: #888; 94 | } 95 | 96 | /* for non-firefox */ 97 | ::-webkit-scrollbar { 98 | overflow: overlay; 99 | width: 5px; 100 | /* shouldnt hardcode width, pls find way to make it dynamic, thin wasn't working for me...*/ 101 | } 102 | 103 | ::-webkit-scrollbar-track { 104 | width: 5px; 105 | display: initial; 106 | } 107 | 108 | ::-webkit-scrollbar-thumb { 109 | /* background-color: var(--color-primary-700); */ 110 | background-color: #888; 111 | border-radius: 5px; 112 | } 113 | 114 | html, 115 | body, 116 | .__next { 117 | height: 100%; 118 | width: 100%; 119 | display: flex; 120 | font-family: "Roboto Mono", monospace; 121 | /* color: white; */ 122 | } 123 | 124 | audio { 125 | width: 0; 126 | display: none !important; 127 | } 128 | 129 | html { 130 | position: fixed; 131 | } 132 | 133 | .__next { 134 | overflow-y: auto; 135 | } 136 | 137 | ::-webkit-resizer { 138 | background: var(--color-primary-700); 139 | } 140 | 141 | /* #nprogress { 142 | position: relative; 143 | z-index: 9999999; 144 | } 145 | 146 | #nprogress .bar { 147 | background: var(--color-accent-hover) !important; 148 | } 149 | 150 | #nprogress .peg { 151 | box-shadow: 0 0 10px var(--color-accent-hover), 152 | 0 0 5px var(--color-accent-hover) !important; 153 | } 154 | 155 | #nprogress .spinner-icon { 156 | border-top-color: var(--color-accent-hover) !important; 157 | border-left-color: var(--color-accent-hover) !important; 158 | } */ 159 | 160 | img.emoji { 161 | height: 1.2rem; 162 | width: 1.2rem; 163 | margin: 0 0.05em 0 0.1em; 164 | top: -0.1em; 165 | vertical-align: middle; 166 | display: inline-block; 167 | position: relative; 168 | -webkit-user-drag: none; 169 | -moz-user-drag: none; 170 | -o-user-drag: none; 171 | user-drag: none; 172 | cursor: text; 173 | } 174 | 175 | .h-screen { 176 | height: calc(100vh - var(--screen-height-reduction)); 177 | } 178 | 179 | button:focus { 180 | outline: none; 181 | } 182 | 183 | .text-bg { 184 | background: var(--color-accent-gradient); 185 | -webkit-text-fill-color: transparent; 186 | -webkit-background-clip: text; 187 | } 188 | .text-bg-light { 189 | background: var(--color-accent-gradient-light); 190 | -webkit-text-fill-color: transparent; 191 | -webkit-background-clip: text; 192 | } 193 | 194 | .background-oregon-grapes-light { 195 | background-image: url("./assets/lightwave1.svg"), 196 | url("./assets/lightwave2.svg"); 197 | width: 100% !important; 198 | min-height: 90vh; 199 | background-repeat: no-repeat; 200 | background-position: center; 201 | background-size: cover; 202 | /* background-attachment: fixed; */ 203 | /* background-blend-mode: screen; */ 204 | } 205 | .background-oregon-grapes { 206 | background-image: url("./assets/darkwave1.svg"), url("./assets/darkwave2.svg"); 207 | width: 100% !important; 208 | min-height: 90vh; 209 | background-repeat: no-repeat; 210 | background-position: center; 211 | background-size: cover; 212 | /* background-attachment: fixed; */ 213 | /* background-blend-mode: screen; */ 214 | } 215 | .background-oregon-grapes-login { 216 | background-image: url("./assets/darkwave2.svg"), url("./assets/darkwave3.svg"); 217 | width: 100% !important; 218 | background-repeat: no-repeat; 219 | background-position: center; 220 | background-size: cover; 221 | background-attachment: fixed; 222 | background-blend-mode: screen; 223 | } 224 | .background-oregon-grapes-light-login { 225 | background-image: url("./assets/lightwave2.svg"), 226 | url("./assets/loginlightwave1.svg"); 227 | width: 100% !important; 228 | background-repeat: no-repeat; 229 | background-position: center; 230 | background-size: cover; 231 | background-attachment: fixed; 232 | background-blend-mode: screen; 233 | } 234 | .ribbon { 235 | background: var(--color-accent-gradient); 236 | overflow: hidden; 237 | white-space: nowrap; 238 | z-index: 1; 239 | position: absolute; 240 | right: -55px; 241 | bottom: 30px; 242 | transform: rotate(-45deg); 243 | box-shadow: 0 0 10px rgb(49, 49, 49); 244 | } 245 | 246 | .ribbon a { 247 | border: 1px solid rgb(88, 88, 88); 248 | color: #fff; 249 | display: block; 250 | margin: 1px 0; 251 | text-align: center; 252 | padding: 10px 50px; 253 | text-decoration: none; 254 | text-shadow: 0 0 5px #444; 255 | font-size: 1.2em; 256 | display: flex; 257 | align-items: center; 258 | justify-content: center; 259 | } 260 | 261 | #lottie-Landing-animation > * > * { 262 | transform: none !important; 263 | } 264 | .mainTitle { 265 | --padding: 0rem; 266 | position: relative; 267 | width: max-content; 268 | } 269 | 270 | .mainTitle::after { 271 | content: ""; 272 | position: absolute; 273 | height: 2px; 274 | border-radius: 5px; 275 | left: 0; 276 | top: 20px; 277 | width: 100%; 278 | background: rgb(253, 251, 251); 279 | transform-origin: center; 280 | transform: scaleX(0); 281 | transition: all 400ms ease; 282 | } 283 | 284 | .mainTitle.active::after { 285 | transform: scaleX(1); 286 | font-weight: bolder; 287 | } 288 | .navBtn:hover.mainTitle::after { 289 | transform: scaleX(1); 290 | } 291 | -------------------------------------------------------------------------------- /src/App.test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { render, screen } from "@testing-library/react"; 3 | import App from "./App"; 4 | 5 | test("renders learn react link", () => { 6 | render(); 7 | const linkElement = screen.getByText(/learn react/i); 8 | expect(linkElement).toBeInTheDocument(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import "./App.css"; 3 | import { BrowserRouter } from "react-router-dom"; 4 | import { Routing } from "./router/route"; 5 | import { AuthProvider } from "./context/AuthContext/AuthProvider"; 6 | import { Fork } from "./components/Fork"; 7 | import { ThemeProvider } from "./context/ThemeContext/ThemeProvider"; 8 | import { ToastContainer } from "react-toastify"; 9 | import "react-toastify/dist/ReactToastify.css"; 10 | import { Header } from "./components/Header"; 11 | import Footer from "./components/Footer"; 12 | import CertificateRouter from "./context/CertificateContext/CertificateRouter"; 13 | 14 | function App() { 15 | return ( 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 |