├── .eslintrc.js ├── .github ├── issue_label_bot.yaml ├── stale.yml └── workflows │ ├── commit.yml │ ├── dependabot_bot_issue.yml │ └── workers.yml ├── .gitignore ├── .hooks ├── commit-msg ├── setup.ps1 └── setup.sh ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── contributing.md ├── dist ├── precache-manifest.3dfd50a48f4cf86ed7c4b46f1560be3e.js ├── robots.txt └── sitemap.xml ├── functions └── get.js ├── package.json ├── public ├── Group 2.png ├── android-chrome-192x192.png ├── android-chrome-512x512.png ├── apple-touch-icon.png ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon.ico ├── index.html ├── robots.txt ├── site.webmanifest └── sitemap.xml ├── src ├── App.vue ├── assets │ ├── img │ │ └── logos │ │ │ ├── FastAPI.svg │ │ │ └── Tensorflow.svg │ └── me.png ├── components │ ├── Art.vue │ ├── Card.vue │ ├── Code.vue │ ├── ColophonMusic.vue │ ├── Contact.vue │ ├── Experience.vue │ ├── Footer.vue │ ├── Hero.vue │ ├── HorizontalDivider.vue │ ├── Music.vue │ ├── Navbar.vue │ └── Skills.vue └── main.js ├── workers-site ├── .cargo-ok ├── .gitignore ├── data.js ├── handler.js ├── index.js ├── package-lock.json ├── package.json └── yarn.lock ├── wrangler.toml └── yarn.lock /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | es6: true, 5 | }, 6 | extends: ["eslint:recommended", "plugin:vue/essential"], 7 | globals: { 8 | Atomics: "readonly", 9 | SharedArrayBuffer: "readonly", 10 | }, 11 | parserOptions: { 12 | ecmaVersion: 2018, 13 | }, 14 | plugins: ["vue"], 15 | rules: { 16 | "vue/valid-v-for": 0, 17 | "no-undef": 0, 18 | "no-console": "off", 19 | }, 20 | }; 21 | -------------------------------------------------------------------------------- /.github/issue_label_bot.yaml: -------------------------------------------------------------------------------- 1 | label-alias: 2 | bug: 'bug' 3 | feature_request: 'enhancement' 4 | question: 'help-wanted' -------------------------------------------------------------------------------- /.github/stale.yml: -------------------------------------------------------------------------------- 1 | # Number of days of inactivity before an issue becomes stale 2 | daysUntilStale: 30 3 | 4 | # Number of days of inactivity before a stale issue is closed 5 | daysUntilClose: 7 6 | 7 | # Issues with these labels will never be considered stale 8 | exemptLabels: 9 | - bug 10 | - security 11 | 12 | # Label to use when marking an issue as stale 13 | staleLabel: wontfix 14 | 15 | # Comment to post when marking an issue as stale. Set to `false` to disable 16 | markComment: > 17 | This issue has been automatically marked as stale because it has not had 18 | recent activity. It will be closed if no further activity occurs. Thank you 19 | for your contributions. 20 | 21 | # Comment to post when closing a stale issue. Set to `false` to disable 22 | closeComment: true -------------------------------------------------------------------------------- /.github/workflows/commit.yml: -------------------------------------------------------------------------------- 1 | name: Lint Commit Messages 2 | on: [pull_request] 3 | 4 | jobs: 5 | commitlint: 6 | runs-on: ubuntu-latest 7 | steps: 8 | - uses: actions/checkout@v2 9 | with: 10 | fetch-depth: 0 11 | - uses: wagoid/commitlint-github-action@v2 -------------------------------------------------------------------------------- /.github/workflows/dependabot_bot_issue.yml: -------------------------------------------------------------------------------- 1 | name: Create issue on dependabot pr 2 | on: 3 | - pull_request 4 | jobs: 5 | create_commit: 6 | runs-on: ubuntu-latest 7 | steps: 8 | - name: Create issue using REST API 9 | if: contains(github.actor, 'dependabot') 10 | run: | 11 | curl --request POST \ 12 | --url https://api.github.com/repos/${{ github.repository }}/issues \ 13 | --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \ 14 | --header 'content-type: application/json' \ 15 | --data '{ 16 | "title": "Verify for any breaking changes in PR made by ${{ github.actor }}", 17 | "body": "- Kindly check if new dependencies are not introducing any breaking changes.\n- Ref: ${{ github.ref }}", 18 | "labels": ["dependencies", "good first issue"], 19 | "assignees": [""] 20 | }' 21 | -------------------------------------------------------------------------------- /.github/workflows/workers.yml: -------------------------------------------------------------------------------- 1 | name: Deploy to Cloudflare Workers Sites 2 | 3 | on: [push] 4 | 5 | jobs: 6 | deploy-main: 7 | runs-on: ubuntu-latest 8 | 9 | steps: 10 | - uses: actions/checkout@v2 11 | 12 | - name: Cache yarn dependencies 13 | uses: c-hive/gha-yarn-cache@v1 14 | 15 | - name: Use Node.js 16 | uses: actions/setup-node@v1 17 | with: 18 | node-version: 18.x 19 | - run: yarn install --frozen-lockfile 20 | - run: yarn build 21 | 22 | - name: Publish to Cloudflare Workers Sites 23 | run: | 24 | mkdir -p ~/.wrangler/config/ 25 | echo "api_token=\"${CF_API_TOKEN}\"" > ~/.wrangler/config/default.toml 26 | yarn wrangler publish --env production 27 | env: 28 | SECRETS_ENC_KEY: ${{ secrets.SECRETS_ENC_KEY }} 29 | CF_API_TOKEN: ${{ secrets.CF_API_TOKEN }} 30 | CF_ZONE_ID: ${{ secrets.CF_ZONE_ID }} 31 | CF_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }} 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | 3 | # local env files 4 | .env.local 5 | .env.*.local 6 | 7 | # Log files 8 | npm-debug.log* 9 | yarn-debug.log* 10 | yarn-error.log* 11 | pnpm-debug.log* 12 | 13 | # Editor directories and files 14 | .idea 15 | .vscode 16 | *.suo 17 | *.ntvs* 18 | *.njsproj 19 | *.sln 20 | *.sw? 21 | -------------------------------------------------------------------------------- /.hooks/commit-msg: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | commit_message=$(cat "$1" | sed -e 's/^[[:space:]]*//') 3 | matched_str=$(echo "$commit_message" | grep -E "^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\([a-z]+\))?: [a-zA-Z0-9 ]+$") 4 | echo "$matched_str" 5 | if [ "$matched_str" != "" ]; 6 | then 7 | exit 0 8 | else 9 | echo "Commit rejected due to incorrect commit message format. See commit standards here - https://www.conventionalcommits.org/en/v1.0.0/" 10 | exit 1 11 | fi -------------------------------------------------------------------------------- /.hooks/setup.ps1: -------------------------------------------------------------------------------- 1 | Copy-Item ".\commit-msg" -Destination "..\.git\hooks\" 2 | ICACLS "..\.git\hooks\commit-msg" /grant:r "users:(RX)" /C -------------------------------------------------------------------------------- /.hooks/setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | cp commit-msg ../.git/hooks/commit-msg 3 | chmod +x ../.git/hooks/commit-msg -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment 10 | include: 11 | 12 | * Using welcoming and inclusive language 13 | * Being respectful of differing viewpoints and experiences 14 | * Gracefully accepting constructive criticism 15 | * Focusing on what is best for the community 16 | * Showing empathy towards other community members 17 | 18 | Examples of unacceptable behavior by participants include: 19 | 20 | * The use of sexualized language or imagery and unwelcome sexual attention or 21 | advances 22 | * Trolling, insulting/derogatory comments, and personal or political attacks 23 | * Public or private harassment 24 | * Publishing others' private information, such as a physical or electronic 25 | address, without explicit permission 26 | * Sharing critical Pentest findings with public or putting in an issue 27 | * DOS Attack on any of our subdomains. 28 | * Continous load testing is strictly not allowed 29 | * Other conduct which could reasonably be considered inappropriate in a 30 | professional setting 31 | 32 | ## Responsibilities | Consequences of Unacceptable Behavior 33 | 34 | Project maintainers are responsible for clarifying the standards of acceptable 35 | behavior and are expected to take appropriate and fair corrective action in 36 | response to any instances of unacceptable behavior. 37 | 38 | Project maintainers have the right and responsibility to remove, edit, or 39 | reject comments, commits, code, wiki edits, issues, and other contributions 40 | that are not aligned to this Code of Conduct, or to ban temporarily or 41 | permanently any contributor for other behaviors that they deem inappropriate, 42 | threatening, offensive, or harmful. 43 | 44 | ## Scope 45 | 46 | This Code of Conduct applies both within project spaces and in public spaces 47 | when an individual is representing the project or its community. Representation of a project may be 48 | further defined and clarified by project maintainers. 49 | 50 | ## Enforcement 51 | 52 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 53 | reported by contacting the project maintainer on [hi@visheshbansal.dev](mailto:hi@visheshbansal.dev). All 54 | complaints will be reviewed and investigated and will result in a response that 55 | is deemed necessary and appropriate to the circumstances. The project team is 56 | obligated to maintain confidentiality with regard to the reporter of an incident. 57 | 58 | Project maintainers who do not follow or enforce the Code of Conduct in good 59 | faith may face temporary or permanent repercussions as determined by other 60 | members of the project's leadership. 61 | 62 | ## Attribution 63 | 64 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 65 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 66 | 67 | [homepage]: https://www.contributor-covenant.org 68 | 69 | For answers to common questions about this code of conduct, see 70 | https://www.contributor-covenant.org/faq 71 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Vishesh Bansal 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. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | Vishesh Bansal 4 | 5 |

