├── .all-contributorsrc ├── .editorconfig ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── dependabot.yml ├── .gitignore ├── .prettierrc ├── LICENSE ├── README.md ├── package.json ├── public ├── android-chrome-192x192.png ├── android-chrome-512x512.png ├── apple-touch-icon.png ├── certificate-logo.png ├── data.json ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon.ico ├── index.html ├── manifest.json └── robots.txt ├── src ├── App.js ├── App.module.scss ├── App.test.js ├── assets │ ├── club.jpg │ └── logo.jpg ├── components │ ├── Certificate.jsx │ ├── Footer.jsx │ ├── Generate.jsx │ ├── Home.jsx │ ├── Login.jsx │ ├── Navigation.jsx │ ├── Verify.jsx │ └── index.js ├── css │ ├── FrontCertificate.module.css │ ├── Login.module.css │ └── Verify.module.css ├── index.css ├── index.js ├── reportWebVitals.js └── setupTests.js └── yarn.lock /.all-contributorsrc: -------------------------------------------------------------------------------- 1 | { 2 | "projectName": "Certificate Verification and Generation System for IIITV", 3 | "projectOwner": "Pushkar Patel ", 4 | "repoType": "github", 5 | "repoHost": "https://github.com", 6 | "files": [ 7 | "README.md" 8 | ], 9 | "imageSize": 100, 10 | "commit": false, 11 | "commitConvention": "none", 12 | "contributors": [ 13 | { 14 | "login": "TanmayAmbadkar", 15 | "name": "Tanmay Ambadkar", 16 | "avatar_url": "https://avatars.githubusercontent.com/u/42721553?v=4", 17 | "profile": "https://github.com/TanmayAmbadkar", 18 | "contributions": [ 19 | "code", 20 | "ideas", 21 | "projectManagement" 22 | ] 23 | }, 24 | { 25 | "login": "thepushkarp", 26 | "name": "Pushkar Patel", 27 | "avatar_url": "https://avatars.githubusercontent.com/u/42088801?v=4", 28 | "profile": "https://github.com/thepushkarp", 29 | "contributions": [ 30 | "code", 31 | "design", 32 | "doc" 33 | ] 34 | }, 35 | { 36 | "login": "pAditya198", 37 | "name": "Aditya Prakash", 38 | "avatar_url": "https://avatars.githubusercontent.com/u/42460356?v=4", 39 | "profile": "https://github.com/pAditya198", 40 | "contributions": [ 41 | "code", 42 | "bug", 43 | "design" 44 | ] 45 | }, 46 | { 47 | "login": "anujpuri72", 48 | "name": "Anuj Puri", 49 | "avatar_url": "https://avatars.githubusercontent.com/u/42184782?v=4", 50 | "profile": "https://github.com/anujpuri72", 51 | "contributions": [ 52 | "code", 53 | "bug", 54 | "userTesting" 55 | ] 56 | }, 57 | { 58 | "login": "thecodepapaya", 59 | "name": "Ashutosh Singh", 60 | "avatar_url": "https://avatars.githubusercontent.com/u/42690541?v=4", 61 | "profile": "https://github.com/thecodepapaya", 62 | "contributions": [ 63 | "ideas", 64 | "userTesting", 65 | "projectManagement" 66 | ] 67 | } 68 | ], 69 | "contributorsPerLine": 7 70 | } 71 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # top-most EditorConfig file 2 | root = true 3 | 4 | # Unix-style newlines with a newline ending every file 5 | [*] 6 | charset = utf-8 7 | insert_final_newline = true 8 | trim_trailing_whitespace = true 9 | end_of_line = lf 10 | 11 | # 4 space indentation 12 | indent_style = space 13 | indent_size = 2 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: npm 9 | directory: "/" 10 | schedule: 11 | interval: monthly 12 | time: "08:30" 13 | timezone: Asia/Kolkata 14 | open-pull-requests-limit: 10 15 | 16 | -------------------------------------------------------------------------------- /.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.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | package-lock.json 25 | 26 | # CSS Modules 27 | !*.modules.css 28 | !*.module.scss 29 | !*.module.sass 30 | 31 | .eslintcache -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 85, 3 | "arrowParens": "always", 4 | "semi": true, 5 | "tabWidth": 2, 6 | "singleQuote": true, 7 | "trailingComma": "es5", 8 | "bracketSpacing": true 9 | } 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Pushkar Patel 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Certificate Image from Freepik by Flaticon

