├── .gitignore ├── .nvmrc ├── CONTRIBUTING.md ├── README.md ├── bun.lockb ├── env.example.js ├── netlify.toml ├── now.json ├── package.json ├── pwa.config.js ├── src ├── App.vue ├── assets │ ├── Lookback │ │ ├── github-repos.svg │ │ ├── lb_countries.svg │ │ ├── lb_participant.svg │ │ ├── lb_prize.svg │ │ ├── lb_registration.svg │ │ ├── lb_visitor.svg │ │ ├── lines-of-code.svg │ │ └── time.svg │ ├── Sponsors │ │ ├── Devfolio.svg │ │ ├── Devfolio_Logo-Colored.svg │ │ ├── Portis_Logo-Black.svg │ │ ├── Tezos_Logo-Colored.svg │ │ ├── av.png │ │ ├── aws.png │ │ ├── cisco.png │ │ ├── devfolio_logo.svg │ │ ├── eligible.png │ │ ├── github.png │ │ ├── grab-on.png │ │ ├── hackerearth.png │ │ ├── hackerrank.png │ │ ├── matic-gr1.png │ │ ├── mozilla1.png │ │ ├── ntd-india.png │ │ ├── oh-campus.png │ │ ├── polygon.svg │ │ ├── top-coder.png │ │ ├── uber.png │ │ └── zebronics.png │ ├── Testimonial │ │ ├── akshay.jpeg │ │ ├── corner-even.svg │ │ ├── corner-odd.svg │ │ ├── daksh.jpeg │ │ ├── infosec.jpeg │ │ ├── khushi.jpeg │ │ ├── raghav.jpeg │ │ ├── raj-shukla.jpeg │ │ ├── shivansh.jpeg │ │ ├── shravan.jpeg │ │ └── tourist.jpeg │ ├── alums │ │ ├── Abhay.jpg │ │ ├── Ajeet_Kumar.JPG │ │ ├── Animesh_Pathak.jpeg │ │ ├── Atul_Tiwari.jpg │ │ ├── Dheerendra_Pandey.jpeg │ │ ├── Dhirendra_Trivedi.jpeg │ │ ├── Himanshu_Bhalla.jpg │ │ ├── Kamlesh_Madheshiya.jpg │ │ ├── Manish_Poddar.jpg │ │ ├── Manoj_Poddar.jpg │ │ ├── Mayur_Srivastava.jpeg │ │ ├── Nitin_Agrawal.jpeg │ │ ├── Pawan_kumar.jpg │ │ ├── Pranay_Arya.jpeg │ │ ├── Prashant_Joshi.jpeg │ │ ├── Rajesh_Kumar.jpg │ │ ├── Sudeep_Ghosh.jpg │ │ ├── Vikas_Gupta.jpg │ │ ├── linkedin.png │ │ ├── prabhat_tripathi.jpg │ │ └── vivek_lakwal.png │ ├── black-cf20-logo.svg │ ├── branches.json │ ├── ca │ │ ├── about.svg │ │ ├── faq.svg │ │ ├── hero.svg │ │ ├── perks.svg │ │ └── work.svg │ ├── cf-chartreuse-logo.svg │ ├── chartreuse-cf20-logo.svg │ ├── codefest-star-logo-black.svg │ ├── codefest-star-logo-chartreuse.svg │ ├── codefest-star-logo-white.svg │ ├── codestart │ │ ├── codestart-S.png │ │ ├── codestart-light.png │ │ └── codestart.png │ ├── countries.json │ ├── events │ │ ├── appathon.png │ │ ├── ctf.png │ │ ├── decipher.png │ │ ├── enigma.png │ │ ├── linguipedia.png │ │ ├── manthan.png │ │ ├── mathamania.png │ │ ├── perplexed.png │ │ └── vista.png │ ├── favicons │ │ ├── favicon120.png │ │ ├── favicon144.png │ │ ├── favicon167.png │ │ ├── favicon192.png │ │ ├── favicon32.png │ │ ├── favicon512.png │ │ ├── favicon57.png │ │ ├── favicon76.png │ │ └── favicon96.png │ ├── fonts │ │ ├── Aldo the Apache.woff2 │ │ ├── Roboto Mono.woff │ │ └── harry.woff │ ├── haxplore │ │ ├── hax.svg │ │ ├── hax_white.svg │ │ ├── logo-landing-black.svg │ │ ├── logo-landing.svg │ │ ├── logo-text-black.svg │ │ ├── logo-text.svg │ │ ├── prize-consolation.png │ │ ├── prize-first.svg │ │ ├── prize-girls.svg │ │ ├── prize-iitbhu.svg │ │ ├── prize-second.svg │ │ ├── prize-third.svg │ │ └── timeline.svg │ ├── hero-cf20-logo.svg │ ├── hero │ │ ├── background-dark.jpg │ │ ├── background.jpg │ │ ├── hero-wrap-dark.svg │ │ ├── hero-wrap.svg │ │ ├── logo-codefest20.png │ │ ├── logo-dark-codefest20.png │ │ ├── logo-dark.png │ │ └── logo.png │ ├── institutes.json │ ├── link.svg │ ├── logo-dcse.png │ ├── logo-iitbhu.png │ ├── logo.png │ ├── manifest.json │ ├── moon-white.svg │ ├── robots.txt │ ├── sitemap.xml │ ├── social │ │ ├── facebook.png │ │ ├── github-dark.png │ │ ├── github-light.png │ │ └── google.png │ ├── sun-white.svg │ ├── twitter_heart.png │ ├── white-cf20-logo.svg │ ├── white-cf24-logo.svg │ └── workbox-v5.1.2.js ├── components │ ├── Countdown.vue │ ├── EventDetails │ │ ├── AppBar.vue │ │ ├── DevfolioButton.vue │ │ ├── DiscordButton.vue │ │ ├── FAQ.vue │ │ ├── Footer.vue │ │ ├── FooterN.vue │ │ ├── GoogleFormButton.vue │ │ ├── HaxploreSponsors.vue │ │ ├── Intro.vue │ │ ├── Landing.vue │ │ ├── Prizes.vue │ │ ├── RegisterButton.vue │ │ ├── Section.vue │ │ └── Timeline.vue │ ├── FAQ.vue │ ├── FloatingButton.vue │ ├── Footer.vue │ ├── Hero.vue │ ├── Intro.vue │ ├── Leaderboard.vue │ ├── Lookback.vue │ ├── Menu │ │ ├── AppBar.vue │ │ ├── Slide.vue │ │ └── index.js │ ├── QuesAns.vue │ ├── REPL.vue │ ├── SectionSidebar.vue │ ├── SideBar.vue │ ├── SpecialEvent.vue │ ├── SponsorCard.vue │ ├── Sponsors.vue │ ├── StandardEvent.vue │ ├── StandardEventDetails.vue │ ├── StandardEventMobile.vue │ ├── Terminal.vue │ ├── Testimonials.vue │ ├── Timeline.vue │ ├── TimelineCheckpoint.vue │ ├── ca │ │ ├── AboutCA.vue │ │ ├── CAHero.vue │ │ ├── ContactCA.vue │ │ ├── FaqCA.vue │ │ ├── Perks.vue │ │ ├── PointsTable.vue │ │ └── Work.vue │ ├── codestart │ │ ├── About.vue │ │ ├── AppBar.vue │ │ ├── CodestartSponsors.vue │ │ ├── DevfolioButton.vue │ │ ├── DiscordButton.vue │ │ ├── FAQ.vue │ │ ├── Footer.vue │ │ ├── FooterN.vue │ │ ├── Intro.vue │ │ ├── Landing.vue │ │ ├── LoginButton.vue │ │ ├── Prizes.vue │ │ └── Timeline.vue │ ├── dashboard │ │ ├── DashboardEvent.vue │ │ ├── DashboardProfile.vue │ │ └── EventTeam.vue │ ├── haxplore │ │ ├── About.vue │ │ ├── AppBar.vue │ │ ├── DevfolioButton.vue │ │ ├── DiscordButton.vue │ │ ├── FAQ.vue │ │ ├── Footer.vue │ │ ├── FooterN.vue │ │ ├── HaxploreSponsors.vue │ │ ├── Intro.vue │ │ ├── Landing.vue │ │ ├── Prizes.vue │ │ └── Timeline.vue │ └── layouts │ │ ├── AppbarLayout.vue │ │ ├── CardLayout.vue │ │ ├── GridLayout.vue │ │ ├── ResponsiveTwoColumnLayout.vue │ │ ├── SectionLayout.vue │ │ ├── TabLayout.vue │ │ └── TextLayout.vue ├── index.html ├── index.js ├── js │ ├── api.js │ ├── commands.js │ ├── constants.js │ ├── exceptions.js │ └── utils.js ├── pages │ ├── 404.vue │ ├── CampusAmbassador.vue │ ├── ChangePassword.vue │ ├── CodeStart.vue │ ├── Dashboard.vue │ ├── EventDetails.vue │ ├── EventList.vue │ ├── EventRegistration.vue │ ├── ForgotPassword.vue │ ├── Hacksplore.vue │ ├── Home.vue │ ├── Login.vue │ ├── NewEventDetails.vue │ ├── Privacy.vue │ ├── ProfileEdit.vue │ ├── Referral.vue │ ├── Sponsors.vue │ └── Team.vue ├── plugins │ └── filters.js ├── registerServiceWorker.js ├── router │ └── index.js ├── store │ ├── auth.js │ ├── dashboard.js │ ├── events.js │ ├── index.js │ ├── navigation.js │ └── theme.js ├── styles │ ├── anims.styl │ ├── index.styl │ ├── mixins.styl │ └── theme │ │ ├── colors.styl │ │ ├── index.styl │ │ └── theme.styl └── sw.js ├── tsconfig.json └── vue.config.js /.nvmrc: -------------------------------------------------------------------------------- 1 | v13.14.0 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## CodeFest 2 | 3 | ### FRONTEND 4 | 5 | #### Introduction 6 | 7 | Source code for the frontend of CodeFest PWA app. Uses Vue.Js library to develop a PWA for both mobile and desktop alike with rich user-experience. 8 | 9 | #### Technical Stack 10 | 11 | - Node 13.12.0 12 | - NPM 6.14.4 13 | - PWA 14 | - Vue.Js 2.6.7 15 | - SW-Workbox 5.1.2 16 | - Firebase 17 | 18 | ### Development 19 | 20 | - First, ensure that Node.Js and NPM are installed on your system. 21 | - Use `npm install` to install all the dependencies. 22 | - For development server with hot-reload, use `npm run watch`. 23 | 24 | ### Structure 25 | 26 | - Non-Vue-related JS files are in the src/js folder. 27 | - App pages are in src/pages. 28 | -------------------------------------------------------------------------------- /bun.lockb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/bun.lockb -------------------------------------------------------------------------------- /env.example.js: -------------------------------------------------------------------------------- 1 | // Copy this file and rename it to env.js and put under src/js folder 2 | 3 | export const KEY_AUTH_TOKEN = "auth-token"; 4 | 5 | export const SITE_URL = "http://0.0.0.0:8080"; 6 | 7 | export const KEY_THEME = "theme"; 8 | 9 | export const BACKEND_URL = "http://0.0.0.0:8000"; 10 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [[redirects]] 2 | # For our Rest API. 3 | from = "/api/*" 4 | to = "https://api.codefest.tech/:splat" 5 | status = 200 6 | 7 | [[redirects]] 8 | # For robots.txt 9 | from = "/robots.txt" 10 | to = "/assets/robots.txt" 11 | status = 200 12 | 13 | [[redirects]] 14 | # For our VueJs SPA. 15 | from = "/*" 16 | to = "/index.html" 17 | status = 200 18 | 19 | [[headers]] 20 | for = "/*" 21 | [headers.values] 22 | Cache-Control = "no-cache, must-revalidate" 23 | -------------------------------------------------------------------------------- /now.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 2, 3 | "scope": "codefest-app", 4 | "redirects": [ 5 | { 6 | "source": "/robots.txt", 7 | "destination": "/assets/robots.txt" 8 | } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "scripts": { 4 | "build": "pwa build && rm build/*.map && rm build/*.map.gz", 5 | "start": "rm -rf dist && mv build dist && sirv dist -s", 6 | "watch": "pwa watch" 7 | }, 8 | "dependencies": { 9 | "@babel/core": "^7.9.0", 10 | "@babel/preset-env": "^7.9.0", 11 | "@saeris/vue-spinners": "^1.0.8", 12 | "anchorme": "^1.1.2", 13 | "firebase": "^7.7.0", 14 | "frisbee": "^2.0.8", 15 | "ganalytics": "^3.1.1", 16 | "sirv-cli": "^0.2.0", 17 | "vue": "~2.6.7", 18 | "vue-carousel": "^0.18.0", 19 | "vue-mq": "^1.0.1", 20 | "vue-recaptcha-v3": "^1.4.0", 21 | "vue-router": "~3.0.0", 22 | "vue-template-compiler": "~2.6.7", 23 | "vue-toasted": "^1.1.26", 24 | "vue-youtube": "^1.3.4", 25 | "vue2-scrollspy": "^2.3.1", 26 | "vuex": "^3.1.0" 27 | }, 28 | "devDependencies": { 29 | "@pwa/cli": "latest", 30 | "@pwa/plugin-brotli": "latest", 31 | "@pwa/plugin-gzip": "latest", 32 | "@pwa/preset-vue": "latest", 33 | "babel-cli": "^6.26.0", 34 | "babel-preset-env": "^1.7.0", 35 | "babelify": "^10.0.0", 36 | "eslint": "^5.12.1", 37 | "eslint-loader": "^2.1.1", 38 | "stylus": "^0.54.0", 39 | "stylus-loader": "^3.0.0", 40 | "ts-loader": "^5.3.3", 41 | "typescript": "^3.3.1", 42 | "workbox-webpack-plugin": "^5.1.2" 43 | }, 44 | "browserslist": [ 45 | ">0.25%", 46 | "last 1 version", 47 | "not ie_mob 11", 48 | "not ie 11", 49 | "not dead" 50 | ], 51 | "name": "codefest", 52 | "version": "2024.1.0", 53 | "main": "index.js", 54 | "author": "", 55 | "license": "ISC", 56 | "description": "" 57 | } 58 | -------------------------------------------------------------------------------- /pwa.config.js: -------------------------------------------------------------------------------- 1 | const { InjectManifest } = require("workbox-webpack-plugin"); 2 | const stylusLoader = require("stylus-loader"); 3 | const { join } = require("path"); 4 | 5 | exports.webpack = function(config, env) { 6 | // Add module aliases 7 | const src = config.context; 8 | config.resolve.alias["@styles"] = join(src, "styles"); 9 | config.resolve.alias["@js"] = join(src, "js"); 10 | config.resolve.alias["@store"] = join(src, "store"); 11 | config.devServer.host = "0.0.0.0"; 12 | 13 | // Add Workbox plugin 14 | config.plugins.push( 15 | new InjectManifest({ 16 | swSrc: join(src, "sw.js"), 17 | }) 18 | ); 19 | config.module.rules.forEach(({ test, use }) => { 20 | if ((test.test(".styl") || test.test(".stylus")) && Array.isArray(use)) { 21 | use.forEach((loader) => { 22 | if (loader.loader === "stylus-loader") { 23 | loader.options.import = [ 24 | join(src, "styles/theme/index.styl"), 25 | join(src, "styles/mixins.styl"), 26 | ]; 27 | } else loader; 28 | }); 29 | } 30 | }); 31 | }; 32 | 33 | exports.brotli = { 34 | cache: true, 35 | threshold: 0, 36 | minRatio: 0.8, 37 | compressionOptions: { 38 | quality: 11, 39 | size_hint: 0, 40 | lgblock: 0, 41 | lgwin: 22, 42 | mode: 0, 43 | }, 44 | }; 45 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 89 | 90 | 102 | -------------------------------------------------------------------------------- /src/assets/Lookback/github-repos.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | github-repos 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/Lookback/lb_participant.svg: -------------------------------------------------------------------------------- 1 | 2 | lb_participant -------------------------------------------------------------------------------- /src/assets/Lookback/lb_prize.svg: -------------------------------------------------------------------------------- 1 | 2 | lb_prize -------------------------------------------------------------------------------- /src/assets/Lookback/lb_registration.svg: -------------------------------------------------------------------------------- 1 | 2 | lb_registration -------------------------------------------------------------------------------- /src/assets/Lookback/lb_visitor.svg: -------------------------------------------------------------------------------- 1 | 2 | lb_visitor -------------------------------------------------------------------------------- /src/assets/Lookback/lines-of-code.svg: -------------------------------------------------------------------------------- 1 | 2 | lines-of-code -------------------------------------------------------------------------------- /src/assets/Lookback/time.svg: -------------------------------------------------------------------------------- 1 | 2 | time -------------------------------------------------------------------------------- /src/assets/Sponsors/av.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Sponsors/av.png -------------------------------------------------------------------------------- /src/assets/Sponsors/aws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Sponsors/aws.png -------------------------------------------------------------------------------- /src/assets/Sponsors/cisco.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Sponsors/cisco.png -------------------------------------------------------------------------------- /src/assets/Sponsors/devfolio_logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/Sponsors/eligible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Sponsors/eligible.png -------------------------------------------------------------------------------- /src/assets/Sponsors/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Sponsors/github.png -------------------------------------------------------------------------------- /src/assets/Sponsors/grab-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Sponsors/grab-on.png -------------------------------------------------------------------------------- /src/assets/Sponsors/hackerearth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Sponsors/hackerearth.png -------------------------------------------------------------------------------- /src/assets/Sponsors/hackerrank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Sponsors/hackerrank.png -------------------------------------------------------------------------------- /src/assets/Sponsors/matic-gr1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Sponsors/matic-gr1.png -------------------------------------------------------------------------------- /src/assets/Sponsors/mozilla1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Sponsors/mozilla1.png -------------------------------------------------------------------------------- /src/assets/Sponsors/ntd-india.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Sponsors/ntd-india.png -------------------------------------------------------------------------------- /src/assets/Sponsors/oh-campus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Sponsors/oh-campus.png -------------------------------------------------------------------------------- /src/assets/Sponsors/top-coder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Sponsors/top-coder.png -------------------------------------------------------------------------------- /src/assets/Sponsors/uber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Sponsors/uber.png -------------------------------------------------------------------------------- /src/assets/Sponsors/zebronics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Sponsors/zebronics.png -------------------------------------------------------------------------------- /src/assets/Testimonial/akshay.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Testimonial/akshay.jpeg -------------------------------------------------------------------------------- /src/assets/Testimonial/corner-even.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | testimonial-2 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/Testimonial/corner-odd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | testimonial-2 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/Testimonial/daksh.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Testimonial/daksh.jpeg -------------------------------------------------------------------------------- /src/assets/Testimonial/infosec.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Testimonial/infosec.jpeg -------------------------------------------------------------------------------- /src/assets/Testimonial/khushi.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Testimonial/khushi.jpeg -------------------------------------------------------------------------------- /src/assets/Testimonial/raghav.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Testimonial/raghav.jpeg -------------------------------------------------------------------------------- /src/assets/Testimonial/raj-shukla.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Testimonial/raj-shukla.jpeg -------------------------------------------------------------------------------- /src/assets/Testimonial/shivansh.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Testimonial/shivansh.jpeg -------------------------------------------------------------------------------- /src/assets/Testimonial/shravan.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Testimonial/shravan.jpeg -------------------------------------------------------------------------------- /src/assets/Testimonial/tourist.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/Testimonial/tourist.jpeg -------------------------------------------------------------------------------- /src/assets/alums/Abhay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Abhay.jpg -------------------------------------------------------------------------------- /src/assets/alums/Ajeet_Kumar.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Ajeet_Kumar.JPG -------------------------------------------------------------------------------- /src/assets/alums/Animesh_Pathak.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Animesh_Pathak.jpeg -------------------------------------------------------------------------------- /src/assets/alums/Atul_Tiwari.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Atul_Tiwari.jpg -------------------------------------------------------------------------------- /src/assets/alums/Dheerendra_Pandey.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Dheerendra_Pandey.jpeg -------------------------------------------------------------------------------- /src/assets/alums/Dhirendra_Trivedi.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Dhirendra_Trivedi.jpeg -------------------------------------------------------------------------------- /src/assets/alums/Himanshu_Bhalla.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Himanshu_Bhalla.jpg -------------------------------------------------------------------------------- /src/assets/alums/Kamlesh_Madheshiya.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Kamlesh_Madheshiya.jpg -------------------------------------------------------------------------------- /src/assets/alums/Manish_Poddar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Manish_Poddar.jpg -------------------------------------------------------------------------------- /src/assets/alums/Manoj_Poddar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Manoj_Poddar.jpg -------------------------------------------------------------------------------- /src/assets/alums/Mayur_Srivastava.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Mayur_Srivastava.jpeg -------------------------------------------------------------------------------- /src/assets/alums/Nitin_Agrawal.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Nitin_Agrawal.jpeg -------------------------------------------------------------------------------- /src/assets/alums/Pawan_kumar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Pawan_kumar.jpg -------------------------------------------------------------------------------- /src/assets/alums/Pranay_Arya.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Pranay_Arya.jpeg -------------------------------------------------------------------------------- /src/assets/alums/Prashant_Joshi.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Prashant_Joshi.jpeg -------------------------------------------------------------------------------- /src/assets/alums/Rajesh_Kumar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Rajesh_Kumar.jpg -------------------------------------------------------------------------------- /src/assets/alums/Sudeep_Ghosh.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Sudeep_Ghosh.jpg -------------------------------------------------------------------------------- /src/assets/alums/Vikas_Gupta.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/Vikas_Gupta.jpg -------------------------------------------------------------------------------- /src/assets/alums/linkedin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/linkedin.png -------------------------------------------------------------------------------- /src/assets/alums/prabhat_tripathi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/prabhat_tripathi.jpg -------------------------------------------------------------------------------- /src/assets/alums/vivek_lakwal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/alums/vivek_lakwal.png -------------------------------------------------------------------------------- /src/assets/branches.json: -------------------------------------------------------------------------------- 1 | [ 2 | {"id": 1, "name": "Aerospace Engineering"}, 3 | {"id": 2, "name": "Agricultural & Food Engineering"}, 4 | {"id": 3, "name": "Biological Sciences and Bioengineering"}, 5 | {"id": 4, "name": "Biotechnology"}, 6 | {"id": 5, "name": "Biochemical Engineering"}, 7 | {"id": 6, "name": "Biomedical Engineering"}, 8 | {"id": 7, "name": "Ceramic Engineering"}, 9 | {"id": 8, "name": "Chemical Engineering"}, 10 | {"id": 9, "name": "Civil Engineering"}, 11 | {"id": 10, "name": "Computer Science & Engineering"}, 12 | {"id": 11, "name": "Electrical Engineering"}, 13 | {"id": 12, "name": "Electronics & Communication Engineering"}, 14 | {"id": 13, "name": "Electronics & Electrical Communication Engineering"}, 15 | {"id": 14, "name": "Electronics Engineering"}, 16 | {"id": 15, "name": "Energy Engineering"}, 17 | {"id": 16, "name": "Engineering Physics"}, 18 | {"id": 17, "name": "Industrial Engineering"}, 19 | {"id": 18, "name": "Production and Industrial Engineering"}, 20 | {"id": 19, "name": "Instrumentation Engineering"}, 21 | {"id": 20, "name": "Applied Geology"}, 22 | {"id": 21, "name": "Chemistry"}, 23 | {"id": 22, "name": "Exploration Geophysics"}, 24 | {"id": 23, "name": "Industrial Chemistry"}, 25 | {"id": 24, "name": "Materials Science and Technology"}, 26 | {"id": 25, "name": "Mathematics & Scientific Computing"}, 27 | {"id": 26, "name": "Mathematics and Computing"}, 28 | {"id": 27, "name": "Mechanical Engineering"}, 29 | {"id": 28, "name": "Metallurgical Engineering"}, 30 | {"id": 29, "name": "Mining Engineering"}, 31 | {"id": 30, "name": "Pharmaceutical Engineering and Technology"}, 32 | {"id": 31, "name": "Physics"}, 33 | {"id": 32, "name": "Textile Engineering"}, 34 | {"id": 33, "name": "Geological Technology"}, 35 | {"id": 34, "name": "Information Technology"}, 36 | {"id": 35, "name": "Statistics"} 37 | ] 38 | -------------------------------------------------------------------------------- /src/assets/ca/perks.svg: -------------------------------------------------------------------------------- 1 | ca-perks -------------------------------------------------------------------------------- /src/assets/cf-chartreuse-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | cf-new-chartreuse-chartreuse 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/codefest-star-logo-black.svg: -------------------------------------------------------------------------------- 1 | codefest-star-logo-black -------------------------------------------------------------------------------- /src/assets/codefest-star-logo-chartreuse.svg: -------------------------------------------------------------------------------- 1 | codefest-star-logo-chartreuse -------------------------------------------------------------------------------- /src/assets/codefest-star-logo-white.svg: -------------------------------------------------------------------------------- 1 | codefest-star-logo-white -------------------------------------------------------------------------------- /src/assets/codestart/codestart-S.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/codestart/codestart-S.png -------------------------------------------------------------------------------- /src/assets/codestart/codestart-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/codestart/codestart-light.png -------------------------------------------------------------------------------- /src/assets/codestart/codestart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/codestart/codestart.png -------------------------------------------------------------------------------- /src/assets/events/appathon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/events/appathon.png -------------------------------------------------------------------------------- /src/assets/events/ctf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/events/ctf.png -------------------------------------------------------------------------------- /src/assets/events/decipher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/events/decipher.png -------------------------------------------------------------------------------- /src/assets/events/enigma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/events/enigma.png -------------------------------------------------------------------------------- /src/assets/events/linguipedia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/events/linguipedia.png -------------------------------------------------------------------------------- /src/assets/events/manthan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/events/manthan.png -------------------------------------------------------------------------------- /src/assets/events/mathamania.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/events/mathamania.png -------------------------------------------------------------------------------- /src/assets/events/perplexed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/events/perplexed.png -------------------------------------------------------------------------------- /src/assets/events/vista.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/events/vista.png -------------------------------------------------------------------------------- /src/assets/favicons/favicon120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/favicons/favicon120.png -------------------------------------------------------------------------------- /src/assets/favicons/favicon144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/favicons/favicon144.png -------------------------------------------------------------------------------- /src/assets/favicons/favicon167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/favicons/favicon167.png -------------------------------------------------------------------------------- /src/assets/favicons/favicon192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/favicons/favicon192.png -------------------------------------------------------------------------------- /src/assets/favicons/favicon32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/favicons/favicon32.png -------------------------------------------------------------------------------- /src/assets/favicons/favicon512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/favicons/favicon512.png -------------------------------------------------------------------------------- /src/assets/favicons/favicon57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/favicons/favicon57.png -------------------------------------------------------------------------------- /src/assets/favicons/favicon76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/favicons/favicon76.png -------------------------------------------------------------------------------- /src/assets/favicons/favicon96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/favicons/favicon96.png -------------------------------------------------------------------------------- /src/assets/fonts/Aldo the Apache.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/fonts/Aldo the Apache.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/Roboto Mono.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/fonts/Roboto Mono.woff -------------------------------------------------------------------------------- /src/assets/fonts/harry.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/fonts/harry.woff -------------------------------------------------------------------------------- /src/assets/haxplore/logo-landing-black.svg: -------------------------------------------------------------------------------- 1 | logo-green -------------------------------------------------------------------------------- /src/assets/haxplore/logo-landing.svg: -------------------------------------------------------------------------------- 1 | hx-logo-white -------------------------------------------------------------------------------- /src/assets/haxplore/prize-consolation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/haxplore/prize-consolation.png -------------------------------------------------------------------------------- /src/assets/haxplore/prize-first.svg: -------------------------------------------------------------------------------- 1 | golden-trophy -------------------------------------------------------------------------------- /src/assets/haxplore/prize-girls.svg: -------------------------------------------------------------------------------- 1 | girl-medal -------------------------------------------------------------------------------- /src/assets/haxplore/prize-iitbhu.svg: -------------------------------------------------------------------------------- 1 | IITBHU-medalIITBHUIITBHU -------------------------------------------------------------------------------- /src/assets/haxplore/prize-second.svg: -------------------------------------------------------------------------------- 1 | silver-trophy -------------------------------------------------------------------------------- /src/assets/haxplore/prize-third.svg: -------------------------------------------------------------------------------- 1 | bronze-trophy -------------------------------------------------------------------------------- /src/assets/hero/background-dark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/hero/background-dark.jpg -------------------------------------------------------------------------------- /src/assets/hero/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/hero/background.jpg -------------------------------------------------------------------------------- /src/assets/hero/logo-codefest20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/hero/logo-codefest20.png -------------------------------------------------------------------------------- /src/assets/hero/logo-dark-codefest20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/hero/logo-dark-codefest20.png -------------------------------------------------------------------------------- /src/assets/hero/logo-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/hero/logo-dark.png -------------------------------------------------------------------------------- /src/assets/hero/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/hero/logo.png -------------------------------------------------------------------------------- /src/assets/link.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/assets/logo-dcse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/logo-dcse.png -------------------------------------------------------------------------------- /src/assets/logo-iitbhu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/logo-iitbhu.png -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/logo.png -------------------------------------------------------------------------------- /src/assets/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 1, 3 | "version": "2020.3.0", 4 | "name": "CodeFest 2020", 5 | "short_name": "CF", 6 | "description": "Computer Science department fest organised at IIT (BHU), India.", 7 | "background_color": "#222222", 8 | "orientation": "portrait", 9 | "theme_color": "#E47718", 10 | "display": "standalone", 11 | "start_url": "/", 12 | "icons": [ 13 | { 14 | "src": "/assets/favicons/favicon32.png", 15 | "type": "image/png", 16 | "sizes": "32x32" 17 | }, 18 | { 19 | "src": "/assets/favicons/favicon57.png", 20 | "type": "image/png", 21 | "sizes": "57x57" 22 | }, 23 | { 24 | "src": "/assets/favicons/favicon76.png", 25 | "type": "image/png", 26 | "sizes": "76x76" 27 | }, 28 | { 29 | "src": "/assets/favicons/favicon96.png", 30 | "type": "image/png", 31 | "sizes": "96x96" 32 | }, 33 | { 34 | "src": "/assets/favicons/favicon120.png", 35 | "type": "image/png", 36 | "sizes": "120x120" 37 | }, 38 | { 39 | "src": "/assets/favicons/favicon144.png", 40 | "type": "image/png", 41 | "sizes": "144x144" 42 | }, 43 | { 44 | "src": "/assets/favicons/favicon167.png", 45 | "type": "image/png", 46 | "sizes": "167x167" 47 | }, 48 | { 49 | "src": "/assets/favicons/favicon192.png", 50 | "type": "image/png", 51 | "sizes": "192x192" 52 | }, 53 | { 54 | "src": "/assets/favicons/favicon512.png", 55 | "type": "image/png", 56 | "sizes": "512x512" 57 | } 58 | ] 59 | } 60 | -------------------------------------------------------------------------------- /src/assets/moon-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | moon-white -------------------------------------------------------------------------------- /src/assets/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | 4 | Sitemap: https://codefest.tech/assets/sitemap.xml 5 | -------------------------------------------------------------------------------- /src/assets/sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | https://codefest.tech 5 | weekly 6 | 7 | 8 | https://codefest.tech/haxplore 9 | weekly 10 | 11 | 12 | https://codefest.tech/login 13 | weekly 14 | 15 | 16 | https://codefest.tech/events-timeline 17 | weekly 18 | 19 | -------------------------------------------------------------------------------- /src/assets/social/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/social/facebook.png -------------------------------------------------------------------------------- /src/assets/social/github-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/social/github-dark.png -------------------------------------------------------------------------------- /src/assets/social/github-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/social/github-light.png -------------------------------------------------------------------------------- /src/assets/social/google.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/social/google.png -------------------------------------------------------------------------------- /src/assets/sun-white.svg: -------------------------------------------------------------------------------- 1 | sun-white -------------------------------------------------------------------------------- /src/assets/twitter_heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/assets/twitter_heart.png -------------------------------------------------------------------------------- /src/assets/workbox-v5.1.2.js: -------------------------------------------------------------------------------- 1 | !(function() { 2 | "use strict"; 3 | try { 4 | self["workbox:sw:5.1.2"] && _(); 5 | } catch (t) {} 6 | const t = { 7 | backgroundSync: "background-sync", 8 | broadcastUpdate: "broadcast-update", 9 | cacheableResponse: "cacheable-response", 10 | core: "core", 11 | expiration: "expiration", 12 | googleAnalytics: "offline-ga", 13 | navigationPreload: "navigation-preload", 14 | precaching: "precaching", 15 | rangeRequests: "range-requests", 16 | routing: "routing", 17 | strategies: "strategies", 18 | streams: "streams", 19 | }; 20 | self.workbox = new (class { 21 | constructor() { 22 | return ( 23 | (this.v = {}), 24 | (this.t = { 25 | debug: "localhost" === self.location.hostname, 26 | modulePathPrefix: null, 27 | modulePathCb: null, 28 | }), 29 | (this.s = this.t.debug ? "dev" : "prod"), 30 | (this.o = !1), 31 | new Proxy(this, { 32 | get(e, s) { 33 | if (e[s]) return e[s]; 34 | const o = t[s]; 35 | return o && e.loadModule(`workbox-${o}`), e[s]; 36 | }, 37 | }) 38 | ); 39 | } 40 | setConfig(t = {}) { 41 | if (this.o) 42 | throw new Error( 43 | "Config must be set before accessing workbox.* modules" 44 | ); 45 | Object.assign(this.t, t), (this.s = this.t.debug ? "dev" : "prod"); 46 | } 47 | loadModule(t) { 48 | const e = this.i(t); 49 | try { 50 | importScripts(e), (this.o = !0); 51 | } catch (s) { 52 | throw (console.error(`Unable to import module '${t}' from '${e}'.`), s); 53 | } 54 | } 55 | i(t) { 56 | if (this.t.modulePathCb) return this.t.modulePathCb(t, this.t.debug); 57 | let e = ["https://storage.googleapis.com/workbox-cdn/releases/5.1.2"]; 58 | const s = `${t}.${this.s}.js`, 59 | o = this.t.modulePathPrefix; 60 | return ( 61 | o && 62 | ((e = o.split("/")), 63 | "" === e[e.length - 1] && e.splice(e.length - 1, 1)), 64 | e.push(s), 65 | e.join("/") 66 | ); 67 | } 68 | })(); 69 | })(); 70 | -------------------------------------------------------------------------------- /src/components/Countdown.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 76 | 77 | 106 | -------------------------------------------------------------------------------- /src/components/EventDetails/DevfolioButton.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 35 | 36 | 43 | -------------------------------------------------------------------------------- /src/components/EventDetails/DiscordButton.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 26 | 27 | 54 | -------------------------------------------------------------------------------- /src/components/EventDetails/FooterN.vue: -------------------------------------------------------------------------------- 1 | 39 | 40 | 43 | 44 | 146 | -------------------------------------------------------------------------------- /src/components/EventDetails/GoogleFormButton.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 22 | 23 | 42 | -------------------------------------------------------------------------------- /src/components/EventDetails/Intro.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 52 | 53 | 72 | -------------------------------------------------------------------------------- /src/components/EventDetails/RegisterButton.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 35 | 54 | -------------------------------------------------------------------------------- /src/components/EventDetails/Section.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 37 | 38 | 43 | -------------------------------------------------------------------------------- /src/components/FAQ.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 41 | 42 | 53 | -------------------------------------------------------------------------------- /src/components/FloatingButton.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 35 | 36 | 82 | -------------------------------------------------------------------------------- /src/components/Footer.vue: -------------------------------------------------------------------------------- 1 | 40 | 41 | 44 | 45 | 137 | -------------------------------------------------------------------------------- /src/components/Leaderboard.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 41 | 70 | -------------------------------------------------------------------------------- /src/components/Lookback.vue: -------------------------------------------------------------------------------- 1 | 19 | 39 | 40 | 88 | -------------------------------------------------------------------------------- /src/components/Menu/Slide.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 31 | -------------------------------------------------------------------------------- /src/components/Menu/index.js: -------------------------------------------------------------------------------- 1 | import Slide from "./Slide.vue"; 2 | 3 | export default { 4 | Slide, 5 | }; 6 | -------------------------------------------------------------------------------- /src/components/QuesAns.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 82 | 83 | 128 | -------------------------------------------------------------------------------- /src/components/SectionSidebar.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 90 | 91 | 130 | -------------------------------------------------------------------------------- /src/components/SpecialEvent.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 49 | 50 | 155 | -------------------------------------------------------------------------------- /src/components/SponsorCard.vue: -------------------------------------------------------------------------------- 1 | 31 | 32 | 43 | 44 | 45 | 120 | 121 | -------------------------------------------------------------------------------- /src/components/StandardEventMobile.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 39 | 40 | 112 | -------------------------------------------------------------------------------- /src/components/Timeline.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 22 | 23 | 32 | -------------------------------------------------------------------------------- /src/components/ca/AboutCA.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 29 | 30 | 75 | -------------------------------------------------------------------------------- /src/components/ca/FaqCA.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 55 | 56 | 115 | -------------------------------------------------------------------------------- /src/components/ca/PointsTable.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 60 | 89 | -------------------------------------------------------------------------------- /src/components/codestart/About.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/components/codestart/DevfolioButton.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 35 | 36 | 43 | -------------------------------------------------------------------------------- /src/components/codestart/DiscordButton.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 26 | 27 | 54 | 55 | // #1a73e8 -------------------------------------------------------------------------------- /src/components/codestart/FooterN.vue: -------------------------------------------------------------------------------- 1 | 39 | 40 | 43 | 44 | 142 | -------------------------------------------------------------------------------- /src/components/codestart/Intro.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 52 | 53 | 72 | -------------------------------------------------------------------------------- /src/components/codestart/LoginButton.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 22 | 23 | 54 | 55 | // #1a73e8 -------------------------------------------------------------------------------- /src/components/codestart/Timeline.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 80 | 81 | 119 | -------------------------------------------------------------------------------- /src/components/dashboard/DashboardEvent.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 55 | 56 | 64 | -------------------------------------------------------------------------------- /src/components/haxplore/About.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/components/haxplore/DevfolioButton.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 35 | 36 | 43 | -------------------------------------------------------------------------------- /src/components/haxplore/DiscordButton.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 26 | 27 | 54 | -------------------------------------------------------------------------------- /src/components/haxplore/FooterN.vue: -------------------------------------------------------------------------------- 1 | 39 | 40 | 43 | 44 | 146 | -------------------------------------------------------------------------------- /src/components/haxplore/Intro.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 52 | 53 | 72 | -------------------------------------------------------------------------------- /src/components/haxplore/Timeline.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 80 | 81 | 119 | -------------------------------------------------------------------------------- /src/components/layouts/CardLayout.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 33 | 34 | 69 | -------------------------------------------------------------------------------- /src/components/layouts/GridLayout.vue: -------------------------------------------------------------------------------- 1 | 8 | 35 | 47 | -------------------------------------------------------------------------------- /src/components/layouts/ResponsiveTwoColumnLayout.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 37 | 38 | 62 | -------------------------------------------------------------------------------- /src/components/layouts/SectionLayout.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 33 | 34 | 95 | -------------------------------------------------------------------------------- /src/components/layouts/TabLayout.vue: -------------------------------------------------------------------------------- 1 | 32 | 33 | 77 | 78 | 146 | -------------------------------------------------------------------------------- /src/components/layouts/TextLayout.vue: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefest-iit-bhu/codefest-app/2f23f575e17c594875b688b8b3ae7339f69b5b93/src/components/layouts/TextLayout.vue -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CodeFest '24 | IIT (BHU) Varanasi 5 | 6 | 7 | 8 | 9 | 10 | 14 | 18 | 24 | 25 | 26 | 27 | 28 | 32 | 33 | 34 | 35 | 38 | 39 | 44 | 45 | 50 | 51 | 56 | 57 | 61 | 62 | 67 | 73 | 74 | 75 | 79 | 80 | 84 | 88 | 89 | 90 | 91 | 92 | 93 | 96 |
97 | 98 | 99 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import GAnalytics from "ganalytics"; 3 | import vueMq from "vue-mq"; 4 | import VueYoutube from "vue-youtube"; 5 | import scrollSpy, { Easing } from "vue2-scrollspy"; 6 | import firebase from "firebase/app"; 7 | import "firebase/auth"; 8 | import "firebase/analytics"; 9 | import Toasted from "vue-toasted"; 10 | import { VueReCaptcha } from "vue-recaptcha-v3"; 11 | import { VueSpinners } from "@saeris/vue-spinners"; 12 | 13 | import App from "./App"; 14 | import router from "./router"; 15 | import filters from "./plugins/filters"; 16 | import store from "./store"; 17 | import wb from "./registerServiceWorker"; 18 | 19 | import "./styles/index.styl"; 20 | 21 | Vue.config.productionTip = false; 22 | const render = (h) => h(App); 23 | 24 | Vue.use(Toasted, { 25 | position: "bottom-center", 26 | duration: 3000, 27 | iconPack: "fontawesome", 28 | action: { 29 | icon: "times", 30 | onClick: (e, toastObject) => toastObject.goAway(0), 31 | }, 32 | fitToScreen: true, 33 | singleton: true, 34 | }); 35 | 36 | Vue.toasted.register( 37 | "error_post", 38 | (payload) => { 39 | const msg = payload.message || "Something went wrong!"; 40 | return `Oops... ${msg}`; 41 | }, 42 | { icon: "exclamation-circle", type: "error", duration: 5000 } 43 | ); 44 | 45 | Vue.toasted.register( 46 | "success", 47 | (payload) => { 48 | const msg = payload.message || "Success!"; 49 | return `Yay! ${msg}`; 50 | }, 51 | { icon: "check", type: "success" } 52 | ); 53 | 54 | Vue.use(VueSpinners); 55 | 56 | Vue.use(vueMq, { 57 | breakpoints: { 58 | __: 320, 59 | xs: 575, 60 | sm: 767, 61 | md: 991, 62 | lg: 1367, 63 | xl: 1920, 64 | xxl: Infinity, 65 | }, 66 | }); 67 | 68 | Vue.use(scrollSpy, { 69 | easing: Easing.Cubic.In, 70 | }); 71 | 72 | Vue.use(VueYoutube); 73 | 74 | Vue.use(VueReCaptcha, { 75 | siteKey: "6LepxJ0UAAAAAMGBO1-1PxqQ_Y3TuJGt5DHp5cHk", 76 | loaderOptions: { 77 | useRecaptchaNet: true, 78 | }, 79 | }); 80 | 81 | Vue.use(filters); 82 | 83 | if (process.env.NODE_ENV === "production") { 84 | window.ga = new GAnalytics("UA-72222745-1"); 85 | 86 | router.afterEach((nxt) => { 87 | ga.send("pageview", { 88 | dp: nxt.path, 89 | }); 90 | }); 91 | } 92 | 93 | // Service Worker registration 94 | Vue.prototype.$workbox = wb; 95 | 96 | const firebaseConfig = { 97 | apiKey: "AIzaSyBfkhzmR8nf1vwTLj9upIVo3QoOTDte6zU", 98 | authDomain: "codefest-iit-bhu.firebaseapp.com", 99 | projectId: "codefest-iit-bhu", 100 | storageBucket: "codefest-iit-bhu.appspot.com", 101 | messagingSenderId: "934000349180", 102 | appId: "1:934000349180:web:abd404ec2aa2ee8b5f2c79", 103 | measurementId: "G-CMRT89PN1N" 104 | }; 105 | 106 | firebase.initializeApp(firebaseConfig); 107 | 108 | // Mount w/ Hydration 109 | // ~> because HTML already exists from`pwa export` 110 | // @see https://ssr.vuejs.org/guide/hydration.html 111 | const app = new Vue({ 112 | router, 113 | store, 114 | render, 115 | }).$mount("#app", true); 116 | -------------------------------------------------------------------------------- /src/js/api.js: -------------------------------------------------------------------------------- 1 | import Frisbee from "frisbee"; 2 | import { 3 | MakeQuerablePromise 4 | } from "@js/utils"; 5 | import { BACKEND_URL } from "@js/constants"; 6 | import store from "@store"; 7 | 8 | const api = new Frisbee({ 9 | baseURI: BACKEND_URL, 10 | headers: { 11 | Accept: "application/json", 12 | "Content-Type": "application/json" 13 | } 14 | }); 15 | 16 | const getApiOptions = function (options) { 17 | const token = store.getters.authToken; 18 | if (token) { 19 | options["headers"] = { 20 | ...options["headers"], 21 | Authorization: `Token ${token}` 22 | }; 23 | } 24 | // if (body) options["body"] = body; 25 | return options; 26 | }; 27 | 28 | const apiWrapper = function (promise) { 29 | return MakeQuerablePromise( 30 | new Promise((resolve, reject) => { 31 | promise 32 | .then(response => { 33 | if (response.status == STATUS.ERROR_UNAUTHENTICATED) 34 | store.dispatch("logout"); 35 | if (response.status == STATUS.SUCCESS) resolve(response); 36 | else reject(response); 37 | }) 38 | .catch(reject); 39 | }) 40 | ); 41 | }; 42 | 43 | export const STATUS = { 44 | NONE: "none", 45 | SUCCESS: "success", 46 | ERROR_BAD_REQUEST: "error.bad_request", 47 | ERROR_NOT_FOUND: "error.not_found", 48 | ERROR_UNAUTHENTICATED: "error.unauthenticated", 49 | ERROR_FORBIDDEN: "error.unauthorized", 50 | ERROR_UNKNOWN: "error.unknown" 51 | }; 52 | 53 | export class Response extends Object { 54 | constructor(data, status, message) { 55 | super(arguments); 56 | this.data = data; 57 | this.status = status; 58 | this.message = message; 59 | } 60 | 61 | static success(data) { 62 | return new Response(data, STATUS.SUCCESS, null); 63 | } 64 | 65 | static clientError(err) { 66 | return new Response(null, STATUS.ERROR_UNKNOWN, err.message); 67 | } 68 | 69 | static responseError({ 70 | status, 71 | body, 72 | err 73 | }) { 74 | const message = body.detail || body[Object.keys(body)[0]][0] || err.message; 75 | switch (status) { 76 | case 400: 77 | return new Response(body, STATUS.ERROR_BAD_REQUEST, message); 78 | case 401: 79 | return new Response(null, STATUS.ERROR_UNAUTHENTICATED, message); 80 | case 403: 81 | return new Response(null, STATUS.ERROR_FORBIDDEN, message); 82 | case 404: 83 | return new Response(null, STATUS.ERROR_NOT_FOUND, message); 84 | default: 85 | return new Response(body, STATUS.ERROR_UNKNOWN, message); 86 | } 87 | } 88 | 89 | static handleResponse(response) { 90 | if (response.status >= 400) return Response.responseError(response); 91 | else if (response.status >= 200) return Response.success(response.body); 92 | } 93 | } 94 | 95 | api.interceptor.register({ 96 | requestError: function (err) { 97 | return Response.clientError(err); 98 | }, 99 | response: function (response) { 100 | return Response.handleResponse(response); 101 | }, 102 | responseError: function (err) { 103 | return Response.clientError(err); 104 | } 105 | }); 106 | 107 | export default { 108 | fetch(url, options = {}) { 109 | return apiWrapper(api.get(url, getApiOptions(options))); 110 | }, 111 | post(url, options = {}) { 112 | return apiWrapper(api.post(url, getApiOptions(options))); 113 | }, 114 | put(url, options = {}) { 115 | return apiWrapper(api.put(url, getApiOptions(options))); 116 | }, 117 | delete(url, options = {}) { 118 | return apiWrapper(api.del(url, getApiOptions(options))); 119 | } 120 | }; -------------------------------------------------------------------------------- /src/js/constants.js: -------------------------------------------------------------------------------- 1 | let KEY_AUTH_TOKEN = "auth-token"; 2 | let SITE_URL = "https://codefest.iitbhu.tech"; 3 | let KEY_THEME = "theme"; 4 | let BACKEND_URL = "https://codefest.iitbhu.tech/api"; 5 | 6 | try{ 7 | const envSecrets = require("./env"); 8 | KEY_AUTH_TOKEN = envSecrets.KEY_AUTH_TOKEN || KEY_AUTH_TOKEN 9 | SITE_URL = envSecrets.SITE_URL || SITE_URL 10 | KEY_THEME = envSecrets.KEY_THEME || KEY_THEME 11 | BACKEND_URL = envSecrets.BACKEND_URL || BACKEND_URL 12 | } 13 | catch(e){} 14 | 15 | export {KEY_AUTH_TOKEN, SITE_URL, KEY_THEME, BACKEND_URL}; 16 | -------------------------------------------------------------------------------- /src/js/exceptions.js: -------------------------------------------------------------------------------- 1 | export class CommandBaseError extends Error { 2 | constructor(...args) { 3 | super(...args); 4 | Error.captureStackTrace(this, CommandBaseError); 5 | this.code = -1; 6 | } 7 | } 8 | 9 | export class CommandInvalidInput extends CommandBaseError { 10 | constructor(code, msg, ...args) { 11 | super(...args); 12 | this.code = code; 13 | this.message = msg; 14 | } 15 | } 16 | 17 | export class CommandInvalidEnvironment extends CommandBaseError { 18 | constructor(...args) { 19 | super(...args); 20 | this.code = 111; 21 | this.message = "Weirdly, the command is run in a wrong environment."; 22 | } 23 | } 24 | 25 | export class CommandNotFoundError extends CommandBaseError { 26 | constructor(...args) { 27 | super(...args); 28 | this.message = "Command not found."; 29 | this.code = 127; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/pages/404.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 24 | 25 | 62 | -------------------------------------------------------------------------------- /src/pages/CampusAmbassador.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 51 | 52 | 77 | -------------------------------------------------------------------------------- /src/pages/Dashboard.vue: -------------------------------------------------------------------------------- 1 | 31 | 32 | 73 | 74 | 106 | -------------------------------------------------------------------------------- /src/pages/EventDetails.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 55 | 56 | 92 | -------------------------------------------------------------------------------- /src/pages/EventList.vue: -------------------------------------------------------------------------------- 1 | 34 | 35 | 87 | 88 | 127 | -------------------------------------------------------------------------------- /src/pages/EventRegistration.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 38 | 39 | 74 | -------------------------------------------------------------------------------- /src/pages/Referral.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 49 | 50 | 73 | -------------------------------------------------------------------------------- /src/plugins/filters.js: -------------------------------------------------------------------------------- 1 | import anchorme from "anchorme"; 2 | 3 | export default { 4 | install(Vue) { 5 | Vue.filter("anchor", value => { 6 | return anchorme(value); 7 | }); 8 | } 9 | }; 10 | export const version = "1.0.0"; 11 | -------------------------------------------------------------------------------- /src/registerServiceWorker.js: -------------------------------------------------------------------------------- 1 | let wb; 2 | 3 | if ("serviceWorker" in navigator) { 4 | const initWorkbox = async () => { 5 | const { Workbox } = await import("workbox-window"); 6 | wb = new Workbox(`/sw.js`); 7 | 8 | wb.addEventListener("controlling", () => { 9 | window.location.reload(); 10 | }); 11 | 12 | wb.register(); 13 | }; 14 | initWorkbox(); 15 | } else { 16 | wb = null; 17 | } 18 | 19 | export default wb; 20 | -------------------------------------------------------------------------------- /src/store/auth.js: -------------------------------------------------------------------------------- 1 | import { KEY_AUTH_TOKEN } from "@js/constants"; 2 | import API, { Response, STATUS } from "@js/api"; 3 | 4 | import firebase from "firebase/app"; 5 | 6 | function getTokenFromStorage() { 7 | return localStorage.getItem(KEY_AUTH_TOKEN); 8 | } 9 | 10 | function putTokenToStorage(token) { 11 | if (!token) localStorage.removeItem(KEY_AUTH_TOKEN); 12 | else localStorage.setItem(KEY_AUTH_TOKEN, token); 13 | } 14 | 15 | function saveCampusAmbassadorStatus(status) { 16 | localStorage.setItem("is_campus_ambassador", status); 17 | } 18 | 19 | function getCampusAmbassadorStatus() { 20 | console.log(localStorage.getItem("is_campus_ambassador")) 21 | if(localStorage.getItem("is_campus_ambassador")) return localStorage.getItem("is_campus_ambassador"); 22 | return false; 23 | } 24 | 25 | export default { 26 | state: { 27 | token: getTokenFromStorage() || "", 28 | userId: -1, 29 | isCampusAmbassador: getCampusAmbassadorStatus(), 30 | }, 31 | getters: { 32 | isLoggedIn: (state) => { 33 | return !!state.token; 34 | }, 35 | authToken: (state) => state.token, 36 | isCampusAmbassador: (state) => { 37 | if(typeof(state.isCampusAmbassador)=="string"){ 38 | return state.isCampusAmbassador=="true" 39 | } 40 | return state.isCampusAmbassador 41 | }, 42 | }, 43 | mutations: { 44 | AUTH_SUCCESS(state, data) { 45 | const { token, user_id, is_campus_ambassador } = data; 46 | state.token = token; 47 | state.userId = user_id; 48 | state.isCampusAmbassador = is_campus_ambassador; 49 | saveCampusAmbassadorStatus(is_campus_ambassador); 50 | putTokenToStorage(token); 51 | }, 52 | AUTH_LOGOUT(state) { 53 | state.token = ""; 54 | putTokenToStorage(null); 55 | }, 56 | CA_STATUS_UPDATE(state, is_campus_ambassador) { 57 | state.isCampusAmbassador = is_campus_ambassador 58 | saveCampusAmbassadorStatus(is_campus_ambassador) 59 | } 60 | }, 61 | actions: { 62 | login({ state, commit }, { idToken }) { 63 | const body = { 64 | id_token: idToken, 65 | }; 66 | return API.post("login/", { body }).then((response) => { 67 | commit("AUTH_SUCCESS", response.data); 68 | return response; 69 | }); 70 | }, 71 | register( 72 | { state, commit }, 73 | { idToken, name, referralCode, recaptchaToken } 74 | ) { 75 | const names = (name || "Anonymous").split(/\s+/); 76 | const body = { 77 | id_token: idToken, 78 | first_name: names[0], 79 | last_name: names.length > 0 ? names[1] : "", 80 | applied_referral_code: referralCode, 81 | g_recaptcha_response: recaptchaToken, 82 | }; 83 | return API.post("register/", { body }).then((response) => { 84 | commit("AUTH_SUCCESS", response.data); 85 | return response; 86 | }); 87 | }, 88 | logout({ state, commit }) { 89 | firebase.auth().signOut(); 90 | commit("AUTH_LOGOUT"); 91 | }, 92 | update_ca_status( 93 | {state, commit}, 94 | {new_status} 95 | ) { 96 | commit("CA_STATUS_UPDATE", new_status) 97 | } 98 | }, 99 | }; 100 | -------------------------------------------------------------------------------- /src/store/dashboard.js: -------------------------------------------------------------------------------- 1 | import API from "@js/api"; 2 | import events from "@store/events"; 3 | 4 | export default { 5 | actions: { 6 | getProfileEvents({ state }) { 7 | const { events: eventsData } = events; 8 | return API.fetch("events/").then(({ data }) => { 9 | return data.map(event => { 10 | const extraData = eventsData.find(e => e.name === event.slug); 11 | return { ...event, ...extraData }; 12 | }).filter((event) => !!event.title); 13 | // NOTE: The above filter skips the events present in backend but not 14 | // in events.js. 15 | }); 16 | }, 17 | createEventTeam({ state }, { eventId, teamName }) { 18 | const body = { 19 | event: eventId, 20 | team_name: teamName 21 | }; 22 | return API.post("teams/create/", { body }); 23 | }, 24 | joinEventTeam({ state }, { eventId, accessCode }) { 25 | const body = { 26 | access_code: accessCode 27 | }; 28 | return API.post("teams/join/", { body }); 29 | }, 30 | removeMemberFromTeam({ state }, { teamId, memberId }) { 31 | const body = { 32 | member: memberId 33 | }; 34 | return API.post(`teams/${teamId}/remove/`, { body }); 35 | }, 36 | leaveTeam({ state }, { teamId }) { 37 | return API.delete(`teams/${teamId}/`); 38 | } 39 | } 40 | }; 41 | -------------------------------------------------------------------------------- /src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import Vuex from "vuex"; 3 | 4 | import auth from "./auth"; 5 | import dashboard from "./dashboard"; 6 | import theme from "./theme"; 7 | 8 | Vue.use(Vuex); 9 | 10 | export default new Vuex.Store({ 11 | modules: { 12 | auth, 13 | dashboard, 14 | theme 15 | } 16 | }); 17 | -------------------------------------------------------------------------------- /src/store/navigation.js: -------------------------------------------------------------------------------- 1 | export const navigation = { 2 | hierarchy: { 3 | "~": { 4 | ".": "/", 5 | events: { 6 | ".": "/events-timeline", 7 | enigma: { 8 | ".": "/events-timeline/enigma" 9 | }, 10 | vista: { 11 | ".": "/events-timeline/vista" 12 | }, 13 | manthan: { 14 | ".": "/events-timeline/manthan" 15 | }, 16 | linguipedia: { 17 | ".": "/events-timeline/linguipedia" 18 | }, 19 | ctf: { 20 | ".": "/events-timeline/ctf" 21 | }, 22 | }, 23 | haxplore: { 24 | ".": "/haxplore" 25 | }, 26 | dashboard: { 27 | ".": "/dashboard" 28 | }, 29 | referrals: { 30 | ".": "/referral" 31 | }, 32 | codestart: { 33 | ".": "/codestart" 34 | }, 35 | }, 36 | "404": { 37 | "~": { 38 | ".": "/" 39 | } 40 | } 41 | }, 42 | getPwdFromCurrent: function(current) { 43 | if (!current) return []; 44 | const rawPath = current.split("/"); 45 | rawPath[0] = "~"; 46 | return rawPath.filter(el => !!el); 47 | }, 48 | getLinksFromPwd: function(pwd) { 49 | var current = null; 50 | var result = []; 51 | pwd.forEach(dir => { 52 | if (current) current = current[dir]; 53 | else current = this.hierarchy[dir]; 54 | result.push(current["."] || "/"); 55 | }); 56 | return result; 57 | }, 58 | getCurrentNav: function(pwd) { 59 | var current = null; 60 | var parent = null; 61 | pwd.forEach(dir => { 62 | parent = current; 63 | if (current) current = current[dir]; 64 | else current = this.hierarchy[dir]; 65 | }); 66 | if (!!current) current[".."] = parent; 67 | return current; 68 | }, 69 | listContents: function(pwd) { 70 | var possibleNav = this.getCurrentNav(pwd); 71 | var result = {}; 72 | for (let key in possibleNav) { 73 | if (possibleNav[key]) 74 | result[key] = possibleNav[key]["."] || possibleNav["."]; 75 | else result[key] = null; 76 | } 77 | return result; 78 | }, 79 | getTargetPageUrl: function(pwd, targetDir) { 80 | if (["~", "/"].includes(targetDir)) return "/"; 81 | if ([".", "./"].includes(targetDir)) 82 | return this.getLinksFromPwd(pwd).splice(-1)[0]; 83 | let backNav = targetDir.match(/^(\.\.)(\/\.\.)*/g); 84 | if (backNav) { 85 | pwd = pwd.slice(0, -backNav[0].split("/").length); 86 | targetDir = targetDir.slice(backNav[0].length); 87 | } 88 | 89 | if ( 90 | targetDir && 91 | targetDir[0] !== "/" && 92 | !([".", "~"].includes(targetDir[0]) && targetDir[1] === "/") 93 | ) { 94 | targetDir = `./${targetDir}`; 95 | } 96 | 97 | let currentDir = null; 98 | if (pwd && pwd.length > 0) { 99 | let hierarchy = this.getCurrentNav(pwd); 100 | let route = this.getPwdFromCurrent(targetDir); 101 | if (route.length === 0) { 102 | return hierarchy["."]; 103 | } 104 | route.forEach(dir => { 105 | if (currentDir) currentDir = currentDir[dir]; 106 | else currentDir = hierarchy[dir]; 107 | }); 108 | } 109 | if (currentDir) return currentDir["."]; 110 | } 111 | }; 112 | 113 | export const terminal = { 114 | history: [], 115 | getHistory: function() { 116 | return this.history; 117 | }, 118 | addToHistory: function(pwd, status, input, output) { 119 | this.history.push({ pwd, status, input, output }); 120 | }, 121 | clearHistory: function() { 122 | this.history.splice(0, this.history.length); 123 | } 124 | }; 125 | -------------------------------------------------------------------------------- /src/store/theme.js: -------------------------------------------------------------------------------- 1 | import { KEY_THEME } from "@js/constants"; 2 | 3 | function loadThemePreference() { 4 | return localStorage.getItem(KEY_THEME); 5 | } 6 | 7 | function saveThemePreference(theme) { 8 | localStorage.setItem(KEY_THEME, theme); 9 | } 10 | 11 | function getThemeAccordingToCurrentTime() { 12 | const today = new Date(); 13 | const currentHour = today.getHours(); 14 | return (currentHour <= 19 && currentHour >= 5) ? "light" : "dark"; 15 | } 16 | 17 | export default { 18 | state: { 19 | theme: loadThemePreference() || getThemeAccordingToCurrentTime(), 20 | inTransition: false 21 | }, 22 | getters: { 23 | currentTheme: state => { 24 | return state.theme; 25 | }, 26 | inTransition: state => { 27 | return state.inTransition; 28 | } 29 | }, 30 | mutations: { 31 | TOGGLE_THEME(state) { 32 | state.theme = state.theme === "dark" ? "light" : "dark"; 33 | saveThemePreference(state.theme); 34 | } 35 | }, 36 | actions: { 37 | toggle_theme({ state, commit }) { 38 | commit("TOGGLE_THEME"); 39 | state.inTransition = true; 40 | setTimeout(() => { 41 | state.inTransition = false; 42 | }, 400); 43 | } 44 | } 45 | }; 46 | -------------------------------------------------------------------------------- /src/styles/anims.styl: -------------------------------------------------------------------------------- 1 | @keyframes blink { 2 | from { 3 | opacity 0 4 | } 5 | to { 6 | opacity 1 7 | } 8 | } 9 | 10 | @keyframes typing { 11 | from { width: 0 } 12 | to { width: 100% } 13 | } 14 | 15 | @keyframes blink-caret { 16 | from, to { border-color: transparent } 17 | 50% { border-color: orange; } 18 | } 19 | 20 | @keyframes neon-text { 21 | from { 22 | text-shadow: 0 0 2.5px $white, 0 0 5px $white, 0 0 7.5px $white, 0 0 10px $white, 0 0 12.5px $white, 0 0 15px $marauder-brown, 0 0 25px $marauder-brown; 23 | } 24 | 25 | to { 26 | text-shadow: 0 0 1px $white, 0 0 2px $white, 0 0 3px $white, 0 0 4px $white, 0 0 5px $white, 0 0 6px $marauder-brown, 0 0 10px $marauder-brown; 27 | } 28 | } 29 | 30 | @keyframes neon-text-white { 31 | from { 32 | text-shadow: 0 0 2.5px $midnight-green, 0 0 5px $midnight-green, 0 0 7.5px $white, 0 0 10px $white, 0 0 12.5px $white, 0 0 15px $white, 0 0 25px $white; 33 | } 34 | 35 | to { 36 | text-shadow: 0 0 1px $midnight-green, 0 0 2px $midnight-green, 0 0 3px $white, 0 0 4px $white, 0 0 5px $white, 0 0 6px $white, 0 0 10px $white; 37 | } 38 | } 39 | 40 | @keyframes neon-box { 41 | from { 42 | box-shadow: 0 0 15px $white, 0 0 17.5px $white, 0 0 10px $orange, 0 0 52.5px $orange, 0 0 55px $darkorange, 0 0 70px $darkorange, 0 0 90px $darkorange; 43 | } 44 | 45 | to { 46 | box-shadow: 0 0 1px $white, 0 0 2px $white, 0 0 3px $white, 0 0 6px $white, 0 0 8px $orange, 0 0 12px $orange, 0 0 20px $darkorange, 0 0 30px $darkorange, 0 0 55px $darkorange, 0 0 70px $darkorange; 47 | } 48 | } 49 | 50 | @keyframes timeline-border-green { 51 | from { 52 | box-shadow: 0 0 0 2px alpha($vermilion, 0.5) 53 | } 54 | 55 | to { 56 | box-shadow: 0 0 0 5px alpha($vermilion, 0.5) 57 | } 58 | } 59 | 60 | @keyframes timeline-border-white { 61 | from { 62 | box-shadow: 0 0 0 2px alpha($white, 0.5) 63 | } 64 | 65 | to { 66 | box-shadow: 0 0 0 5px alpha($white, 0.5) 67 | } 68 | } 69 | 70 | @keyframes timeline-border-full { 71 | from { 72 | box-shadow: 0 0 0 10px alpha($vermilion, 0.7) 73 | } 74 | 75 | to { 76 | box-shadow: 0 0 0 20px alpha($vermilion, 0.7) 77 | } 78 | } 79 | 80 | @keyframes svg-transform { 81 | from,{ 82 | fill: $vermilion; 83 | stroke-width: 1px; 84 | stroke: $vermilion; 85 | } 86 | 87 | to{ 88 | fill: transparent; 89 | stroke: $vermilion; 90 | stroke-width: 5px; 91 | } 92 | } 93 | 94 | @keyframes svg-transform-hero { 95 | from,{ 96 | fill: var(--hero-text-color); 97 | stroke-width: 1px; 98 | stroke: var(--hero-text-color); 99 | } 100 | 101 | to{ 102 | fill: transparent; 103 | stroke: var(--hero-text-color); 104 | stroke-width: 5px; 105 | } 106 | } 107 | 108 | 109 | 110 | @keyframes ContentFadeIn { 111 | 0% { 112 | transform: translateY(-1rem); 113 | opacity: 0; 114 | } 115 | 116 | 100% { 117 | transform: translateY(0); 118 | opacity: 1; 119 | } 120 | } 121 | 122 | @keyframes ImageFadeIn { 123 | 0% { 124 | transform: translate(-0.5rem, -0.5rem) scale(1.05); 125 | opacity: 0; 126 | filter: blur(2px); 127 | } 128 | 129 | 50% { 130 | opacity: 1; 131 | filter: blur(2px); 132 | } 133 | 134 | 100% { 135 | transform: translateY(0) scale(1); 136 | opacity: 1; 137 | filter: blur(0); 138 | } 139 | } -------------------------------------------------------------------------------- /src/styles/mixins.styl: -------------------------------------------------------------------------------- 1 | @require "~@styles/theme/theme.styl"; 2 | 3 | stick(position = 'top') { 4 | position: fixed; 5 | {position}: 0; 6 | } 7 | 8 | stickWithSpace(top = false , right = false, bottom = false, left = false) { 9 | position fixed 10 | if top { 11 | top: top 12 | } 13 | if right { 14 | right: right 15 | } 16 | if bottom { 17 | bottom: bottom 18 | } 19 | if left { 20 | left: left 21 | } 22 | } 23 | 24 | moveAnimation(side = 'bottom', startDistance = 0, targetDistance = 0) { 25 | {side}: startDistance 26 | transition: all 350ms; 27 | 28 | &.shown { 29 | {side}: targetDistance 30 | } 31 | } 32 | 33 | $font-size(value) { 34 | font-size: unit((value / $base-font), 'rem') 35 | } 36 | -------------------------------------------------------------------------------- /src/styles/theme/colors.styl: -------------------------------------------------------------------------------- 1 | $black = #000000 2 | $deep-fir = #1B3300 3 | $verdun-green = #396E00 4 | $limeade = #57A300 5 | $chartreuse = #86FF00 6 | $dodger-blue = #19A5FF 7 | $outer-space = #263238 8 | $mine-shaft = #222222 9 | $cod-gray = #111111 10 | $white = #FFFFFF 11 | $transparent = #00000000 12 | $mystic = #ecf0f3 13 | $botticelli = #d1d9e6 14 | $crown-of-thorns = #6F2232 15 | $waterloo = #7C8299 16 | $abbey = #292929 17 | $vermilion = #E47718 18 | $midnight-green = #004953 19 | $orange = #FFA500 20 | $darkorange = #FF8C00 21 | $marauder-brown = #654321 22 | -------------------------------------------------------------------------------- /src/styles/theme/index.styl: -------------------------------------------------------------------------------- 1 | @require './colors'; 2 | @require './theme'; 3 | -------------------------------------------------------------------------------- /src/styles/theme/theme.styl: -------------------------------------------------------------------------------- 1 | $base-font = 16px 2 | -------------------------------------------------------------------------------- /src/sw.js: -------------------------------------------------------------------------------- 1 | importScripts("/assets/workbox-v5.1.2.js"); 2 | 3 | if (workbox) { 4 | workbox.precaching.precacheAndRoute(self.__WB_MANIFEST); 5 | } else { 6 | console.warn("Boo! Workbox did not load!"); 7 | } 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | // this aligns with Vue browser support 4 | "target": "es5", 5 | // this enables stricter inference for data properties on `this` 6 | "strict": true, 7 | // if using webpack 2+ or rollup, to leverage tree shaking: 8 | "module": "es2015", 9 | "moduleResolution": "node", 10 | "allowJs": true, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | productionSourceMap: false, 3 | devServer: { 4 | host: "0.0.0.0", 5 | }, 6 | }; 7 | --------------------------------------------------------------------------------