Portfolio Website

6 |

Portfolio Website for Vishesh Bansal

7 |

8 | 9 | > Portfolio Website for Vishesh Bansal built in Vue.js 10 | 11 | ## Features 12 | - [X] Deployed using cloudflare workers 13 | - [X] Interacts with Last.FMs API 14 | 15 |
16 | 17 | ## Dependencies 18 | - Last FM API key 19 | 20 | 21 | ## Running 22 | 23 | 24 | Directions to install 25 | ```bash 26 | yarn install 27 | ``` 28 | 29 | Directions to execute 30 | 31 | ```bash 32 | yarn start 33 | ``` 34 | 35 |

36 | Made with :heart: by Vishesh Bansal 37 |

38 | -------------------------------------------------------------------------------- /contributing.md: -------------------------------------------------------------------------------- 1 | ## Contribution Guidelines 2 | 3 | Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms. 4 | 5 | ## How to contribute 6 | 7 | - Decide which repository to contribute 8 | - Decide what to contribute 9 | - Fork the repo then clone it locally 10 | - Commit your work (You should create a new branch when you're doing development work that is somewhat experimental in nature. ) 11 | - Watch how to make a [Pull Request](https://www.youtube.com/watch?v=RVf9nXslJIc) 12 | - Congrats 🎉 you have just contributed towards open source! 13 | 14 | ## What to contribute 15 | 16 | - Find an open issue to tackle 17 | - Ask if you can help write a new feature, on [Telegram](https://t.me/VisheshBansal) 18 | - Add / Improve Unit Testing 19 | - Write tutorials for how a project can be used and add to the readme 20 | - Review code on other people’s submissions and help improving / finding vulnerabilities 21 | 22 | ## Making a PR 23 | - Provide all the appropriate details asked in PR template 24 | - A pull request doesn’t have to represent finished work. It’s usually better to open a pull request early on, so others can watch or give feedback on your progress. Just mark it as a “WIP” (Work in Progress) in the subject line. You can always add more commits later. 25 | 26 | ## Opening an Issue 27 | - Make use of an appropriate Issue Template 28 | - We welcome Feature request, Bug Report, Documentation fix and others 29 | - Do not open critical security issues here, report them directly on [Telegram](https://t.me/VisheshBansal). 30 | 31 | ## Communicating effectively 32 | **Give context.** Help others get quickly up to speed. If you’re running into an error, explain what you’re trying to do and how to reproduce it. If you’re suggesting a new idea, explain why you think it’d be useful to the project (not just to you!). 33 | 34 | ``` 35 | ✔️ “X doesn’t happen when I do Y” 36 | ❌ “X is broken! Please fix it.” 37 | ``` 38 | 39 | **Do your homework beforehand.** It’s OK not to know things, but show that you tried. Before asking for help, be sure to check a project’s README, documentation, issues (open or closed), mailing list, and search the internet for an answer. People will appreciate when you demonstrate that you’re trying to learn. 40 | 41 | ``` 42 | ✔️ ““I’m not sure how to implement X. I checked the help docs and didn’t find any mentions.”” 43 | ❌ “How do I X?” 44 | ``` 45 | 46 | **Keep requests short and direct.** 47 | 48 | ``` 49 | ✔️ “I’d like to write an API tutorial.” 50 | ❌ “I was driving down the highway the other day and stopped for gas, and then I had this amazing idea for something we should be doing, but before I explain that, let me show you…“ 51 | ``` 52 | 53 | **It’s okay to ask questions (but be patient!).** 54 | 55 | ``` 56 | ✔️ “Thanks for looking into this error. I followed your suggestions. Here’s the output.” 57 | ❌ “Why can’t you fix my problem? Isn’t this your project?” 58 | ``` 59 | 60 | **Respect community decisions.** 61 | 62 | ``` 63 | ✔️ “I’m disappointed you can’t support my use case, but as you’ve explained it only affects a minor portion of users, I understand why. Thanks for listening.” 64 | ❌ “Why won’t you support my use case? This is unacceptable!” 65 | ``` 66 | 67 | ## Misc 68 | - You are welcome to Propose a new feature or other project idea by creating an **issue**. 69 | - You may Discuss a high-level topic or idea (for example, community, vision or policies) on [Telegram](https://t.me/VisheshBansal). 70 | 71 | ## Attribution 72 | - [Open Source Guide](https://opensource.guide/how-to-contribute/) 73 | -------------------------------------------------------------------------------- /dist/precache-manifest.3dfd50a48f4cf86ed7c4b46f1560be3e.js: -------------------------------------------------------------------------------- 1 | self.__precacheManifest = (self.__precacheManifest || []).concat([ 2 | { 3 | "revision": "d344e6c15e2c3f7a48109f7816177d28", 4 | "url": "/android-chrome-192x192.png" 5 | }, 6 | { 7 | "revision": "b160b1e1d4bcb54076d0e599d810031f", 8 | "url": "/android-chrome-512x512.png" 9 | }, 10 | { 11 | "revision": "3a124e2c1f8094f08a497d4d9454e664", 12 | "url": "/apple-touch-icon.png" 13 | }, 14 | { 15 | "revision": "13ddb6bfd1eb9fbe2d8a", 16 | "url": "/css/app.9c2d3fdb.css" 17 | }, 18 | { 19 | "revision": "ecc97b544d491c20fe04", 20 | "url": "/css/chunk-vendors.ba2c6e0e.css" 21 | }, 22 | { 23 | "revision": "b1c24d44dbe6cb92d500a4282669b81e", 24 | "url": "/favicon-16x16.png" 25 | }, 26 | { 27 | "revision": "977f0675f8ff23c4af61945d4ba418d5", 28 | "url": "/favicon-32x32.png" 29 | }, 30 | { 31 | "revision": "099a9556e1a63ece24f8a99859c94c7d", 32 | "url": "/fonts/fa-brands-400.099a9556.woff" 33 | }, 34 | { 35 | "revision": "30cc681d4487d2f561035ba24a68c629", 36 | "url": "/fonts/fa-brands-400.30cc681d.eot" 37 | }, 38 | { 39 | "revision": "3b89dd103490708d19a95adcae52210e", 40 | "url": "/fonts/fa-brands-400.3b89dd10.ttf" 41 | }, 42 | { 43 | "revision": "f7307680c7fe85959f3ecf122493ea7d", 44 | "url": "/fonts/fa-brands-400.f7307680.woff2" 45 | }, 46 | { 47 | "revision": "1f77739ca9ff2188b539c36f30ffa2be", 48 | "url": "/fonts/fa-regular-400.1f77739c.ttf" 49 | }, 50 | { 51 | "revision": "7124eb50fc8227c78269f2d995637ff5", 52 | "url": "/fonts/fa-regular-400.7124eb50.woff" 53 | }, 54 | { 55 | "revision": "7630483dd4b0c48639d2ac54a894b450", 56 | "url": "/fonts/fa-regular-400.7630483d.eot" 57 | }, 58 | { 59 | "revision": "f0f8230116992e521526097a28f54066", 60 | "url": "/fonts/fa-regular-400.f0f82301.woff2" 61 | }, 62 | { 63 | "revision": "1042e8ca1ce821518a2d3e7055410839", 64 | "url": "/fonts/fa-solid-900.1042e8ca.eot" 65 | }, 66 | { 67 | "revision": "605ed7926cf39a2ad5ec2d1f9d391d3d", 68 | "url": "/fonts/fa-solid-900.605ed792.ttf" 69 | }, 70 | { 71 | "revision": "9fe5a17c8ab036d20e6c5ba3fd2ac511", 72 | "url": "/fonts/fa-solid-900.9fe5a17c.woff" 73 | }, 74 | { 75 | "revision": "e8a427e15cc502bef99cfd722b37ea98", 76 | "url": "/fonts/fa-solid-900.e8a427e1.woff2" 77 | }, 78 | { 79 | "revision": "100291a9cf2ff95cd05abe092cfb60e3", 80 | "url": "/img/FastAPI.100291a9.svg" 81 | }, 82 | { 83 | "revision": "b4136a512eea75331763c699f7ac3d00", 84 | "url": "/img/Tensorflow.b4136a51.svg" 85 | }, 86 | { 87 | "revision": "ba7ed552362f64d30f6d844974d89114", 88 | "url": "/img/fa-brands-400.ba7ed552.svg" 89 | }, 90 | { 91 | "revision": "0bb428459c8ecfa61b22a03def1706e6", 92 | "url": "/img/fa-regular-400.0bb42845.svg" 93 | }, 94 | { 95 | "revision": "376c1f97f6553dea1ca9b3f9081889bd", 96 | "url": "/img/fa-solid-900.376c1f97.svg" 97 | }, 98 | { 99 | "revision": "4c6e225b3affde15daa6ba6ce018514a", 100 | "url": "/index.html" 101 | }, 102 | { 103 | "revision": "13ddb6bfd1eb9fbe2d8a", 104 | "url": "/js/app.1701db8e.js" 105 | }, 106 | { 107 | "revision": "ecc97b544d491c20fe04", 108 | "url": "/js/chunk-vendors.fafa8b93.js" 109 | }, 110 | { 111 | "revision": "1770c2524b653c4741436956a1f7f256", 112 | "url": "/manifest.json" 113 | }, 114 | { 115 | "revision": "434d8057d55ba97805a77e81ca36e3da", 116 | "url": "/og-image.png" 117 | }, 118 | { 119 | "revision": "97b4dde0a509e123e68352e5e77fc29a", 120 | "url": "/robots.txt" 121 | }, 122 | { 123 | "revision": "053100cb84a50d2ae7f5492f7dd7f25e", 124 | "url": "/site.webmanifest" 125 | }, 126 | { 127 | "revision": "91d5d587ce06cf1ef3a1e1b73c950688", 128 | "url": "/sitemap.xml" 129 | } 130 | ]); -------------------------------------------------------------------------------- /dist/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | 4 | Sitemap: https://visheshbansal.dev/sitemap.xml -------------------------------------------------------------------------------- /dist/sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | https://visheshbansal.dev/ 12 | 2021-07-20T19:38:49+00:00 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /functions/get.js: -------------------------------------------------------------------------------- 1 | import fetch from "node-fetch"; 2 | 3 | const API_ENDPOINT = 4 | "https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=VisheshBansal&api_key=06371334b3058080bf844f787357d514&format=json"; 5 | 6 | exports.handler = async (event, context) => { 7 | return fetch(API_ENDPOINT) 8 | .then((response) => response.json()) 9 | .then((data) => ({ 10 | statusCode: 200, 11 | headers: { 12 | "Access-Control-Allow-Origin": "*", 13 | "Access-Control-Allow-Methods": "*", 14 | "Access-Control-Allow-Headers": "*", 15 | "Cache-Control": "public,max-age=60", 16 | }, 17 | body: JSON.stringify(data), 18 | })) 19 | .catch((error) => ({ 20 | statusCode: 422, 21 | headers: { 22 | "Access-Control-Allow-Origin": "*", 23 | "Access-Control-Allow-Methods": "*", 24 | "Access-Control-Allow-Headers": "*", 25 | "Cache-Control": "public,max-age=60", 26 | }, 27 | body: String(error), 28 | })); 29 | }; 30 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "portfolio", 3 | "license": "MIT", 4 | "author": "Vishesh Bansal (https://visheshbansal.dev/)", 5 | "version": "1.22.10", 6 | "private": true, 7 | "scripts": { 8 | "serve": "vue-cli-service --openssl-legacy-provider serve", 9 | "build": "vue-cli-service --openssl-legacy-provider build", 10 | "start": "npm run serve" 11 | }, 12 | "dependencies": { 13 | "@fortawesome/free-solid-svg-icons": "^5.14.0", 14 | "@luxdamore/vue-cursor-fx": "^1.6.2", 15 | "aos": "^3.0.0-beta.6", 16 | "encoding": "^0.1.13", 17 | "eslint": "^7.7.0", 18 | "eslint-plugin-vue": "^6.2.2", 19 | "node-fetch": "^2.6.0", 20 | "register-service-worker": "^1.7.1", 21 | "vue": "^2.6.11", 22 | "vue-moment": "^4.1.0", 23 | "vue-router": "^4.0.10", 24 | "vue-scrollto": "^2.18.2", 25 | "vue-typer": "^1.2.0", 26 | "vuejs-paginate": "^2.1.0", 27 | "wrangler": "^2.13.0" 28 | }, 29 | "devDependencies": { 30 | "@fortawesome/fontawesome-free": "^5.14.0", 31 | "@vue/cli-plugin-eslint": "^3.1.1", 32 | "@vue/cli-plugin-pwa": "^4.4.6", 33 | "@vue/cli-plugin-router": "^4.5.2", 34 | "@vue/cli-service": "^3.12.1", 35 | "vue-template-compiler": "^2.6.11" 36 | } 37 | } -------------------------------------------------------------------------------- /public/Group 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VisheshBansal/Portfolio-Website/cb45752525b0628f4ab7afde6dc88d944cec4091/public/Group 2.png -------------------------------------------------------------------------------- /public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VisheshBansal/Portfolio-Website/cb45752525b0628f4ab7afde6dc88d944cec4091/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VisheshBansal/Portfolio-Website/cb45752525b0628f4ab7afde6dc88d944cec4091/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VisheshBansal/Portfolio-Website/cb45752525b0628f4ab7afde6dc88d944cec4091/public/apple-touch-icon.png -------------------------------------------------------------------------------- /public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VisheshBansal/Portfolio-Website/cb45752525b0628f4ab7afde6dc88d944cec4091/public/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VisheshBansal/Portfolio-Website/cb45752525b0628f4ab7afde6dc88d944cec4091/public/favicon-32x32.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VisheshBansal/Portfolio-Website/cb45752525b0628f4ab7afde6dc88d944cec4091/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | Vishesh Bansal 48 | 49 | 50 | 51 | 56 |
57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | 4 | Sitemap: https://visheshbansal.dev/sitemap.xml -------------------------------------------------------------------------------- /public/site.webmanifest: -------------------------------------------------------------------------------- 1 | {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} -------------------------------------------------------------------------------- /public/sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | https://visheshbansal.dev/ 12 | 2021-07-20T19:38:49+00:00 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 41 | 42 | 108 | 109 | 231 | -------------------------------------------------------------------------------- /src/assets/img/logos/FastAPI.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/logos/Tensorflow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | tensorflow 6 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/me.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VisheshBansal/Portfolio-Website/cb45752525b0628f4ab7afde6dc88d944cec4091/src/assets/me.png -------------------------------------------------------------------------------- /src/components/Art.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 16 | 17 | 63 | -------------------------------------------------------------------------------- /src/components/Card.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 26 | 27 | 89 | -------------------------------------------------------------------------------- /src/components/Code.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 76 | 77 | 174 | -------------------------------------------------------------------------------- /src/components/ColophonMusic.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 112 | 113 | 139 | -------------------------------------------------------------------------------- /src/components/Contact.vue: -------------------------------------------------------------------------------- 1 | 88 | 89 | 94 | 95 | -------------------------------------------------------------------------------- /src/components/Experience.vue: -------------------------------------------------------------------------------- 1 | 72 | 73 | 79 | -------------------------------------------------------------------------------- /src/components/Footer.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 31 | 32 | 95 | -------------------------------------------------------------------------------- /src/components/Hero.vue: -------------------------------------------------------------------------------- 1 | 70 | 71 | 81 | 82 | 271 | -------------------------------------------------------------------------------- /src/components/HorizontalDivider.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | 19 | -------------------------------------------------------------------------------- /src/components/Music.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 35 | 36 | 92 | -------------------------------------------------------------------------------- /src/components/Navbar.vue: -------------------------------------------------------------------------------- 1 | 49 | 50 | 55 | 56 | 57 | 181 | -------------------------------------------------------------------------------- /src/components/Skills.vue: -------------------------------------------------------------------------------- 1 | 88 | 89 | 94 | 95 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import App from "./App.vue"; 3 | import "@fortawesome/fontawesome-free/css/all.css"; 4 | import "@fortawesome/fontawesome-free/js/all.js"; 5 | import { CursorFx } from '@luxdamore/vue-cursor-fx'; 6 | import '@luxdamore/vue-cursor-fx/dist/CursorFx.css'; 7 | Vue.component( 8 | CursorFx.name, 9 | CursorFx 10 | ); 11 | 12 | Vue.config.productionTip = false; 13 | 14 | new Vue({ 15 | render: function (h) { 16 | return h(App); 17 | }, 18 | }).$mount("#app"); 19 | Vue.use( 20 | CursorFx 21 | ); 22 | -------------------------------------------------------------------------------- /workers-site/.cargo-ok: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VisheshBansal/Portfolio-Website/cb45752525b0628f4ab7afde6dc88d944cec4091/workers-site/.cargo-ok -------------------------------------------------------------------------------- /workers-site/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | worker -------------------------------------------------------------------------------- /workers-site/data.js: -------------------------------------------------------------------------------- 1 | export const redirects = { 2 | resume: { 3 | title: 'Resume', 4 | url: 'https://drive.google.com/file/d/1V25rHeFhoW1z8kEf4_qxwI8sxW36gO7j/view?usp=sharing', 5 | }, 6 | twitter: { 7 | title: 'Twitter', 8 | url: 'https://twitter.com/VisheshBansal17', 9 | }, 10 | instagram: { 11 | title: 'Instagram', 12 | url: 'https://instagram.com/thevisheshbansal', 13 | }, 14 | linkedin: { 15 | title: 'LinkedIn', 16 | url: 'https://www.linkedin.com/in/bansalvishesh/', 17 | }, 18 | medium: { 19 | title: 'Medium', 20 | url: 'https://medium.com/@visheshbansal', 21 | }, 22 | kaggle: { 23 | title: 'kaggle', 24 | url: 'https://kaggle.com/bansalvishesh', 25 | }, 26 | behance: { 27 | title: 'Behance', 28 | url: 'https://behance.net/visheshbansal', 29 | }, 30 | dribbble: { 31 | title: 'Dribbble', 32 | url: 'https://dribbble.com/visheshbansal', 33 | }, 34 | "arc-sw.js":{ 35 | title: 'Arc Service Worker', 36 | url:"https://arc.io/arc-sw.js", 37 | }, 38 | }; 39 | -------------------------------------------------------------------------------- /workers-site/handler.js: -------------------------------------------------------------------------------- 1 | import { getAssetFromKV, serveSinglePageApp} from '@cloudflare/kv-asset-handler'; 2 | import { redirects } from './data.js'; 3 | 4 | const GH_URL = `https://github.com/VisheshBansal`; 5 | 6 | export async function handleRequest(event) { 7 | return performRedirect(event); 8 | } 9 | 10 | async function getPageFromKV(event) { 11 | const url = new URL(event.request.url); 12 | let options = {}; 13 | try { 14 | return await getAssetFromKV(event, options); 15 | //on error try appending html 16 | } catch (e) { 17 | return await getAssetFromKV(event, { mapRequestToAsset: serveSinglePageApp }) 18 | // return new Response(e.message || e.toString(), { status: 500 }); 19 | } 20 | } 21 | 22 | async function performRedirect(event) { 23 | const urlParts = event.request.url 24 | .split('?')[0] 25 | .replace(BASE_URL, '') 26 | .split('/') 27 | .map((s) => s.toLowerCase()); 28 | if (redirects[urlParts[0]]) { 29 | return Response.redirect(redirects[urlParts[0]]['url'], 301); 30 | } 31 | if (urlParts[0] == 'gh') { 32 | switch (urlParts.length) { 33 | case 1: 34 | return Response.redirect(GH_URL, 301); 35 | case 2: 36 | return Response.redirect(`${GH_URL}/${urlParts[1]}`, 301); 37 | case 3: 38 | return Response.redirect( 39 | `${GH_URL}/${urlParts[1]}/commit/${urlParts[2]}`, 40 | 301 41 | ); 42 | case 4: 43 | return Response.redirect( 44 | `${GH_URL}/${urlParts[1]}/issues/${urlParts[3]}`, 45 | 301 46 | ); 47 | } 48 | } 49 | return getPageFromKV(event); 50 | } -------------------------------------------------------------------------------- /workers-site/index.js: -------------------------------------------------------------------------------- 1 | import { handleRequest } from './handler'; 2 | 3 | /** 4 | * The DEBUG flag will do two things that help during development: 5 | * 1. we will skip caching on the edge, which makes it easier to 6 | * debug. 7 | * 2. we will return an error message on exception in your Response rather 8 | * than the default 404.html page. 9 | */ 10 | // const DEBUG = false; 11 | 12 | addEventListener('fetch', (event) => { 13 | console.log('got event'); 14 | event.respondWith(handleRequest(event)); 15 | }); -------------------------------------------------------------------------------- /workers-site/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "worker", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "worker", 9 | "version": "1.0.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "@cloudflare/kv-asset-handler": "~0.0.11" 13 | } 14 | }, 15 | "node_modules/@cloudflare/kv-asset-handler": { 16 | "version": "0.0.12", 17 | "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.0.12.tgz", 18 | "integrity": "sha512-3XCs9TRhQh/yUs1ST9cIMLB8C5c1JRKcDYTPJbAmcgI0kO2FPCSZz+kyNb9x25DuGQeqOMMwmxHPtiOfTki/Gw==", 19 | "dependencies": { 20 | "@cloudflare/workers-types": "^2.0.0", 21 | "@types/mime": "^2.0.2", 22 | "mime": "^2.4.6" 23 | } 24 | }, 25 | "node_modules/@cloudflare/workers-types": { 26 | "version": "2.2.2", 27 | "resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-2.2.2.tgz", 28 | "integrity": "sha512-kaMn2rueJ0PL1TYVGknTCh0X0x0d9G+FNXAFep7/4uqecEZoQb/63o6rOmMuiqI09zLuHV6xhKRXinokV/MY9A==" 29 | }, 30 | "node_modules/@types/mime": { 31 | "version": "2.0.3", 32 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", 33 | "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" 34 | }, 35 | "node_modules/mime": { 36 | "version": "2.5.2", 37 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", 38 | "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", 39 | "bin": { 40 | "mime": "cli.js" 41 | }, 42 | "engines": { 43 | "node": ">=4.0.0" 44 | } 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /workers-site/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "name": "worker", 4 | "version": "1.0.0", 5 | "description": "A template for kick starting a Cloudflare Workers project", 6 | "main": "index.js", 7 | "author": "Ashley Lewis ", 8 | "license": "MIT", 9 | "type": "module", 10 | "dependencies": { 11 | "@cloudflare/kv-asset-handler": "~0.0.11" 12 | } 13 | } -------------------------------------------------------------------------------- /workers-site/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@cloudflare/kv-asset-handler@~0.0.11": 6 | version "0.0.12" 7 | resolved "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.0.12.tgz" 8 | integrity sha512-3XCs9TRhQh/yUs1ST9cIMLB8C5c1JRKcDYTPJbAmcgI0kO2FPCSZz+kyNb9x25DuGQeqOMMwmxHPtiOfTki/Gw== 9 | dependencies: 10 | "@cloudflare/workers-types" "^2.0.0" 11 | "@types/mime" "^2.0.2" 12 | mime "^2.4.6" 13 | 14 | "@cloudflare/workers-types@^2.0.0": 15 | version "2.2.2" 16 | resolved "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-2.2.2.tgz" 17 | integrity sha512-kaMn2rueJ0PL1TYVGknTCh0X0x0d9G+FNXAFep7/4uqecEZoQb/63o6rOmMuiqI09zLuHV6xhKRXinokV/MY9A== 18 | 19 | "@types/mime@^2.0.2": 20 | version "2.0.3" 21 | resolved "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz" 22 | integrity sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q== 23 | 24 | mime@^2.4.6: 25 | version "2.5.2" 26 | resolved "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz" 27 | integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== 28 | -------------------------------------------------------------------------------- /wrangler.toml: -------------------------------------------------------------------------------- 1 | name = "site-worker" 2 | type = "webpack" 3 | workers_dev = true 4 | compatibility_date = "2023-04-02" 5 | main = "workers-site/index.js" 6 | 7 | [site] 8 | bucket = "./dist" 9 | 10 | [env.production] 11 | name = "site-worker-production" 12 | route = "visheshbansal.dev/*" 13 | vars = { BASE_URL = "https://visheshbansal.dev/" } --------------------------------------------------------------------------------