2 | 3 |

Certificate Verification and Generation System for IIITV

4 | 5 |

6 | LGTM Grade 7 | GitHub Issues 8 | LGTM Alerts 9 | Stargazers 10 | License 11 |

12 | 13 |

E-certificate verification and generation system for Indian Institute of Information Technology Vadodara built using React, Bootstrap and HTML5 Canvas

14 | 15 | --- 16 | 17 | This system is deployed at [https://mycertificatesgymkhana.iiitvadodara.ac.in/](https://mycertificatesgymkhana.iiitvadodara.ac.in/). The backend can be found at [CertificateGenerator](https://github.com/TanmayAmbadkar/CertificateGenerator). 18 | 19 | ## How to use? 20 | 21 | - Go to [https://mycertificatesgymkhana.iiitvadodara.ac.in/](https://mycertificatesgymkhana.iiitvadodara.ac.in/) 22 | - Click on the `Verify` button 23 | - Enter your Roll number in the input box 24 | - If certificates do not exist for your roll number, you'll get a message telling that this ID does not exists. 25 | - If certificates exist, you'll get a list of certificates, with their IDs. 26 | - Click on a certificate ID to view the certificate and download it. 27 | - Show off your certificate to everyone! 28 | 29 | ## Found a bug? Want to suggest improvements? 30 | 31 | Feel free to [Open an issue](https://github.com/thepushkarp/certificate-generator-frontend/issues/new/choose) in case you found a bug or want to suggest improvements. 32 | 33 | ## Contributors 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |

Tanmay Ambadkar

💻 🤔 📆

Pushkar Patel

💻 🎨 📖

Aditya Prakash

💻 🐛 🎨

Anuj Puri

💻 🐛 📓

Ashutosh Singh

🤔 📓 📆
47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "certificate-generator-frontend", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@testing-library/jest-dom": "^6.4.2", 7 | "@testing-library/react": "^12.1.4", 8 | "@testing-library/user-event": "^13.5.0", 9 | "bootstrap": "^4.5.3", 10 | "clsx": "^1.1.1", 11 | "file-saver": "^2.0.5", 12 | "jspdf": "^2.5.1", 13 | "jszip": "^3.5.0", 14 | "node-sass": "^7.0.1", 15 | "react": "^17.0.1", 16 | "react-bootstrap": "^1.4.0", 17 | "react-dom": "^17.0.1", 18 | "react-router-bootstrap": "^0.26.2", 19 | "react-router-dom": "^5.2.0", 20 | "react-scripts": "4.0.1", 21 | "web-vitals": "^2.1.4" 22 | }, 23 | "scripts": { 24 | "start": "react-scripts start", 25 | "build": "react-scripts build", 26 | "test": "react-scripts test", 27 | "eject": "react-scripts eject", 28 | "format": "prettier --write \"**/*.+(js|jsx|json|css|scss|sass|md)\"", 29 | "contributors:add": "all-contributors add", 30 | "contributors:generate": "all-contributors generate" 31 | }, 32 | "eslintConfig": { 33 | "extends": [ 34 | "react-app", 35 | "react-app/jest" 36 | ] 37 | }, 38 | "browserslist": { 39 | "production": [ 40 | ">0.2%", 41 | "not dead", 42 | "not op_mini all" 43 | ], 44 | "development": [ 45 | "last 1 chrome version", 46 | "last 1 firefox version", 47 | "last 1 safari version" 48 | ] 49 | }, 50 | "husky": { 51 | "hooks": { 52 | "pre-commit": "lint-staged" 53 | } 54 | }, 55 | "lint-staged": { 56 | "*.+(js|jsx|json|css|scss|sass|md)": [ 57 | "prettier --write" 58 | ] 59 | }, 60 | "devDependencies": { 61 | "all-contributors-cli": "^6.26.1", 62 | "husky": "^9.0.10", 63 | "lint-staged": "^15.2.2", 64 | "prettier": "^3.2.5" 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thepushkarp/certificate-generator-frontend/5024ac1c6c139da1c8f0226130d6afcab807643e/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thepushkarp/certificate-generator-frontend/5024ac1c6c139da1c8f0226130d6afcab807643e/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thepushkarp/certificate-generator-frontend/5024ac1c6c139da1c8f0226130d6afcab807643e/public/apple-touch-icon.png -------------------------------------------------------------------------------- /public/certificate-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thepushkarp/certificate-generator-frontend/5024ac1c6c139da1c8f0226130d6afcab807643e/public/certificate-logo.png -------------------------------------------------------------------------------- /public/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "IIITV/STUD-GYMKHANA/CERT/456/000028": { 3 | "Name": "Aman Sagar", 4 | "Sub Event Name": "Zest Up", 5 | "Position": "1st", 6 | "Academic Year": "2019-2020", 7 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000028", 8 | "Date": "27-01-2021", 9 | "RollNo": 201851016, 10 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-28.pdf", 11 | "Email": "201851018@iiitvadodara.ac.in" 12 | }, 13 | "IIITV/STUD-GYMKHANA/CERT/456/000029": { 14 | "Name": "Palak Ambade", 15 | "Sub Event Name": "Synergy", 16 | "Position": "1st", 17 | "Academic Year": "2019-2020", 18 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000029", 19 | "Date": "27-01-2021", 20 | "RollNo": 201751029, 21 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-29.pdf", 22 | "Email": "201851018@iiitvadodara.ac.in" 23 | }, 24 | "IIITV/STUD-GYMKHANA/CERT/456/000030": { 25 | "Name": "Anagha Mittal", 26 | "Sub Event Name": "Synergy", 27 | "Position": "1st", 28 | "Academic Year": "2019-2020", 29 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000030", 30 | "Date": "27-01-2021", 31 | "RollNo": 201851020, 32 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-30.pdf", 33 | "Email": "201851018@iiitvadodara.ac.in" 34 | }, 35 | "IIITV/STUD-GYMKHANA/CERT/456/000031": { 36 | "Name": "Varnika Dasgupta", 37 | "Sub Event Name": "Synergy", 38 | "Position": "1st", 39 | "Academic Year": "2019-2020", 40 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000031", 41 | "Date": "27-01-2021", 42 | "RollNo": 201751060, 43 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-31.pdf", 44 | "Email": "201851018@iiitvadodara.ac.in" 45 | }, 46 | "IIITV/STUD-GYMKHANA/CERT/456/000032": { 47 | "Name": "Prachi Desai", 48 | "Sub Event Name": "Synergy", 49 | "Position": "1st", 50 | "Academic Year": "2019-2020", 51 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000032", 52 | "Date": "27-01-2021", 53 | "RollNo": 201852024, 54 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-32.pdf", 55 | "Email": "201851018@iiitvadodara.ac.in" 56 | }, 57 | "IIITV/STUD-GYMKHANA/CERT/456/000033": { 58 | "Name": "Swasti Khurana", 59 | "Sub Event Name": "Synergy", 60 | "Position": "1st", 61 | "Academic Year": "2019-2020", 62 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000033", 63 | "Date": "27-01-2021", 64 | "RollNo": 201852030, 65 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-33.pdf", 66 | "Email": "201851018@iiitvadodara.ac.in" 67 | }, 68 | "IIITV/STUD-GYMKHANA/CERT/456/000034": { 69 | "Name": "Parul Soni", 70 | "Sub Event Name": "Synergy", 71 | "Position": "1st", 72 | "Academic Year": "2019-2020", 73 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000034", 74 | "Date": "27-01-2021", 75 | "RollNo": 201651036, 76 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-34.pdf", 77 | "Email": "201851018@iiitvadodara.ac.in" 78 | }, 79 | "IIITV/STUD-GYMKHANA/CERT/456/000035": { 80 | "Name": "Monika Phandnis", 81 | "Sub Event Name": "Synergy", 82 | "Position": "1st", 83 | "Academic Year": "2019-2020", 84 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000035", 85 | "Date": "27-01-2021", 86 | "RollNo": 201651032, 87 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-35.pdf", 88 | "Email": "201851018@iiitvadodara.ac.in" 89 | }, 90 | "IIITV/STUD-GYMKHANA/CERT/456/000036": { 91 | "Name": "Shivanshi Dave", 92 | "Sub Event Name": "Synergy", 93 | "Position": "1st", 94 | "Academic Year": "2019-2020", 95 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000036", 96 | "Date": "27-01-2021", 97 | "RollNo": 201851036, 98 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-36.pdf", 99 | "Email": "201851018@iiitvadodara.ac.in" 100 | }, 101 | "IIITV/STUD-GYMKHANA/CERT/456/000037": { 102 | "Name": "Vaidehi Vaishnav", 103 | "Sub Event Name": "Nishad", 104 | "Position": "1st", 105 | "Academic Year": "2019-2020", 106 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000037", 107 | "Date": "27-01-2021", 108 | "RollNo": 201751059, 109 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-37.pdf", 110 | "Email": "201851018@iiitvadodara.ac.in" 111 | }, 112 | "IIITV/STUD-GYMKHANA/CERT/456/000038": { 113 | "Name": "Anshuman Singh", 114 | "Sub Event Name": "Crescendo", 115 | "Position": "1st", 116 | "Academic Year": "2019-2020", 117 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000038", 118 | "Date": "27-01-2021", 119 | "RollNo": 201951026, 120 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-38.pdf", 121 | "Email": "201851018@iiitvadodara.ac.in" 122 | }, 123 | "IIITV/STUD-GYMKHANA/CERT/456/000039": { 124 | "Name": "Deepanshu Singh", 125 | "Sub Event Name": "Nazara", 126 | "Position": "1st", 127 | "Academic Year": "2019-2020", 128 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000039", 129 | "Date": "27-01-2021", 130 | "RollNo": 201951054, 131 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-39.pdf", 132 | "Email": "201851018@iiitvadodara.ac.in" 133 | }, 134 | "IIITV/STUD-GYMKHANA/CERT/456/000040": { 135 | "Name": "Akshita Agrawalla", 136 | "Sub Event Name": "Abhinay", 137 | "Position": "1st", 138 | "Academic Year": "2019-2020", 139 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000040", 140 | "Date": "27-01-2021", 141 | "RollNo": 201751066, 142 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-40.pdf", 143 | "Email": "201851018@iiitvadodara.ac.in" 144 | }, 145 | "IIITV/STUD-GYMKHANA/CERT/456/000041": { 146 | "Name": "Ashutosh Kushwaha", 147 | "Sub Event Name": "Dvandva", 148 | "Position": "1st", 149 | "Academic Year": "2019-2020", 150 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000041", 151 | "Date": "27-01-2021", 152 | "RollNo": 201651009, 153 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-41.pdf", 154 | "Email": "201851018@iiitvadodara.ac.in" 155 | }, 156 | "IIITV/STUD-GYMKHANA/CERT/456/000042": { 157 | "Name": "Mansi Gupta", 158 | "Sub Event Name": "Dvandva", 159 | "Position": "1st", 160 | "Academic Year": "2019-2020", 161 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000042", 162 | "Date": "27-01-2021", 163 | "RollNo": 201852019, 164 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-42.pdf", 165 | "Email": "201851018@iiitvadodara.ac.in" 166 | }, 167 | "IIITV/STUD-GYMKHANA/CERT/456/000043": { 168 | "Name": "Adit Alware", 169 | "Sub Event Name": "Kroodle", 170 | "Position": "1st", 171 | "Academic Year": "2019-2020", 172 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000043", 173 | "Date": "27-01-2021", 174 | "RollNo": 201851006, 175 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-43.pdf", 176 | "Email": "201851018@iiitvadodara.ac.in" 177 | }, 178 | "IIITV/STUD-GYMKHANA/CERT/456/000044": { 179 | "Name": "Keshav Purohit", 180 | "Sub Event Name": "Mystery Box", 181 | "Position": "1st", 182 | "Academic Year": "2019-2020", 183 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000044", 184 | "Date": "27-01-2021", 185 | "RollNo": 201751021, 186 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-44.pdf", 187 | "Email": "201851018@iiitvadodara.ac.in" 188 | }, 189 | "IIITV/STUD-GYMKHANA/CERT/456/000045": { 190 | "Name": "Prem Shankar", 191 | "Sub Event Name": "Mystery Box", 192 | "Position": "1st", 193 | "Academic Year": "2019-2020", 194 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000045", 195 | "Date": "27-01-2021", 196 | "RollNo": 201751017, 197 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-45.pdf", 198 | "Email": "201851018@iiitvadodara.ac.in" 199 | }, 200 | "IIITV/STUD-GYMKHANA/CERT/456/000046": { 201 | "Name": "Prakhar Gupta", 202 | "Sub Event Name": "Mystery Box", 203 | "Position": "1st", 204 | "Academic Year": "2019-2020", 205 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000046", 206 | "Date": "27-01-2021", 207 | "RollNo": 201751036, 208 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-46.pdf", 209 | "Email": "201851018@iiitvadodara.ac.in" 210 | }, 211 | "IIITV/STUD-GYMKHANA/CERT/456/000047": { 212 | "Name": "Saurabh Tiwari", 213 | "Sub Event Name": "Mystery Box", 214 | "Position": "1st", 215 | "Academic Year": "2019-2020", 216 | "Certificate ID": "IIITV/STUD-GYMKHANA/CERT/456/000047", 217 | "Date": "27-01-2021", 218 | "RollNo": 201751047, 219 | "Filename": "IIITV-STUD-GYMKHANA-CERT-456-47.pdf", 220 | "Email": "201851018@iiitvadodara.ac.in" 221 | } 222 | } 223 | -------------------------------------------------------------------------------- /public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thepushkarp/certificate-generator-frontend/5024ac1c6c139da1c8f0226130d6afcab807643e/public/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thepushkarp/certificate-generator-frontend/5024ac1c6c139da1c8f0226130d6afcab807643e/public/favicon-32x32.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thepushkarp/certificate-generator-frontend/5024ac1c6c139da1c8f0226130d6afcab807643e/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | 16 | 17 | 26 | IIITV Certificate Verification and Generation System 27 | 28 | 29 | 30 | 31 |
32 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "IIITV Certificate Verification and Generation System", 3 | "name": "Indian Institute of Information Technology Vadodara's Certificate Verification and Generation System", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { "src": "/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" } 11 | ], 12 | "start_url": ".", 13 | "display": "standalone", 14 | "theme_color": "#000000", 15 | "background_color": "#ffffff" 16 | } 17 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /src/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { BrowserRouter as Router, Route, Switch, Redirect } from 'react-router-dom'; 3 | import 'bootstrap/dist/css/bootstrap.min.css'; 4 | import { 5 | Footer, 6 | Navigation, 7 | Home, 8 | Generate, 9 | Verify, 10 | Certificate, 11 | Login, 12 | } from './components'; 13 | 14 | class App extends React.Component { 15 | constructor(props) { 16 | super(props); 17 | 18 | const loginToken = localStorage.getItem('token') ?? null; 19 | const time = localStorage.getItem('time') | ''; 20 | const loginCheck = Boolean(!!loginToken && time < Date.now()); 21 | 22 | this.state = { 23 | loginToken: loginToken, 24 | islogedIn: loginCheck, 25 | }; 26 | 27 | this.handler = this.handler.bind(this); 28 | } 29 | 30 | componentDidMount() { 31 | const loginToken = localStorage.getItem('token') ?? null; 32 | const time = localStorage.getItem('time') | ''; 33 | if (loginToken === null) { 34 | this.setState({ 35 | islogedIn: false, 36 | }); 37 | } else if (time < Date.now()) this.setState({ loginToken, islogedIn: true }); 38 | } 39 | 40 | handler(token, cTime) { 41 | this.setState({ 42 | loginToken: token, 43 | islogedIn: true, 44 | }); 45 | localStorage.setItem('token', token); 46 | localStorage.setItem('time', cTime); 47 | } 48 | 49 | render() { 50 | const x = () => { 51 | const token = localStorage.getItem('token') 52 | ? localStorage.getItem('token') 53 | : ''; 54 | const time = localStorage.getItem('time') | ''; 55 | if (!!token && time < Date.now()) return true; 56 | return false; 57 | }; 58 | 59 | return ( 60 | <> 61 | 62 | 63 | 64 | 65 | {x() === false ? ( 66 | 67 | ) : ( 68 | 69 | )} 70 | 71 | } 75 | /> 76 | 77 | 78 | 79 | 80 | } /> 81 | 82 | 83 |