├── .babelrc
├── .browserslistrc
├── .editorconfig
├── .eslintrc.js
├── .github
└── workflows
│ ├── ci.yml
│ └── dependabot-automerge.yml
├── .gitignore
├── .idea
├── vcs.xml
└── workspace.xml
├── .npmrc
├── .nvmrc
├── .prettierignore
├── .vscode
├── extensions.json
└── settings.json
├── LICENSE
├── README.md
├── TODO.md
├── config
├── webpack.dev.js
└── webpack.prod.js
├── lighthouserc.yaml
├── netlify.toml
├── package-lock.json
├── package.json
├── postcss.config.js
├── prettier.config.js
├── src
├── assets
│ ├── favicon.svg
│ ├── favicon
│ │ ├── android-chrome-192x192.png
│ │ ├── android-chrome-512x512.png
│ │ ├── apple-touch-icon.png
│ │ ├── browserconfig.xml
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ ├── favicon.ico
│ │ ├── maskable_icon.png
│ │ ├── mstile-144x144.png
│ │ ├── mstile-150x150.png
│ │ ├── mstile-310x150.png
│ │ ├── mstile-310x310.png
│ │ ├── mstile-70x70.png
│ │ └── safari-pinned-tab.svg
│ ├── images
│ │ ├── biene_trencadis.svg
│ │ ├── borders
│ │ │ ├── basic.svg
│ │ │ └── crown.svg
│ │ ├── hackersatupc-logo-black.svg
│ │ ├── hackersatupc-logo-white.svg
│ │ ├── hackupc-logo-black.svg
│ │ ├── hackupc-logo-white.svg
│ │ ├── hackupc-name-trencadis.svg
│ │ ├── icons
│ │ │ ├── camera.svg
│ │ │ ├── duck.svg
│ │ │ ├── eye.svg
│ │ │ ├── icon-cafeteria.svg
│ │ │ ├── icon-cup-stacking.svg
│ │ │ ├── icon-dodge.svg
│ │ │ ├── icon-draw.svg
│ │ │ ├── icon-duck.svg
│ │ │ ├── icon-email-alt-2.svg
│ │ │ ├── icon-email-alt.svg
│ │ │ ├── icon-email-circle.svg
│ │ │ ├── icon-email.svg
│ │ │ ├── icon-facebook-circle.svg
│ │ │ ├── icon-facebook.svg
│ │ │ ├── icon-github-circle.svg
│ │ │ ├── icon-github.svg
│ │ │ ├── icon-info.svg
│ │ │ ├── icon-instagram-circle.svg
│ │ │ ├── icon-instagram.svg
│ │ │ ├── icon-lego.svg
│ │ │ ├── icon-linkedin-circle.svg
│ │ │ ├── icon-linkedin.svg
│ │ │ ├── icon-medium-alt.svg
│ │ │ ├── icon-medium-circle-2.svg
│ │ │ ├── icon-medium-circle.svg
│ │ │ ├── icon-medium.svg
│ │ │ ├── icon-nerf.svg
│ │ │ ├── icon-rubik.svg
│ │ │ ├── icon-slideshare.svg
│ │ │ ├── icon-sticker.svg
│ │ │ ├── icon-talk.svg
│ │ │ ├── icon-twitch-circle.svg
│ │ │ ├── icon-twitter-circle.svg
│ │ │ ├── icon-twitter.svg
│ │ │ ├── icon-youtube-circle.svg
│ │ │ ├── icon-youtube.svg
│ │ │ └── icon-zumba.svg
│ │ ├── star-window.svg
│ │ └── trencadis
│ │ │ ├── beige.svg
│ │ │ ├── black.svg
│ │ │ ├── blue.svg
│ │ │ ├── brown.svg
│ │ │ ├── cyan.svg
│ │ │ ├── green.svg
│ │ │ ├── light.svg
│ │ │ ├── lime.svg
│ │ │ ├── orange.svg
│ │ │ ├── very-light.svg
│ │ │ └── white.svg
│ ├── logos
│ │ ├── ajuntament_de_barcelona.svg
│ │ ├── artiach.png
│ │ ├── aws.svg
│ │ ├── aws_alt.svg
│ │ ├── aws_educate.png
│ │ ├── birba.png
│ │ ├── bloomberg.svg
│ │ ├── bsc.png
│ │ ├── bunge.png
│ │ ├── capchase.svg
│ │ ├── cfis.png
│ │ ├── cfis.svg
│ │ ├── cfis_alt.svg
│ │ ├── cfis_alt_2.svg
│ │ ├── coca-cola.svg
│ │ ├── coeinf-small-2x.png
│ │ ├── coeinf-small.png
│ │ ├── coeinf.png
│ │ ├── conguitos.png
│ │ ├── conguitos_4K.png
│ │ ├── cuetara.png
│ │ ├── digital_ocean.svg
│ │ ├── dominos.png
│ │ ├── dominos_2023.jpg
│ │ ├── ecooltra.svg
│ │ ├── everis.png
│ │ ├── ey.svg
│ │ ├── facebook.svg
│ │ ├── fib.svg
│ │ ├── floorfy.svg
│ │ ├── frit_ravich.png
│ │ ├── gallina_blanca.jpg
│ │ ├── gallina_blanca.png
│ │ ├── gallina_blanca.svg
│ │ ├── gallina_blanca_alt.svg
│ │ ├── github.svg
│ │ ├── google.svg
│ │ ├── hackupc_unrevealed.svg
│ │ ├── happyscribe.svg
│ │ ├── haribo.png
│ │ ├── haribo_4K.png
│ │ ├── haribo_alt_4K.png
│ │ ├── haribo_letters.png
│ │ ├── haribo_letters.svg
│ │ ├── haribo_letters_4K.png
│ │ ├── haufe.png
│ │ ├── haufe.svg
│ │ ├── haufe_alt.svg
│ │ ├── hp.svg
│ │ ├── hp_alt.svg
│ │ ├── hp_black.svg
│ │ ├── huawei.png
│ │ ├── illy.svg
│ │ ├── infojobs.svg
│ │ ├── itequia.png
│ │ ├── ithinkupc.svg
│ │ ├── ithinkupc_white.svg
│ │ ├── jetbrains.svg
│ │ ├── leo_boeck.png
│ │ ├── mckinsey_company.svg
│ │ ├── mckinsey_company_alt.svg
│ │ ├── microsoft.svg
│ │ ├── midokura.png
│ │ ├── midokura.svg
│ │ ├── mlh.svg
│ │ ├── moncafe.png
│ │ ├── mundimoto.svg
│ │ ├── nissin.png
│ │ ├── opentrends.png
│ │ ├── optiver.svg
│ │ ├── pura-fruta-2022.jpg
│ │ ├── pura_fruta.jpg
│ │ ├── pura_fruta.png
│ │ ├── pura_fruta_alt.png
│ │ ├── red_bull.png
│ │ ├── red_bull.svg
│ │ ├── restbai.png
│ │ ├── restbai.svg
│ │ ├── servi_zurich.png
│ │ ├── skyscanner.png
│ │ ├── skyscanner.svg
│ │ ├── skyscanner_alt.svg
│ │ ├── sopra_steria.svg
│ │ ├── stickermule.svg
│ │ ├── strands.svg
│ │ ├── tech.png
│ │ ├── telecos-small-2x.png
│ │ ├── telecos-small.png
│ │ ├── telecos_4K.png
│ │ ├── thoughtworks.svg
│ │ ├── thoughtworks_pink.svg
│ │ ├── twilio.svg
│ │ ├── typeform.svg
│ │ ├── typeform_white.svg
│ │ ├── upc.svg
│ │ ├── upc_50_anys-big.png
│ │ ├── upc_50_anys.png
│ │ ├── vueling.svg
│ │ ├── wolfram.png
│ │ └── zanuy.png
│ └── ogimage.png
├── favicon
│ ├── favicon-black.svg
│ ├── favicon-color.svg
│ ├── favicon-white.svg
│ └── faviconDescription.json
├── index.html
├── index.ts
├── scripts
│ ├── analytics.ts
│ ├── cookies.ts
│ ├── faq.ts
│ ├── hero
│ │ └── index.ts
│ └── sw.ts
└── styles
│ ├── sections
│ ├── about-us.scss
│ ├── during.scss
│ ├── faq.scss
│ ├── follow-us.scss
│ ├── footer.scss
│ ├── hero.scss
│ ├── hero
│ │ └── hero.scss
│ ├── live.scss
│ ├── participate.scss
│ ├── photos.scss
│ ├── sponsors-and-partners.scss
│ ├── sponsors
│ │ └── logo-alignments.scss
│ └── what-is-a-hackathon.scss
│ ├── shared
│ ├── body.scss
│ ├── cookies.scss
│ ├── fonts.scss
│ ├── nav.scss
│ └── tags.scss
│ ├── style.scss
│ └── variables.scss
├── stylelint.config.js
└── tsconfig.json
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | [
4 | "@babel/preset-env",
5 | {
6 | "useBuiltIns": "usage",
7 | "debug": true,
8 | "corejs": 3
9 | }
10 | ]
11 | ],
12 | "plugins": [],
13 | "$schema": "https://json.schemastore.org/babelrc"
14 | }
15 |
--------------------------------------------------------------------------------
/.browserslistrc:
--------------------------------------------------------------------------------
1 | > 0.5%
2 | last 2 versions
3 | Firefox ESR
4 | not dead
5 | not IE 11
6 | not IE_Mob 11
7 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | end_of_line = lf
7 | indent_size = 2
8 | indent_style = space
9 | insert_final_newline = true
10 | max_line_length = 80
11 | trim_trailing_whitespace = true
12 |
13 | [*.md]
14 | max_line_length = 0
15 | trim_trailing_whitespace = false
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @type {import("eslint").Linter.Config}
3 | */
4 | module.exports = {
5 | root: true,
6 | env: {
7 | browser: true,
8 | },
9 | parser: '@typescript-eslint/parser',
10 | extends: [
11 | 'eslint:recommended',
12 | 'plugin:@typescript-eslint/eslint-recommended',
13 | 'plugin:@typescript-eslint/recommended',
14 | 'plugin:prettier/recommended',
15 | ],
16 | parserOptions: {
17 | ecmaVersion: 2021,
18 | sourceType: 'module',
19 | },
20 | plugins: ['@typescript-eslint', 'prettier'],
21 | rules: {
22 | 'prettier/prettier': 'error',
23 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
24 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
25 | },
26 | overrides: [
27 | {
28 | files: ['*.js', '*.ts'],
29 | rules: {
30 | '@typescript-eslint/no-var-requires': 'off',
31 | },
32 | env: {
33 | node: true,
34 | },
35 | },
36 | ],
37 | ignorePatterns: ['/dist/'],
38 | }
39 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: CI
2 | on: push
3 | jobs:
4 | build:
5 | name: Build
6 | runs-on: ubuntu-latest
7 | steps:
8 | - name: 🚚 Get latest code
9 | uses: actions/checkout@v2
10 | - name: 🎯 Read .nvmrc
11 | run: echo "##[set-output name=NVMRC;]$(cat .nvmrc)"
12 | id: nvm
13 | - name: 🎯 Use Node.js (.nvmrc)
14 | uses: actions/setup-node@v1
15 | with:
16 | node-version: '${{ steps.nvm.outputs.NVMRC }}'
17 | - name: 🎁 Install dependencies
18 | run: npm ci
19 | - name: 👷🏽♂️ Build the site
20 | run: npm run dist
21 | - name: 💾 Store the build
22 | uses: actions/upload-artifact@v2
23 | with:
24 | name: dist
25 | path: dist
26 | lighthouseci:
27 | name: Lighthouse
28 | needs: build
29 | runs-on: ubuntu-latest
30 | steps:
31 | - name: 🚚 Get latest code
32 | uses: actions/checkout@v2
33 | with:
34 | ref: ${{ github.event.pull_request.head.sha }}
35 | - name: 🚚 Get the build
36 | uses: actions/download-artifact@v2
37 | with:
38 | name: dist
39 | path: dist
40 | - name: 🎯 Read .nvmrc
41 | run: echo "##[set-output name=NVMRC;]$(cat .nvmrc)"
42 | id: nvm
43 | - name: 🎯 Use Node.js (.nvmrc)
44 | uses: actions/setup-node@v1
45 | with:
46 | node-version: '${{ steps.nvm.outputs.NVMRC }}'
47 | - name: 🎁 Install Lighthouse
48 | run: npm install -g @lhci/cli
49 | - name: 🔎 Run Lighthouse
50 | run: lhci autorun
51 | env:
52 | LHCI_GITHUB_APP_TOKEN: ${{ secrets.LHCI_GITHUB_APP_TOKEN }}
53 | lintfix:
54 | name: Lint and fix
55 | runs-on: ubuntu-latest
56 | strategy:
57 | matrix:
58 | command: ['lint:eslint', 'lint:stylelint', 'lint:prettier']
59 | steps:
60 | - name: 🚚 Get latest code
61 | uses: actions/checkout@v2
62 | with:
63 | fetch-depth: 0
64 | - name: 🎯 Read .nvmrc
65 | run: echo "##[set-output name=NVMRC;]$(cat .nvmrc)"
66 | id: nvm
67 | - name: 🎯 Use Node.js (.nvmrc)
68 | uses: actions/setup-node@v1
69 | with:
70 | node-version: '${{ steps.nvm.outputs.NVMRC }}'
71 | - name: 🎁 Install dependencies
72 | run: npm ci
73 | - name: 🔦 Run ${{ matrix.command }}
74 | run: npm run ${{ matrix.command }}
75 | - name: 🍾 Commit & Push changes
76 | uses: actions-js/push@master
77 | with:
78 | message: 'chore: Auto-fix some lint errors'
79 | github_token: ${{ secrets.GITHUB_TOKEN }}
80 | branch: ${{ github.ref }}
81 |
--------------------------------------------------------------------------------
/.github/workflows/dependabot-automerge.yml:
--------------------------------------------------------------------------------
1 | name: Dependabot auto-merge
2 | on: pull_request_target
3 |
4 | permissions:
5 | pull-requests: write
6 | contents: write
7 |
8 | jobs:
9 | dependabot:
10 | runs-on: ubuntu-latest
11 | if: ${{ github.actor == 'dependabot[bot]' }}
12 | steps:
13 | - name: Enable auto-merge for Dependabot PRs
14 | run: gh pr merge --auto --merge "$PR_URL"
15 | env:
16 | PR_URL: ${{github.event.pull_request.html_url}}
17 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # production
3 | /build
4 | /dist
5 |
6 | # Created by https://www.toptal.com/developers/gitignore/api/node,windows,macos,linux
7 | # Edit at https://www.toptal.com/developers/gitignore?templates=node,windows,macos,linux
8 |
9 | ### Linux ###
10 | *~
11 |
12 | # temporary files which can be created if a process still has a handle open of a deleted file
13 | .fuse_hidden*
14 |
15 | # KDE directory preferences
16 | .directory
17 |
18 | # Linux trash folder which might appear on any partition or disk
19 | .Trash-*
20 |
21 | # .nfs files are created when an open file is removed but is still being accessed
22 | .nfs*
23 |
24 | ### macOS ###
25 | # General
26 | .DS_Store
27 | .AppleDouble
28 | .LSOverride
29 |
30 | # Icon must end with two \r
31 | Icon
32 |
33 |
34 | # Thumbnails
35 | ._*
36 |
37 | # Files that might appear in the root of a volume
38 | .DocumentRevisions-V100
39 | .fseventsd
40 | .Spotlight-V100
41 | .TemporaryItems
42 | .Trashes
43 | .VolumeIcon.icns
44 | .com.apple.timemachine.donotpresent
45 |
46 | # Directories potentially created on remote AFP share
47 | .AppleDB
48 | .AppleDesktop
49 | Network Trash Folder
50 | Temporary Items
51 | .apdisk
52 |
53 | ### Node ###
54 | # Logs
55 | logs
56 | *.log
57 | npm-debug.log*
58 | yarn-debug.log*
59 | yarn-error.log*
60 | lerna-debug.log*
61 |
62 | # Diagnostic reports (https://nodejs.org/api/report.html)
63 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
64 |
65 | # Runtime data
66 | pids
67 | *.pid
68 | *.seed
69 | *.pid.lock
70 |
71 | # Directory for instrumented libs generated by jscoverage/JSCover
72 | lib-cov
73 |
74 | # Coverage directory used by tools like istanbul
75 | coverage
76 | *.lcov
77 |
78 | # nyc test coverage
79 | .nyc_output
80 |
81 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
82 | .grunt
83 |
84 | # Bower dependency directory (https://bower.io/)
85 | bower_components
86 |
87 | # node-waf configuration
88 | .lock-wscript
89 |
90 | # Compiled binary addons (https://nodejs.org/api/addons.html)
91 | build/Release
92 |
93 | # Dependency directories
94 | node_modules/
95 | jspm_packages/
96 |
97 | # TypeScript v1 declaration files
98 | typings/
99 |
100 | # TypeScript cache
101 | *.tsbuildinfo
102 |
103 | # Optional npm cache directory
104 | .npm
105 |
106 | # Optional eslint cache
107 | .eslintcache
108 |
109 | # Optional stylelint cache
110 | .stylelintcache
111 |
112 | # Microbundle cache
113 | .rpt2_cache/
114 | .rts2_cache_cjs/
115 | .rts2_cache_es/
116 | .rts2_cache_umd/
117 |
118 | # Optional REPL history
119 | .node_repl_history
120 |
121 | # Output of 'npm pack'
122 | *.tgz
123 |
124 | # Yarn Integrity file
125 | .yarn-integrity
126 |
127 | # dotenv environment variables file
128 | .env
129 | .env.test
130 | .env*.local
131 |
132 | # parcel-bundler cache (https://parceljs.org/)
133 | .cache
134 | .parcel-cache
135 |
136 | # Next.js build output
137 | .next
138 |
139 | # Nuxt.js build / generate output
140 | .nuxt
141 | dist
142 |
143 | # Gatsby files
144 | .cache/
145 | # Comment in the public line in if your project uses Gatsby and not Next.js
146 | # https://nextjs.org/blog/next-9-1#public-directory-support
147 | # public
148 |
149 | # vuepress build output
150 | .vuepress/dist
151 |
152 | # Serverless directories
153 | .serverless/
154 |
155 | # FuseBox cache
156 | .fusebox/
157 |
158 | # DynamoDB Local files
159 | .dynamodb/
160 |
161 | # TernJS port file
162 | .tern-port
163 |
164 | # Stores VSCode versions used for testing VSCode extensions
165 | .vscode-test
166 |
167 | ### Windows ###
168 | # Windows thumbnail cache files
169 | Thumbs.db
170 | Thumbs.db:encryptable
171 | ehthumbs.db
172 | ehthumbs_vista.db
173 |
174 | # Dump file
175 | *.stackdump
176 |
177 | # Folder config file
178 | [Dd]esktop.ini
179 |
180 | # Recycle Bin used on file shares
181 | $RECYCLE.BIN/
182 |
183 | # Windows Installer files
184 | *.cab
185 | *.msi
186 | *.msix
187 | *.msm
188 | *.msp
189 |
190 | # Windows shortcuts
191 | *.lnk
192 |
193 | # End of https://www.toptal.com/developers/gitignore/api/node,windows,macos,linux
194 |
195 | .idea/
196 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/workspace.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
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 | 1639556280669
37 |
38 |
39 | 1639556280669
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | save-exact=true
2 |
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | 18
2 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | dist/
2 | node_modules/
3 | package-lock.json
4 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "dbaeumer.vscode-eslint",
4 | "stylelint.vscode-stylelint",
5 | "davidanson.vscode-markdownlint",
6 | "eg2.vscode-npm-script",
7 | "webhint.vscode-webhint",
8 | "sissel.json-script-tag",
9 | "esbenp.prettier-vscode",
10 | "znck.grammarly",
11 | "redhat.vscode-yaml",
12 | "arcanis.vscode-zipfs"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "files.autoSave": "onFocusChange",
3 | "editor.formatOnSave": true,
4 | "editor.formatOnPaste": true,
5 | "editor.defaultFormatter": "esbenp.prettier-vscode",
6 | "editor.tabSize": 2,
7 | "git.autofetch": true,
8 | "css.validate": false,
9 | "scss.validate": false,
10 | "stylelint.enable": true,
11 | "editor.codeActionsOnSave": {
12 | "source.fixAll.eslint": true,
13 | "source.fixAll.stylelint": true
14 | },
15 | "typescript.enablePromptUseWorkspaceTsdk": true,
16 | "files.exclude": {}
17 | }
18 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Hackers at UPC
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # HackUPC landing page
2 |
3 | [](https://app.netlify.com/sites/hackupc/deploys)
4 | [](https://github.com/hackupc/hackupc-landing/actions/workflows/ci.yml)
5 |
6 | 
7 |
8 | Hi! This is the code of the HackUPC landing page.
9 |
10 | ## Develop
11 |
12 | Clone the repo, install [nvm](https://github.com/nvm-sh/nvm#installing-and-updating), install [Node.js](https://nodejs.org/en/download/) with nvm, and install the dependencies with npm the **first time**:
13 |
14 | ```sh
15 | git clone git@github.com:hackupc/hackupc-landing.git
16 | cd hackupc-landing
17 |
18 | # Install nvm
19 | # Copy the command from here: https://github.com/nvm-sh/nvm#installing-and-updating
20 |
21 | nvm install
22 | nvm use
23 |
24 | npm install
25 | ```
26 |
27 | Use `npm run start` to compile and serve the build directory in real-time. It reloads every time there's a change. Then view the website at [https://localhost:3000](https://localhost:3000)
28 |
29 | ```sh
30 | npm run start
31 | ```
32 |
33 | Whenever you want, fix auto-fixable lint errors and format files:
34 |
35 | ```sh
36 | npm run lint:eslint
37 | npm run lint:stylelint
38 | npm run lint:prettier
39 | ```
40 |
41 | ### Tips
42 |
43 | - **Use `VS code`**, there's the `.vscode` folder with a good workspace configuration. It will be applied automatically.
44 | - Install `ESlint` and `Prettier` extensions.
45 |
46 | > If you're unfamiliar with modern vanilla websites, check [this video from CodelyTV](https://youtu.be/ZMBh6n3KWhY) (in Spanish) to understand the reasoning and benefits of this kind of architectures.
47 |
48 | ## Deploy
49 |
50 | **Push to master**. [Netlify](https://app.netlify.com/sites/hackupc) will build and deploy automatically.
51 |
52 | If you push something that doesn't build, don't worry, it won't be published.
53 |
54 | ## Support
55 |
56 | If you need help understanding something about this repo you can ask the previous developers. The ones that made the 2021 edition are:
57 |
58 | - Maurici Abad Gutierrez: Slack `@mauri` [mauriciabad.com](https://mauriciabad.com/)
59 |
60 | ## License
61 |
62 | MIT © Hackers@UPC
63 |
--------------------------------------------------------------------------------
/TODO.md:
--------------------------------------------------------------------------------
1 | # To do list
2 |
3 | ## For each edition
4 |
5 | - [x] Refactor all 20XX for 20XX +1 and any outdated content
6 | - [x] Update `favicon` (color)
7 | - [x] Make the applcations closed page
8 | - [x] Make the subscrive page
9 | - [x] Update FAQ
10 | - [x] Put the new logos
11 | - [x] Make sure that github continous integration accepts the commits
12 | - [x] Update directors names' in the legal pages
13 |
14 | ## List
15 |
16 | - [ ] Do navbar
17 | - [ ] Do through the years
18 | - [ ] Do out association acording to the meeting
19 |
20 | ## Other
21 |
22 | - [ ] fix hero
23 | - [ ] stylelint not working
24 |
--------------------------------------------------------------------------------
/config/webpack.dev.js:
--------------------------------------------------------------------------------
1 | const path = require('path')
2 | const HtmlWebpackPlugin = require('html-webpack-plugin')
3 | const { CleanWebpackPlugin } = require('clean-webpack-plugin')
4 |
5 | /**
6 | * @type {import('webpack').Configuration}
7 | */
8 | module.exports = {
9 | entry: {
10 | main: './src/index.ts',
11 | },
12 | output: {
13 | path: path.resolve('dist'),
14 | publicPath: '/',
15 | filename: '[name].bundle.js',
16 | },
17 | mode: 'development',
18 | devServer: {
19 | static: path.resolve('dist'),
20 | compress: true,
21 | port: 3000,
22 | // Uncomment the two lines below to enable hot reload on mobile
23 | // host: '172.17.197.80', // Your ip, update it. This is mine.
24 | // disableHostCheck: true,
25 | // http2: true,
26 | },
27 | devtool: 'eval-cheap-module-source-map',
28 | module: {
29 | rules: [
30 | {
31 | test: /\.tsx?$/,
32 | use: 'ts-loader',
33 | exclude: /node_modules/,
34 | },
35 | {
36 | test: /\.js$/,
37 | exclude: /node_modules/,
38 | use: {
39 | loader: 'babel-loader',
40 | },
41 | },
42 | {
43 | test: /\.(sa|sc|c)ss$/,
44 | exclude: /node_modules/,
45 | use: [
46 | 'style-loader', // creates style nodes from JS strings
47 | 'css-loader', // translates CSS into CommonJS
48 | {
49 | loader: 'postcss-loader', // Loader for webpack to process CSS with PostCSS
50 | options: {
51 | postcssOptions: {
52 | plugins: [
53 | require('stylelint')(),
54 | require('postcss-reporter')({ clearReportedMessages: true }),
55 | ],
56 | },
57 | },
58 | },
59 | 'sass-loader', // compiles Sass to CSS, using Node Sass by default
60 | ],
61 | },
62 | {
63 | test: /node_modules.*\.css$/,
64 | use: ['style-loader', 'css-loader'],
65 | },
66 | {
67 | test: /\.(png|svg|jpg|jpeg|gif)$/,
68 | type: 'asset/resource',
69 | },
70 | {
71 | test: /\.(woff|woff2|eot|ttf|otf)$/,
72 | type: 'asset/resource',
73 | },
74 | {
75 | test: /(favicon\.ico|ogimage\.png)$/,
76 | type: 'asset/resource',
77 | generator: {
78 | filename: '[name][ext]',
79 | },
80 | },
81 | {
82 | test: /(hackupc-logo-black\.svg)$/,
83 | type: 'asset/resource',
84 | generator: {
85 | filename: 'hackupc-logo[ext]',
86 | },
87 | },
88 | {
89 | test: /\.html$/,
90 | use: [
91 | {
92 | loader: 'html-loader',
93 | options: {
94 | sources: true,
95 | minimize: {
96 | collapseWhitespace: true,
97 | removeComments: true,
98 | removeRedundantAttributes: true,
99 | removeScriptTypeAttributes: true,
100 | removeStyleLinkTypeAttributes: true,
101 | useShortDoctype: true,
102 | ignoreCustomComments: [/^!/, /^\s*#/, /google(on|off)/i],
103 | minifyCSS: true,
104 | minifyJS: true,
105 | },
106 | },
107 | },
108 | ],
109 | },
110 | ],
111 | },
112 | resolve: {
113 | extensions: ['.wasm', '.mjs', '.ts', '.js', '.json'],
114 | },
115 | plugins: [
116 | new CleanWebpackPlugin(),
117 | new HtmlWebpackPlugin({
118 | template: './src/index.html',
119 | filename: 'index.html',
120 | }),
121 | ],
122 | }
123 |
--------------------------------------------------------------------------------
/lighthouserc.yaml:
--------------------------------------------------------------------------------
1 | ci:
2 | preset: lighthouse:all
3 | upload:
4 | target: temporary-public-storage
5 |
--------------------------------------------------------------------------------
/netlify.toml:
--------------------------------------------------------------------------------
1 | [build]
2 | publish = "dist"
3 | command = "npm run dist"
4 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hackupc-landing",
3 | "version": "3.1.0",
4 | "description": "HackUPC landing page",
5 | "author": "Hackers@UPC",
6 | "license": "MIT",
7 | "homepage": "https://hackupc.com",
8 | "repository": "github:hackupc/hackupc-landing",
9 | "scripts": {
10 | "start": "webpack serve --config config/webpack.dev.js --open --progress",
11 | "dist": "webpack --config config/webpack.prod.js",
12 | "lint:eslint": "eslint . --ext .js,.ts --fix",
13 | "lint:stylelint": "stylelint --fix 'src/**/*.{scss,sass,css}'",
14 | "lint:prettier": "prettier . --write"
15 | },
16 | "devDependencies": {
17 | "@babel/core": "7.20.12",
18 | "@babel/preset-env": "7.20.2",
19 | "@types/eslint": "8.4.10",
20 | "@types/gtag.js": "0.0.12",
21 | "@types/node": "18.11.18",
22 | "@types/prettier": "2.7.2",
23 | "@types/stylelint": "14.0.0",
24 | "@types/webfontloader": "1.6.35",
25 | "@types/webpack": "5.28.0",
26 | "@typescript-eslint/eslint-plugin": "5.48.2",
27 | "@typescript-eslint/parser": "5.48.2",
28 | "babel-loader": "9.1.2",
29 | "clean-webpack-plugin": "4.0.0",
30 | "compression-webpack-plugin": "10.0.0",
31 | "css-loader": "6.7.3",
32 | "css-minimizer-webpack-plugin": "4.2.2",
33 | "eslint": "8.32.0",
34 | "eslint-config-prettier": "8.6.0",
35 | "eslint-plugin-prettier": "4.2.1",
36 | "glob": "8.1.0",
37 | "html-loader": "4.2.0",
38 | "html-webpack-plugin": "5.5.0",
39 | "husky": "8.0.3",
40 | "lint-staged": "13.1.0",
41 | "mini-css-extract-plugin": "2.7.2",
42 | "postcss": "8.4.21",
43 | "postcss-easing-gradients": "3.0.1",
44 | "postcss-focus-visible": "7.1.0",
45 | "postcss-loader": "7.0.2",
46 | "postcss-preset-env": "7.8.3",
47 | "postcss-reporter": "7.0.5",
48 | "prettier": "2.8.3",
49 | "prettier-config-standard": "5.0.0",
50 | "purgecss-webpack-plugin": "5.0.0",
51 | "sass": "1.57.1",
52 | "sass-loader": "13.2.0",
53 | "style-loader": "3.3.1",
54 | "stylelint": "14.16.1",
55 | "stylelint-config-idiomatic-order": "9.0.0",
56 | "stylelint-config-prettier": "9.0.4",
57 | "stylelint-config-sass-guidelines": "9.0.1",
58 | "stylelint-config-standard": "29.0.0",
59 | "stylelint-order": "6.0.1",
60 | "stylelint-scss": "4.3.0",
61 | "terser-webpack-plugin": "5.3.6",
62 | "ts-loader": "9.4.2",
63 | "typescript": "4.9.4",
64 | "webpack": "5.75.0",
65 | "webpack-cli": "5.0.1",
66 | "webpack-dev-server": "4.11.1",
67 | "webpack-pwa-manifest": "4.3.0",
68 | "workbox-webpack-plugin": "6.5.4"
69 | },
70 | "dependencies": {
71 | "@babel/polyfill": "7.12.1",
72 | "@fontsource/montserrat": "4.5.14",
73 | "core-js": "3.27.2",
74 | "focus-visible": "5.2.0",
75 | "lax.js": "2.0.3",
76 | "normalize.css": "8.0.1"
77 | },
78 | "husky": {
79 | "hooks": {
80 | "pre-commit": "lint-staged"
81 | }
82 | },
83 | "lint-staged": {
84 | "*.{js,ts}": "eslint --cache --fix",
85 | "*.{scss,sass,css}": "stylelint --cache --fix",
86 | "**/*": "prettier --write --ignore-unknown"
87 | },
88 | "$schema": "https://json.schemastore.org/package"
89 | }
90 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: [
3 | require('postcss-easing-gradients'),
4 | require('postcss-focus-visible')(),
5 | require('postcss-preset-env')(),
6 | ],
7 | }
8 |
--------------------------------------------------------------------------------
/prettier.config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @type {import("prettier").Options}
3 | */
4 | module.exports = {
5 | // ...require('prettier-config-standard'),
6 |
7 | trailingComma: 'es5',
8 | tabWidth: 2,
9 | semi: false,
10 | singleQuote: true,
11 | overrides: [
12 | {
13 | files: 'src/**/*.html',
14 | options: {
15 | printWidth: 120,
16 | },
17 | },
18 | ],
19 | }
20 |
--------------------------------------------------------------------------------
/src/assets/favicon.svg:
--------------------------------------------------------------------------------
1 |
22 |
--------------------------------------------------------------------------------
/src/assets/favicon/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/favicon/android-chrome-192x192.png
--------------------------------------------------------------------------------
/src/assets/favicon/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/favicon/android-chrome-512x512.png
--------------------------------------------------------------------------------
/src/assets/favicon/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/favicon/apple-touch-icon.png
--------------------------------------------------------------------------------
/src/assets/favicon/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | #BEB771
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/assets/favicon/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/favicon/favicon-16x16.png
--------------------------------------------------------------------------------
/src/assets/favicon/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/favicon/favicon-32x32.png
--------------------------------------------------------------------------------
/src/assets/favicon/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/favicon/favicon.ico
--------------------------------------------------------------------------------
/src/assets/favicon/maskable_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/favicon/maskable_icon.png
--------------------------------------------------------------------------------
/src/assets/favicon/mstile-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/favicon/mstile-144x144.png
--------------------------------------------------------------------------------
/src/assets/favicon/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/favicon/mstile-150x150.png
--------------------------------------------------------------------------------
/src/assets/favicon/mstile-310x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/favicon/mstile-310x150.png
--------------------------------------------------------------------------------
/src/assets/favicon/mstile-310x310.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/favicon/mstile-310x310.png
--------------------------------------------------------------------------------
/src/assets/favicon/mstile-70x70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/favicon/mstile-70x70.png
--------------------------------------------------------------------------------
/src/assets/images/hackupc-logo-black.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/src/assets/images/hackupc-logo-white.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/src/assets/images/icons/camera.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/duck.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/eye.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-cafeteria.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-cup-stacking.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-dodge.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-draw.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-duck.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-email-alt-2.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-email-alt.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-email-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-email.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-facebook-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-facebook.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-github-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-github.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-info.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-instagram-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-instagram.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-lego.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-linkedin-circle.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-linkedin.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-medium-alt.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-medium-circle-2.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-medium-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-medium.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-nerf.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-rubik.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-slideshare.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-sticker.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-talk.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-twitch-circle.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-twitter-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-twitter.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-youtube-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-youtube.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/images/icons/icon-zumba.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/artiach.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/artiach.png
--------------------------------------------------------------------------------
/src/assets/logos/aws_alt.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/aws_educate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/aws_educate.png
--------------------------------------------------------------------------------
/src/assets/logos/birba.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/birba.png
--------------------------------------------------------------------------------
/src/assets/logos/bloomberg.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/bsc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/bsc.png
--------------------------------------------------------------------------------
/src/assets/logos/bunge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/bunge.png
--------------------------------------------------------------------------------
/src/assets/logos/cfis.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/cfis.png
--------------------------------------------------------------------------------
/src/assets/logos/cfis.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/cfis_alt.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/cfis_alt_2.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/coeinf-small-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/coeinf-small-2x.png
--------------------------------------------------------------------------------
/src/assets/logos/coeinf-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/coeinf-small.png
--------------------------------------------------------------------------------
/src/assets/logos/coeinf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/coeinf.png
--------------------------------------------------------------------------------
/src/assets/logos/conguitos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/conguitos.png
--------------------------------------------------------------------------------
/src/assets/logos/conguitos_4K.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/conguitos_4K.png
--------------------------------------------------------------------------------
/src/assets/logos/cuetara.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/cuetara.png
--------------------------------------------------------------------------------
/src/assets/logos/dominos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/dominos.png
--------------------------------------------------------------------------------
/src/assets/logos/dominos_2023.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/dominos_2023.jpg
--------------------------------------------------------------------------------
/src/assets/logos/everis.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/everis.png
--------------------------------------------------------------------------------
/src/assets/logos/ey.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/facebook.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/fib.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/frit_ravich.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/frit_ravich.png
--------------------------------------------------------------------------------
/src/assets/logos/gallina_blanca.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/gallina_blanca.jpg
--------------------------------------------------------------------------------
/src/assets/logos/gallina_blanca.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/gallina_blanca.png
--------------------------------------------------------------------------------
/src/assets/logos/github.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/google.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/src/assets/logos/hackupc_unrevealed.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/src/assets/logos/haribo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/haribo.png
--------------------------------------------------------------------------------
/src/assets/logos/haribo_4K.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/haribo_4K.png
--------------------------------------------------------------------------------
/src/assets/logos/haribo_alt_4K.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/haribo_alt_4K.png
--------------------------------------------------------------------------------
/src/assets/logos/haribo_letters.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/haribo_letters.png
--------------------------------------------------------------------------------
/src/assets/logos/haribo_letters_4K.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/haribo_letters_4K.png
--------------------------------------------------------------------------------
/src/assets/logos/haufe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/haufe.png
--------------------------------------------------------------------------------
/src/assets/logos/haufe.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/haufe_alt.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/hp.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/hp_alt.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/hp_black.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/huawei.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/huawei.png
--------------------------------------------------------------------------------
/src/assets/logos/infojobs.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
45 |
--------------------------------------------------------------------------------
/src/assets/logos/itequia.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/itequia.png
--------------------------------------------------------------------------------
/src/assets/logos/ithinkupc_white.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/logos/jetbrains.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/leo_boeck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/leo_boeck.png
--------------------------------------------------------------------------------
/src/assets/logos/microsoft.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/midokura.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/midokura.png
--------------------------------------------------------------------------------
/src/assets/logos/moncafe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/moncafe.png
--------------------------------------------------------------------------------
/src/assets/logos/nissin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/nissin.png
--------------------------------------------------------------------------------
/src/assets/logos/opentrends.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/opentrends.png
--------------------------------------------------------------------------------
/src/assets/logos/pura-fruta-2022.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/pura-fruta-2022.jpg
--------------------------------------------------------------------------------
/src/assets/logos/pura_fruta.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/pura_fruta.jpg
--------------------------------------------------------------------------------
/src/assets/logos/pura_fruta.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/pura_fruta.png
--------------------------------------------------------------------------------
/src/assets/logos/pura_fruta_alt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/pura_fruta_alt.png
--------------------------------------------------------------------------------
/src/assets/logos/red_bull.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/red_bull.png
--------------------------------------------------------------------------------
/src/assets/logos/restbai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/restbai.png
--------------------------------------------------------------------------------
/src/assets/logos/servi_zurich.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/servi_zurich.png
--------------------------------------------------------------------------------
/src/assets/logos/skyscanner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/skyscanner.png
--------------------------------------------------------------------------------
/src/assets/logos/sopra_steria.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/tech.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/tech.png
--------------------------------------------------------------------------------
/src/assets/logos/telecos-small-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/telecos-small-2x.png
--------------------------------------------------------------------------------
/src/assets/logos/telecos-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/telecos-small.png
--------------------------------------------------------------------------------
/src/assets/logos/telecos_4K.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/telecos_4K.png
--------------------------------------------------------------------------------
/src/assets/logos/thoughtworks.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/thoughtworks_pink.svg:
--------------------------------------------------------------------------------
1 |
16 |
--------------------------------------------------------------------------------
/src/assets/logos/twilio.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/logos/typeform.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/logos/typeform_white.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/logos/upc_50_anys-big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/upc_50_anys-big.png
--------------------------------------------------------------------------------
/src/assets/logos/upc_50_anys.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/upc_50_anys.png
--------------------------------------------------------------------------------
/src/assets/logos/vueling.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/logos/wolfram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/wolfram.png
--------------------------------------------------------------------------------
/src/assets/logos/zanuy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/logos/zanuy.png
--------------------------------------------------------------------------------
/src/assets/ogimage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/assets/ogimage.png
--------------------------------------------------------------------------------
/src/favicon/favicon-black.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/favicon/favicon-color.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/favicon/faviconDescription.json:
--------------------------------------------------------------------------------
1 | {
2 | "masterPicture": "src/assets/favicon/favicon-black.svg",
3 | "iconsPath": "/assets/favicon/",
4 | "design": {
5 | "ios": {
6 | "masterPicture": {
7 | "type": "path",
8 | "content": "src/assets/favicon/favicon-white.svg"
9 | },
10 | "pictureAspect": "backgroundAndMargin",
11 | "backgroundColor": "#1f143a",
12 | "margin": "14%",
13 | "assets": {
14 | "ios6AndPriorIcons": false,
15 | "ios7AndLaterIcons": false,
16 | "precomposedIcons": false,
17 | "declareOnlyDefaultIcon": true
18 | },
19 | "appName": "HackUPC"
20 | },
21 | "desktopBrowser": {
22 | "design": "background",
23 | "backgroundColor": "#ffffff",
24 | "backgroundRadius": 1,
25 | "imageScale": 1
26 | },
27 | "windows": {
28 | "masterPicture": {
29 | "type": "path",
30 | "content": "src/assets/favicon/favicon-white.svg"
31 | },
32 | "pictureAspect": "noChange",
33 | "backgroundColor": "#1f143a",
34 | "onConflict": "override",
35 | "assets": {
36 | "windows80Ie10Tile": false,
37 | "windows10Ie11EdgeTiles": {
38 | "small": false,
39 | "medium": true,
40 | "big": false,
41 | "rectangle": false
42 | }
43 | },
44 | "appName": "HackUPC"
45 | },
46 | "androidChrome": {
47 | "pictureAspect": "noChange",
48 | "themeColor": "#1f143a",
49 | "manifest": {
50 | "name": "HackUPC",
51 | "display": "browser",
52 | "orientation": "notSet",
53 | "onConflict": "override",
54 | "declared": true
55 | },
56 | "assets": {
57 | "legacyIcon": false,
58 | "lowResolutionIcons": false
59 | }
60 | },
61 | "safariPinnedTab": {
62 | "pictureAspect": "blackAndWhite",
63 | "threshold": 90,
64 | "themeColor": "#1f143a"
65 | }
66 | },
67 | "settings": {
68 | "compression": 5,
69 | "scalingAlgorithm": "Mitchell",
70 | "errorOnImageTooSmall": false,
71 | "readmeFile": false,
72 | "htmlCodeFile": true,
73 | "usePathAsIs": false
74 | },
75 | "versioning": {
76 | "paramName": "v",
77 | "paramValue": "gAePv3mpjq"
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import './assets/favicon/favicon.ico'
2 | import './assets/ogimage.png'
3 | import './assets/images/hackupc-logo-black.svg'
4 |
5 | import 'normalize.css'
6 | import './styles/style.scss'
7 |
8 | import 'focus-visible'
9 |
10 | import './scripts/sw'
11 | import './scripts/analytics'
12 | import './scripts/cookies'
13 | import './scripts/hero'
14 | import './scripts/faq'
15 |
--------------------------------------------------------------------------------
/src/scripts/analytics.ts:
--------------------------------------------------------------------------------
1 | const GOOGLE_ANALYTICS_MEASUREMENT_ID = 'G-WFBH19BZ64'
2 |
3 | if (process.env.NODE_ENV === 'production') {
4 | const script = document.createElement('script')
5 | script.src = `https://www.googletagmanager.com/gtag/js?id=${GOOGLE_ANALYTICS_MEASUREMENT_ID}`
6 | document.body.append(script)
7 | } else {
8 | gtag = (...args: unknown[]) => {
9 | console.log('Emmited event to Google Analytics:', args)
10 | }
11 | }
12 |
13 | gtag('js', new Date())
14 | gtag('config', GOOGLE_ANALYTICS_MEASUREMENT_ID, { anonymize_ip: true })
15 | gtag('set', { hackupc_edition: '2021' })
16 |
17 | const subscribeForms: NodeListOf = document.querySelectorAll(
18 | '[data-ga-subscribe-form]'
19 | )
20 | subscribeForms.forEach((elem) => {
21 | elem.addEventListener(
22 | 'submit',
23 | () => {
24 | gtag('event', 'subscribe', {
25 | category: 'Subscribe',
26 | label: 'Subscribe form submitted',
27 | })
28 | },
29 | { passive: true }
30 | )
31 | })
32 |
33 | const applyButtons: NodeListOf = document.querySelectorAll(
34 | '[data-ga-apply-button]'
35 | )
36 | applyButtons.forEach((elem) => {
37 | elem.addEventListener(
38 | 'click',
39 | () => {
40 | gtag('event', 'apply', {
41 | category: 'Apply',
42 | label: 'Apply button clicked',
43 | role: elem.dataset.role,
44 | location: elem.dataset.location,
45 | })
46 | },
47 | { passive: true }
48 | )
49 | })
50 |
51 | const navLinks: NodeListOf =
52 | document.querySelectorAll('[data-ga-nav-item]')
53 | navLinks.forEach((elem) => {
54 | elem.addEventListener(
55 | 'click',
56 | () => {
57 | gtag('event', 'navbar-click', {
58 | category: 'Navigation',
59 | label: 'Navbar link clicked',
60 | location: elem.href,
61 | })
62 | },
63 | { passive: true }
64 | )
65 | })
66 |
67 | const faqTitles: NodeListOf =
68 | document.querySelectorAll('.faq__title')
69 | faqTitles.forEach((elem) => {
70 | elem.addEventListener(
71 | 'click',
72 | () => {
73 | if (!elem.dataset.clicked) {
74 | elem.dataset.clicked = 'true'
75 |
76 | gtag('event', 'faq_expand', {
77 | category: 'FAQ',
78 | label: 'FAQ question expanded',
79 | question: elem.textContent?.trim() ?? '',
80 | })
81 | }
82 | },
83 | { passive: true }
84 | )
85 | })
86 |
--------------------------------------------------------------------------------
/src/scripts/cookies.ts:
--------------------------------------------------------------------------------
1 | const cookieNotice = document.getElementById('gdpr')
2 |
3 | if (cookieNotice) {
4 | if (window.localStorage.getItem('cookies') !== '1') {
5 | cookieNotice.classList.remove('gdpr--hidden')
6 | }
7 |
8 | const cookieNoticeClose = document.getElementById('gdpr-close')
9 | cookieNoticeClose?.addEventListener('click', () => {
10 | window.localStorage.setItem('cookies', '1')
11 | cookieNotice.classList.add('gdpr--hidden')
12 |
13 | cookieNotice.style.display = 'flex'
14 | setTimeout(() => {
15 | cookieNotice.style.display = ''
16 | }, 400)
17 | })
18 | }
19 |
--------------------------------------------------------------------------------
/src/scripts/faq.ts:
--------------------------------------------------------------------------------
1 | const faqLinkElems: NodeListOf = document.querySelectorAll(
2 | '.faq__answer[aria-hidden="true"] a'
3 | )
4 | for (const linkElem of faqLinkElems) {
5 | linkElem.tabIndex = -1
6 | }
7 |
8 | const faqQuestionTitleElems: NodeListOf =
9 | document.querySelectorAll('.faq__title')
10 | for (const faqQuestionTitleElem of faqQuestionTitleElems) {
11 | faqQuestionTitleElem.addEventListener('click', () => {
12 | const faqQuestionElem = faqQuestionTitleElem.closest('.faq__question')
13 | const faqAnswerElem: HTMLElement | null =
14 | faqQuestionElem?.querySelector('.faq__answer') ?? null
15 | // const faqLinksElems: NodeListOf = faqQuestionElem.querySelectorAll('a');
16 |
17 | if (faqQuestionElem && faqAnswerElem) {
18 | if (faqQuestionTitleElem.getAttribute('aria-expanded') === 'true') {
19 | faqQuestionElem.classList.remove('faq__question--expanded')
20 | faqQuestionTitleElem.setAttribute('aria-expanded', 'false')
21 | faqAnswerElem.setAttribute('aria-hidden', 'true')
22 | faqAnswerElem.style.maxHeight = ''
23 |
24 | faqAnswerElem.querySelectorAll('a').forEach((linkElem) => {
25 | linkElem.tabIndex = -1
26 | })
27 | } else {
28 | faqQuestionElem.classList.add('faq__question--expanded')
29 | faqAnswerElem.setAttribute('aria-hidden', 'false')
30 | faqQuestionTitleElem.setAttribute('aria-expanded', 'true')
31 | faqAnswerElem.style.maxHeight = `${faqAnswerElem.scrollHeight}px`
32 |
33 | faqAnswerElem.querySelectorAll('a').forEach((linkElem) => {
34 | linkElem.tabIndex = 0
35 | })
36 | }
37 | }
38 | })
39 | }
40 |
--------------------------------------------------------------------------------
/src/scripts/hero/index.ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackupc/old-v2-hackupc-landing/c8365d9bb6bef0b2cc35472f9b12b0d9e1e39f91/src/scripts/hero/index.ts
--------------------------------------------------------------------------------
/src/scripts/sw.ts:
--------------------------------------------------------------------------------
1 | /*
2 | if ('serviceWorker' in navigator) {
3 | window.addEventListener('load', async () => {
4 | await navigator.serviceWorker.register('/service-worker.js')
5 | })
6 | }
7 | */
8 |
9 | window.addEventListener('beforeinstallprompt', (event) => {
10 | event.preventDefault()
11 | })
12 |
--------------------------------------------------------------------------------
/src/styles/sections/about-us.scss:
--------------------------------------------------------------------------------
1 | @use 'src/styles/variables' as *;
2 |
3 | .section--about-us {
4 | border-bottom: 0;
5 | background: url('/src/assets/images/trencadis/very-light.svg') #f2ede6 center /
6 | 640px repeat;
7 | }
8 |
9 | .about-us__subtitle {
10 | margin: 3rem 0;
11 | font-size: 1.25rem;
12 | font-weight: 600;
13 | }
14 | @media only screen and (max-width: 27.5rem) {
15 | .section--about-us .section__title {
16 | font-size: calc(1rem + 4vw);
17 | }
18 |
19 | .about-us__subtitle {
20 | font-size: 1.125rem;
21 | }
22 | }
23 |
24 | .about-us__layout {
25 | display: grid;
26 | margin-top: 2rem;
27 | gap: 2rem;
28 | grid-template: auto / auto auto;
29 | place-content: center;
30 | place-items: center;
31 |
32 | > img,
33 | > svg {
34 | width: 15rem;
35 | }
36 | }
37 | @media only screen and (max-width: 15rem * 2 + 2rem + 4rem) {
38 | .about-us__layout {
39 | grid-template: auto auto / auto;
40 | }
41 | }
42 |
43 | .card--about-us {
44 | padding: 2rem;
45 | background-color: $c-about-us-bg-card;
46 | }
47 |
--------------------------------------------------------------------------------
/src/styles/sections/faq.scss:
--------------------------------------------------------------------------------
1 | @use 'src/styles/variables' as *;
2 |
3 | .section--faq {
4 | background: url('/src/assets/images/trencadis/very-light.svg') #f2ede6 center /
5 | 640px repeat;
6 |
7 | h2 > small {
8 | font-size: 1em;
9 | text-transform: lowercase;
10 | }
11 |
12 | .section__title {
13 | display: inline-block;
14 | padding: 0.5rem 1rem;
15 | border: solid 7px #fff;
16 | border-radius: $border-radius-big;
17 | background: url('/src/assets/images/trencadis/light.svg') #f2eee7 center /
18 | 640px repeat;
19 | }
20 | }
21 |
22 | .faq {
23 | display: flex;
24 | flex-wrap: wrap;
25 | margin: -0.5rem;
26 |
27 | dd,
28 | dl {
29 | margin: 0;
30 | }
31 | }
32 |
33 | .faq__column {
34 | display: flex;
35 | flex: 1 1 20rem;
36 | flex-direction: column;
37 | }
38 |
39 | .faq__category {
40 | display: block;
41 | padding: 1rem;
42 | border-radius: $border-radius-big;
43 | margin: 0.5rem;
44 | background-color: $c-faq-block;
45 | }
46 |
47 | .faq__category-title {
48 | margin: 1rem 0 2rem;
49 | font-size: 1.5rem;
50 | line-height: 0.8;
51 | text-transform: uppercase;
52 | }
53 |
54 | .faq__question {
55 | position: relative;
56 | padding: 1rem;
57 | padding-bottom: 0;
58 | border-radius: $border-radius-small;
59 | margin: 1rem 0;
60 | background-color: $c-faq-question;
61 | text-align: left;
62 | transition: padding-bottom 200ms $ease-quad, box-shadow 200ms $ease-bounce;
63 |
64 | &:first-child {
65 | margin-top: 0;
66 | }
67 |
68 | &:last-child {
69 | margin-bottom: 0;
70 | }
71 |
72 | &::before {
73 | position: absolute;
74 | top: 0;
75 | right: 0;
76 | bottom: 0;
77 | left: 0;
78 | border-radius: $border-radius-small;
79 | background-image: $c-faq-hover;
80 | content: '';
81 | opacity: 0;
82 | transition: opacity 1.5s cubic-bezier(0.19, 1, 0.22, 1);
83 | }
84 |
85 | &:hover::before {
86 | opacity: 1;
87 | transition: opacity 50ms $ease-cubic;
88 | }
89 | }
90 |
91 | $faq-arrow-angle: 40deg;
92 |
93 | .faq__title {
94 | position: relative;
95 | width: calc(100% + 2rem);
96 | padding: 1rem 4rem 1rem 1rem;
97 | border: 0;
98 | border-radius: $border-radius-small;
99 | margin: -1rem;
100 | background: none;
101 | color: inherit;
102 | cursor: pointer;
103 | font-size: 1.125rem;
104 | font-weight: bold;
105 | line-height: 1;
106 | -webkit-tap-highlight-color: rgb(0 0 0 / 0%);
107 | text-align: inherit;
108 |
109 | &::before,
110 | &::after {
111 | position: absolute;
112 | top: 50%;
113 | right: 0;
114 | width: 1rem;
115 | height: 0.25rem;
116 | background-color: currentcolor;
117 | content: '';
118 | transition: transform 300ms cubic-bezier(0.18, 0.89, 0.35, 1.15);
119 | }
120 |
121 | &::before {
122 | transform: translate(-1rem, 75%) rotate(-$faq-arrow-angle);
123 | transform-origin: left center;
124 | }
125 |
126 | &::after {
127 | transform: translate(-1.85rem, 75%) rotate($faq-arrow-angle);
128 | transform-origin: right center;
129 | }
130 |
131 | &:focus {
132 | outline: none;
133 | }
134 | }
135 |
136 | .faq__answer {
137 | position: relative;
138 | overflow: hidden;
139 | max-height: 0;
140 | margin: 1rem 0 0;
141 | transition: max-height 200ms $ease-quad;
142 | }
143 |
144 | .faq__question--expanded {
145 | padding-bottom: 1rem;
146 |
147 | .faq__title {
148 | &::before {
149 | transform: translate(-1rem, -125%) rotate($faq-arrow-angle);
150 | }
151 |
152 | &::after {
153 | transform: translate(-1.85rem, -125%) rotate(-$faq-arrow-angle);
154 | }
155 | }
156 | }
157 |
158 | .faq__others-title {
159 | margin: 5rem 0 1rem;
160 | font-size: 1.75rem;
161 | text-align: center;
162 | }
163 |
164 | .faq__others-answer {
165 | margin: 0;
166 | text-align: center;
167 | }
168 |
--------------------------------------------------------------------------------
/src/styles/sections/follow-us.scss:
--------------------------------------------------------------------------------
1 | @use 'src/styles/variables' as *;
2 |
3 | .section--follow-us {
4 | background: url('/src/assets/images/trencadis/cyan.svg') #f2ede6 center /
5 | 640px repeat;
6 |
7 | .content__wrapper {
8 | padding: 8rem 1rem;
9 | }
10 | }
11 |
12 | .follow-us__title {
13 | display: inline-block;
14 | padding: 1rem 2rem;
15 | border: solid 7px #fff;
16 | border-radius: $border-radius-big;
17 | margin: 0;
18 | background: url('/src/assets/images/trencadis/light.svg') #f2eee7 center /
19 | 640px repeat;
20 | font-size: 3rem;
21 | font-weight: 700;
22 | }
23 |
24 | .follow-us__subtitle {
25 | display: inline-block;
26 | padding: 0.5rem 1rem;
27 | border-radius: 0 0 $border-radius-big $border-radius-big;
28 | border-top: 7px;
29 | margin: 0 0 3.25rem;
30 | margin-top: -7px;
31 | background: #fff;
32 | color: $c-primary;
33 | font-size: 1.75rem;
34 | font-weight: 600;
35 | }
36 |
37 | .follow-us__list {
38 | display: inline-flex;
39 | flex-wrap: wrap;
40 | align-items: center;
41 | justify-content: center;
42 | padding: 0;
43 | margin: -0.5rem;
44 | gap: 0.5rem;
45 | }
46 |
47 | .follow-us__item {
48 | display: block;
49 | width: 5rem;
50 | box-sizing: content-box;
51 | border-radius: 100%;
52 | background: #fff;
53 | transition: transform 0.3s cubic-bezier(0.17, 2.55, 0.69, 0.4);
54 | will-change: transform;
55 |
56 | a,
57 | img,
58 | svg {
59 | display: block;
60 | }
61 |
62 | a {
63 | padding: 0.5rem;
64 | border-radius: 50%;
65 | color: #fff;
66 |
67 | &:focus-visible {
68 | box-shadow: 0 0 0 0.25rem $c-primary;
69 | outline: none;
70 | }
71 | }
72 |
73 | &:hover {
74 | transform: scale(1.15);
75 | transition: transform 0.15s cubic-bezier(0.18, 0.89, 0.57, 2.05);
76 | }
77 | }
78 |
79 | @media only screen and (max-width: 52rem) {
80 | .follow-us__title {
81 | font-size: 2.5rem;
82 | }
83 |
84 | .follow-us__subtitle {
85 | font-size: 1.25rem;
86 | }
87 | }
88 | @media only screen and (max-width: 7 * 5rem + 1rem) {
89 | .follow-us__list {
90 | max-width: 4 * 5rem;
91 | }
92 | }
93 |
94 | @media only screen and (max-width: 29.3rem) {
95 | .follow-us__title {
96 | font-size: 2rem;
97 | }
98 |
99 | .follow-us__subtitle {
100 | font-size: 1rem;
101 | }
102 |
103 | .follow-us__item {
104 | width: 4.5rem;
105 | }
106 |
107 | .follow-us__list {
108 | max-width: 4 * 4.5rem;
109 | }
110 |
111 | .section--follow-us {
112 | .content__wrapper {
113 | padding: 5rem 1rem;
114 | }
115 | }
116 | }
117 |
--------------------------------------------------------------------------------
/src/styles/sections/footer.scss:
--------------------------------------------------------------------------------
1 | @use 'src/styles/variables' as *;
2 |
3 | /* Footer section */
4 | .section--footer {
5 | overflow: hidden;
6 | padding: 2rem 0.5rem 1.5rem;
7 | border-bottom: 0;
8 | background: url('/src/assets/images/trencadis/very-light.svg') #f2ede6 center /
9 | 640px repeat;
10 | color: #158566;
11 | text-align: center;
12 | }
13 |
14 | .footer {
15 | &__link {
16 | color: $c-primary-accessible;
17 | text-decoration: none;
18 | }
19 |
20 | &__link:hover {
21 | text-decoration: underline;
22 | }
23 |
24 | &__element {
25 | margin: 1rem auto;
26 | }
27 |
28 | &__element--first {
29 | margin-top: 0;
30 | }
31 |
32 | &__element--last {
33 | margin-bottom: 0;
34 | }
35 |
36 | &__previous-edition {
37 | display: inline-block;
38 | margin-bottom: 2rem;
39 | font-size: 1.1rem;
40 | }
41 | }
42 |
43 | .footer-column {
44 | display: flex;
45 | max-width: 1200px;
46 | flex-wrap: wrap;
47 | justify-content: space-around;
48 | margin: -0.5rem auto;
49 |
50 | &__element {
51 | margin: 0.5rem;
52 | }
53 | }
54 |
55 | .section__list {
56 | &--links-list {
57 | max-width: 500px;
58 | flex-wrap: nowrap;
59 | align-items: center;
60 | }
61 |
62 | &--packed {
63 | max-width: 350px;
64 | flex-grow: 1;
65 |
66 | @media (max-width: 25rem) {
67 | font-size: 4vw;
68 | }
69 | }
70 |
71 | &--contact {
72 | display: flex;
73 | max-width: 17.5rem;
74 | flex-basis: 17.5rem;
75 | flex-wrap: nowrap;
76 | justify-content: center;
77 | padding: 0;
78 | }
79 | }
80 |
81 | .links-list {
82 | line-height: 1;
83 | text-decoration: none;
84 | vertical-align: middle;
85 |
86 | &__separator {
87 | opacity: 0.5;
88 | }
89 | }
90 |
91 | .contact {
92 | display: block;
93 | flex: 1;
94 | margin: 0;
95 | transition: transform 100ms ease-out;
96 |
97 | &__link {
98 | display: block;
99 | width: 100%;
100 | color: #fff;
101 | line-height: 1;
102 | }
103 |
104 | &__icon {
105 | width: 1.5rem;
106 | min-width: 20px;
107 | margin: auto;
108 | }
109 |
110 | &:hover {
111 | transform: scale(1.25);
112 | }
113 | }
114 |
115 | .signature {
116 | &::before,
117 | &::after {
118 | content: '';
119 | }
120 | }
121 |
--------------------------------------------------------------------------------
/src/styles/sections/hero.scss:
--------------------------------------------------------------------------------
1 | @use 'hero/hero';
2 |
--------------------------------------------------------------------------------
/src/styles/sections/live.scss:
--------------------------------------------------------------------------------
1 | @use 'src/styles/variables' as *;
2 |
3 | .section--live {
4 | background: url('/src/assets/images/trencadis/very-light.svg') #f2ede6 center /
5 | 640px repeat;
6 | }
7 |
8 | .live {
9 | &__dot {
10 | display: inline-block;
11 | width: 0.6em;
12 | height: 0.6em;
13 | border-radius: 100%;
14 | margin: 0 0.2em 0 -0.2em;
15 | animation: live 2.5s cubic-bezier(0.82, 0.23, 0.55, 0.95) infinite alternate;
16 | background: $c-primary;
17 | vertical-align: 0.05em;
18 |
19 | @keyframes live {
20 | from {
21 | opacity: 1;
22 | }
23 |
24 | to {
25 | opacity: 0.25;
26 | }
27 | }
28 |
29 | &--button {
30 | width: 12px;
31 | height: 12px;
32 | margin-right: 1ch;
33 | background: currentcolor;
34 | vertical-align: 0;
35 | }
36 | }
37 |
38 | &__description {
39 | margin: 0 0 2.5rem;
40 | font-size: 1.125rem;
41 | line-height: 2;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/styles/sections/participate.scss:
--------------------------------------------------------------------------------
1 | @use 'src/styles/variables' as *;
2 |
3 | .section--participate {
4 | position: relative;
5 | background: url('/src/assets/images/trencadis/brown.svg') #f2ede6
6 | calc(50% - 640px / 2) calc(50% - 320px) / 640px repeat;
7 |
8 | .section__title {
9 | display: inline-block;
10 | padding: 0.5rem 1rem;
11 | border: solid 7px #fff;
12 | border-radius: $border-radius-big;
13 | background: url('/src/assets/images/trencadis/light.svg') #f2eee7 center /
14 | 640px repeat;
15 | }
16 | }
17 |
18 | .participate {
19 | &__container {
20 | display: grid;
21 | gap: 2rem;
22 | grid-template: min-content min-content / 1fr 1fr;
23 |
24 | > div {
25 | display: flex;
26 | flex-direction: column;
27 |
28 | > dd {
29 | display: flex;
30 | flex-direction: column;
31 | flex-grow: 1;
32 | }
33 | }
34 | }
35 |
36 | &__item {
37 | padding: 2.5rem;
38 | border: solid #fff 7px;
39 | border-radius: $border-radius-big;
40 | background: url('/src/assets/images/trencadis/light.svg') #f2eee7 center /
41 | 640px repeat;
42 | background-color: $c-bg-light;
43 | text-align: left;
44 |
45 | &--mentor {
46 | order: 1;
47 | }
48 |
49 | &--volunteer {
50 | order: 2;
51 | }
52 |
53 | &--partner {
54 | order: 3;
55 | }
56 |
57 | &--sponsor {
58 | order: 4;
59 | }
60 | }
61 |
62 | &__title {
63 | margin: 0;
64 | font-size: 1.75rem;
65 | font-weight: bold;
66 | line-height: 0.8;
67 | }
68 |
69 | &__desc {
70 | flex-grow: 1;
71 | margin: 1rem 0;
72 | }
73 |
74 | &__bottom-row {
75 | display: flex;
76 | align-items: center;
77 | margin-bottom: -0.75rem;
78 | }
79 |
80 | &__message {
81 | display: inline-block;
82 | flex-grow: 1;
83 | margin: 0 -1rem 0 1rem;
84 | opacity: 0.75;
85 | }
86 |
87 | @media only screen and (max-width: 1000px) {
88 | &__container {
89 | gap: 1rem;
90 | }
91 | }
92 |
93 | @media only screen and (max-width: 700px) {
94 | &__container {
95 | grid-template: min-content min-content min-content min-content / auto;
96 | }
97 |
98 | &__item {
99 | padding: 2rem;
100 |
101 | &--volunteer {
102 | order: 1;
103 | }
104 |
105 | &--mentor {
106 | order: 2;
107 | }
108 |
109 | &--sponsor {
110 | order: 3;
111 | }
112 |
113 | &--partner {
114 | order: 4;
115 | }
116 | }
117 | }
118 | }
119 |
--------------------------------------------------------------------------------
/src/styles/sections/photos.scss:
--------------------------------------------------------------------------------
1 | .card--photos {
2 | margin-top: 2rem;
3 | }
4 |
5 | .photos__title {
6 | text-align: center;
7 | }
8 |
9 | .photo-grid {
10 | position: relative;
11 | display: grid;
12 | gap: 1em;
13 | grid-template: 1fr 1fr 1fr / 1fr 1fr 1fr;
14 | }
15 |
16 | .photo-grid__overlay {
17 | position: absolute;
18 | top: -1em;
19 | right: -1em;
20 | bottom: -1em;
21 | left: -1em;
22 | display: flex;
23 | align-items: center;
24 | justify-content: center;
25 | border-radius: 1em;
26 | background: rgb(0 0 0 / 50%);
27 | opacity: 0;
28 | transition: opacity 400ms ease-out;
29 | }
30 |
31 | .photo-grid__overlay-img {
32 | width: 25%;
33 | }
34 |
35 | .photo-grid:hover > .photo-grid__overlay {
36 | opacity: 1;
37 | }
38 |
39 | .photo-grid__photo {
40 | width: 100%;
41 | border-radius: 3px;
42 | }
43 |
44 | .photo-grid-wrapper {
45 | display: block;
46 | max-width: 700px;
47 | margin: auto;
48 | text-decoration: none;
49 | }
50 |
51 | .photo-grid__more {
52 | display: flex;
53 | flex-wrap: wrap;
54 | align-items: center;
55 | justify-content: center;
56 | border-radius: 3px;
57 | background: rgb(0 0 0 / 33%);
58 | color: var(--text-light);
59 | font-size: 5vw;
60 | font-weight: 900;
61 | line-height: 1;
62 | text-align: center;
63 | text-decoration: none;
64 | text-transform: uppercase;
65 | }
66 |
67 | .photo-grid__more-text--small {
68 | font-size: 0.85em;
69 | }
70 |
71 | @media only screen and (min-width: 40rem) {
72 | .photo-grid__more {
73 | font-size: 2rem;
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/src/styles/sections/sponsors/logo-alignments.scss:
--------------------------------------------------------------------------------
1 | .logo__image {
2 | &--midokura {
3 | padding: 0 0.5rem;
4 | }
5 |
6 | &--mundimoto {
7 | padding: 0 0.4em;
8 | }
9 |
10 | &--hp {
11 | padding: 1.2em;
12 | }
13 |
14 | &--mckinsey {
15 | padding: 1.6em;
16 | }
17 |
18 | &--restbai {
19 | padding: 0;
20 | }
21 |
22 | &--optiver {
23 | padding: 0;
24 | }
25 |
26 | &--capchase {
27 | padding: 1.6em;
28 | }
29 |
30 | &--ithinkupc {
31 | padding: 2.7em 0.4em 2.7em 0.8em;
32 | }
33 |
34 | &--strands {
35 | padding: 0;
36 | }
37 |
38 | &--huawei {
39 | padding: 0 1rem;
40 | }
41 |
42 | &--happyscribe {
43 | padding: 2.65em 0.4em;
44 | }
45 |
46 | &--floorfy {
47 | padding: 3em 0.4em;
48 | }
49 |
50 | &--typeform {
51 | padding: 2.7em 0.4em;
52 | }
53 |
54 | &--infojobs {
55 | padding: 2.3em 0.4em;
56 | }
57 |
58 | &--thoughtworks {
59 | padding: 3em 0.4em;
60 | }
61 |
62 | &--google {
63 | padding: 1.7em 0.4em;
64 | }
65 |
66 | &--skyscanner {
67 | padding: 1.2em 0.4em;
68 | }
69 |
70 | &--facebook {
71 | padding: 2.7em 0.4em;
72 | }
73 |
74 | &--vueling {
75 | padding: 2.1em 0.4em;
76 | }
77 |
78 | &--bunge {
79 | padding: 1rem;
80 | }
81 |
82 | &--github {
83 | padding: 2.5em 0.4em;
84 | }
85 |
86 | &--upc {
87 | padding: 1.25em 0.4em;
88 | }
89 |
90 | &--upc-50 {
91 | padding: 0.9em 0.4em;
92 | }
93 |
94 | &--fib {
95 | padding: 2.5em 0.4em;
96 | }
97 |
98 | &--telecos {
99 | padding: 1.5em 0.4em;
100 | }
101 |
102 | &--cfis {
103 | padding: 1.5em 0.4em;
104 | }
105 |
106 | &--stickermule {
107 | padding: 1.2em 0;
108 | }
109 |
110 | &--mlh {
111 | padding: 1em 2em;
112 | }
113 |
114 | &--cocacola {
115 | padding: 0.5rem;
116 | }
117 |
118 | &--coeinf {
119 | padding: 0.75em 0.4em;
120 | }
121 |
122 | &--ajuntament_de_barcelona {
123 | padding: 2.25em 0.4em;
124 | }
125 |
126 | &--digital_ocean {
127 | padding: 2.7em 0.6em;
128 | }
129 |
130 | &--twilio {
131 | padding: 1.1rem;
132 | }
133 |
134 | &--moncafe {
135 | padding: 0 1em;
136 | }
137 |
138 | &--birba {
139 | padding: 0.5em;
140 | }
141 |
142 | &--pura-fruta {
143 | padding: 0;
144 | }
145 |
146 | &--haribo {
147 | padding: 0 0.5rem;
148 | }
149 |
150 | &--dominos {
151 | padding: 0.6em;
152 | }
153 |
154 | &--nissin {
155 | padding: 1em;
156 | }
157 |
158 | &--zanuy {
159 | padding: 1em;
160 | }
161 |
162 | &--frit-ravich {
163 | padding: 0.8em;
164 | }
165 |
166 | &--cuetara {
167 | padding: 0.2em;
168 | }
169 |
170 | &--artiach {
171 | padding: 0.2em;
172 | }
173 | }
174 |
--------------------------------------------------------------------------------
/src/styles/sections/what-is-a-hackathon.scss:
--------------------------------------------------------------------------------
1 | @use 'sass:math';
2 | @use 'src/styles/variables' as *;
3 |
4 | .section--what-is-a-hackathon {
5 | overflow: visible;
6 | margin-top: 15px;
7 | background: url('/src/assets/images/trencadis/very-light.svg') #f2ede6 center /
8 | 640px repeat;
9 | }
10 |
11 | .content__wrapper--what-is-a-hackathon {
12 | padding-top: calc(2rem + 100px);
13 | margin-top: -100px;
14 |
15 | > img,
16 | > svg {
17 | width: 10rem;
18 | height: 10rem;
19 | }
20 | }
21 |
22 | $card-font-variation: 2px;
23 | $card-font-base: 16px;
24 | $card-padding-variation-h: 4 * 16px;
25 | $card-padding-variation-v: 1 * 16px;
26 | $card-padding-base: 15px;
27 |
28 | $breakpoint-small-screen: 500px;
29 | $breakpoint-mid-small-screen: 600px;
30 |
31 | .card--big {
32 | padding: clamp(
33 | #{$card-padding-base},
34 | calc(
35 | #{math.div(100vw * $card-padding-variation-v, $breakpoint-small-screen)} +
36 | #{($card-padding-base - $card-padding-variation-v)}
37 | ),
38 | #{$card-padding-base + $card-padding-variation-v}
39 | )
40 | clamp(
41 | #{$card-padding-base},
42 | calc(
43 | #{math.div(100vw * $card-padding-variation-h, $breakpoint-small-screen)} +
44 | #{($card-padding-base - $card-padding-variation-h)}
45 | ),
46 | #{$card-padding-base + $card-padding-variation-h}
47 | );
48 | margin: 10px;
49 | font-size: clamp(
50 | #{$card-font-base},
51 | calc(
52 | #{$card-font-base - $card-font-variation} + #{math.div(
53 | 100vw * $card-font-variation,
54 | $breakpoint-small-screen
55 | )}
56 | ),
57 | #{$card-font-base + $card-font-variation}
58 | );
59 | }
60 |
61 | .card--outline {
62 | }
63 |
64 | .card--mission {
65 | position: relative;
66 | display: grid;
67 | // margin-top: 6rem;
68 | // margin-bottom: 6rem;
69 | gap: clamp(
70 | #{$card-padding-base},
71 | calc(
72 | 100vw * #{math.div(
73 | $card-padding-variation-v,
74 | $breakpoint-mid-small-screen
75 | )} + #{$card-padding-base - $card-padding-variation-v}
76 | ),
77 | #{$card-padding-base + $card-padding-variation-v}
78 | );
79 | grid-template: auto / auto auto;
80 | place-content: center;
81 | place-items: center;
82 |
83 | @media only screen and (max-width: $breakpoint-mid-small-screen) {
84 | grid-template: auto auto / auto;
85 | }
86 |
87 | > img,
88 | > svg {
89 | width: 10rem;
90 | height: 10rem;
91 | }
92 |
93 | // &::before {
94 | // position: absolute;
95 | // border-width: 100px;
96 | // border-style: solid;
97 | // border-image: url('/src/assets/images/borders/crown.svg') 100 repeat;
98 | // border-image-outset: 80px;
99 | // content: '';
100 | // inset: 0;
101 | // }
102 | }
103 |
104 | .card__title {
105 | margin: 0 -0.5rem 1rem 0;
106 | font-size: 2rem;
107 | }
108 |
109 | .card__text {
110 | margin: 0;
111 |
112 | strong {
113 | font-size: 1.25em;
114 | font-weight: bold;
115 | line-height: 1;
116 | text-transform: uppercase;
117 | vertical-align: text-bottom;
118 | }
119 | }
120 |
121 | .card--covid {
122 | display: grid;
123 | padding-left: clamp(
124 | #{$card-padding-base},
125 | calc(
126 | 100vw * #{math.div(
127 | $card-padding-variation-v,
128 | $breakpoint-mid-small-screen
129 | )} + #{$card-padding-base - $card-padding-variation-v}
130 | ),
131 | #{$card-padding-base + $card-padding-variation-v}
132 | );
133 | border: solid 0.3333rem $c-bg-light;
134 | margin-top: 2rem;
135 | background-color: $c-bg-light;
136 | gap: clamp(
137 | #{$card-padding-base},
138 | calc(
139 | 100vw * #{math.div(
140 | $card-padding-variation-v,
141 | $breakpoint-mid-small-screen
142 | )} + #{$card-padding-base - $card-padding-variation-v}
143 | ),
144 | #{$card-padding-base + $card-padding-variation-v}
145 | );
146 | grid-template: auto / auto auto;
147 | place-content: center;
148 | place-items: center;
149 |
150 | @media only screen and (max-width: $breakpoint-mid-small-screen) {
151 | grid-template: auto auto / auto;
152 | }
153 |
154 | > img,
155 | > svg {
156 | width: 12rem;
157 | height: 12rem;
158 | }
159 | }
160 |
--------------------------------------------------------------------------------
/src/styles/shared/cookies.scss:
--------------------------------------------------------------------------------
1 | @use 'src/styles/variables' as *;
2 | @use 'sass:color';
3 |
4 | .gdpr {
5 | position: fixed;
6 | z-index: 100;
7 | right: 0.5rem;
8 | bottom: 0.5rem;
9 | left: 0.5rem;
10 | display: flex;
11 | max-width: 1000px;
12 | flex-wrap: wrap;
13 | align-items: center;
14 | justify-content: space-between;
15 | padding: 0.5rem;
16 | border: solid 2.5px currentcolor;
17 | border-radius: $border-radius-medium;
18 | margin: 0 auto;
19 | background-color: $c-gdpr-bg;
20 | box-shadow: 0 0.25rem 1rem rgb(0 0 0 / 30%);
21 | color: $c-gdpr-txt;
22 | transition: transform 400ms $ease-quad, opacity 400ms $ease-quad;
23 | // animation: gdpr-show 400ms $ease-bounce;
24 | // @keyframes gdpr-show {
25 | // from {transform: translateY(100%); opacity: 0.5;}
26 | // to {transform: translateY(0%); opacity: 1;}
27 | // }
28 |
29 | @media (min-width: 640px) {
30 | right: 1.5rem;
31 | bottom: 1.5rem;
32 | left: 1.5rem;
33 | padding: 1rem;
34 | }
35 |
36 | &--hidden {
37 | display: none;
38 | opacity: 0;
39 | pointer-events: none;
40 | transform: translateY(100%);
41 | }
42 |
43 | &__emoji {
44 | margin-right: 0.5rem;
45 | cursor: default;
46 | font-size: 1.5rem;
47 | line-height: 1;
48 | transition: transform 250ms $ease-bounce;
49 | @media (min-width: 640px) {
50 | margin-right: 0.75rem;
51 | }
52 |
53 | &:hover {
54 | transform: rotate(90deg);
55 | }
56 | }
57 |
58 | &__text {
59 | flex: 1;
60 | margin: 0;
61 | font-size: 0.85rem;
62 | font-weight: 600;
63 | line-height: 1.5;
64 | @media (min-width: 640px) {
65 | font-size: 1rem;
66 | }
67 | }
68 |
69 | &__link {
70 | // text-shadow: 0 0 1rem rgb(0 0 0 / 66.7%);
71 | }
72 | // &__disclaimer {
73 | // margin-right: 0.5rem;
74 | // }
75 | &__button {
76 | flex-shrink: 0;
77 | padding: 0.5rem;
78 | border: 0;
79 | border-radius: $border-radius-small;
80 | margin: -0.25rem -0.25rem -0.25rem 0;
81 | background-color: transparent;
82 | color: $c-gdpr-txt;
83 | cursor: pointer;
84 |
85 | &:hover,
86 | &:focus {
87 | background-color: color.adjust($c-gdpr-txt, $alpha: -0.8);
88 | outline: none;
89 | }
90 | }
91 |
92 | &__close-icon {
93 | display: block;
94 | width: 1.5rem;
95 | height: 1.5rem;
96 | color: currentcolor;
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/src/styles/shared/fonts.scss:
--------------------------------------------------------------------------------
1 | @import url('~@fontsource/montserrat/400.css');
2 | @import url('~@fontsource/montserrat/400-italic.css');
3 | @import url('~@fontsource/montserrat/500.css');
4 | @import url('~@fontsource/montserrat/500-italic.css');
5 | @import url('~@fontsource/montserrat/600.css');
6 | @import url('~@fontsource/montserrat/700.css');
7 | @import url('~@fontsource/montserrat/800.css');
8 | @import url('~@fontsource/montserrat/800-italic.css');
9 |
--------------------------------------------------------------------------------
/src/styles/shared/nav.scss:
--------------------------------------------------------------------------------
1 | @use 'src/styles/variables' as *;
2 |
3 | $nav-height: 3rem;
4 |
5 | body {
6 | padding-top: $nav-height;
7 | }
8 |
9 | .nav {
10 | position: fixed;
11 | z-index: 10;
12 | top: 0;
13 | right: 0;
14 | left: 0;
15 | overflow: hidden;
16 | height: $nav-height;
17 | backdrop-filter: blur(10px);
18 | background-color: rgb(255 255 255 / 60%);
19 | box-shadow: 0 0 1rem rgb(0 0 0 / 30%);
20 |
21 | &__list {
22 | display: flex;
23 | height: 100%;
24 | justify-content: space-between;
25 | padding: 0;
26 | margin: 0;
27 | list-style: none;
28 | }
29 |
30 | &__link {
31 | display: flex;
32 | height: 100%;
33 | align-items: center;
34 | padding: 0 0.5rem;
35 | color: $c-txt-dark;
36 | font-weight: bold;
37 | text-align: center;
38 | text-decoration: none;
39 | }
40 | }
41 |
42 | // TODO: show navbar when it's ready (remember to remove the class in the html)
43 | .hide-navbar {
44 | padding-top: 0;
45 |
46 | .nav {
47 | display: none;
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/src/styles/shared/tags.scss:
--------------------------------------------------------------------------------
1 | @use 'sass:color';
2 | @use 'src/styles/variables' as *;
3 |
4 | html {
5 | scroll-behavior: smooth;
6 | }
7 |
8 | a {
9 | color: $c-primary-accessible;
10 | }
11 |
12 | ::selection {
13 | background-color: color.adjust($c-primary, $alpha: -0.01);
14 | color: $c-txt-light;
15 | }
16 |
17 | img::selection {
18 | background-color: color.adjust($c-primary, $alpha: -0.5);
19 | }
20 |
21 | p {
22 | line-height: 1.6667;
23 | }
24 |
25 | dd {
26 | margin-left: 0;
27 | }
28 |
29 | code {
30 | padding: 0 0.35rem;
31 | border-radius: 0.25rem;
32 | background-color: color.adjust($c-txt-light, $alpha: -0.85);
33 | font-family: ui-monospace, Menlo, Monaco, 'Cascadia Mono', 'Segoe UI Mono',
34 | 'Roboto Mono', 'Oxygen Mono', 'Ubuntu Monospace', 'Source Code Pro',
35 | 'Fira Mono', 'Droid Sans Mono', 'Courier New', monospace;
36 | }
37 |
38 | :focus {
39 | outline: none;
40 | }
41 |
42 | :focus-visible {
43 | outline: solid 0.25rem currentcolor !important;
44 | }
45 |
--------------------------------------------------------------------------------
/src/styles/style.scss:
--------------------------------------------------------------------------------
1 | /* Keep the right order, it's important for overrides */
2 | // @import "normalize.css";
3 |
4 | @use 'shared/fonts';
5 |
6 | @use 'shared/tags';
7 | @use 'shared/nav';
8 | @use 'shared/body';
9 | @use 'shared/cookies';
10 |
11 | @use 'sections/about-us';
12 | @use 'sections/during';
13 | @use 'sections/live';
14 | @use 'sections/faq';
15 | @use 'sections/follow-us';
16 | @use 'sections/footer';
17 | @use 'sections/hero';
18 | @use 'sections/participate';
19 | @use 'sections/photos';
20 | @use 'sections/sponsors-and-partners';
21 | @use 'sections/what-is-a-hackathon';
22 |
23 | @use 'sections/sponsors/logo-alignments';
24 |
--------------------------------------------------------------------------------
/src/styles/variables.scss:
--------------------------------------------------------------------------------
1 | $c-palette-blue: #494136;
2 | $c-palette-black: #241e16;
3 | $c-palette-black-light: #494136;
4 |
5 | $c-bg-darker: #241e16;
6 | $c-bg-dark: #494136;
7 | $c-bg-light: #eae2d6;
8 | $c-bg-lighter: #fff;
9 |
10 | $c-primary: #1cae86;
11 | $c-primary-accessible: #158566;
12 | $c-txt-dark: #000;
13 | $c-txt-light: #fff;
14 |
15 | $c-hero-shadow: hsl(287deg 100% 50% / 66%);
16 |
17 | $c-faq-bg: $c-palette-black-light;
18 | $c-faq-block: $c-bg-light;
19 | $c-faq-question: #dabc98;
20 | $c-faq-hover: linear-gradient(135deg, #e6c287, #deb588);
21 |
22 | $c-during-border: $c-bg-dark;
23 | $c-during-bg: $c-bg-lighter;
24 | $c-during-bg-card: $c-bg-light;
25 |
26 | $c-live-bg: $c-palette-black-light;
27 |
28 | // $c-sponsors-bg: #f1f5ff;
29 | $c-sponsors-shadow: hsl(23deg 100% 50% / 10%);
30 |
31 | $c-about-us-bg: $c-palette-black-light;
32 | $c-about-us-bg-card: $c-bg-light;
33 |
34 | $c-gdpr-bg: #fff;
35 | $c-gdpr-txt: $c-txt-dark;
36 |
37 | $ease-bounce: cubic-bezier(0.18, 0.89, 0.32, 1.28);
38 | $ease-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
39 | $ease-quad-in: cubic-bezier(0.55, 0.09, 0.68, 0.53);
40 | $ease-cubic: cubic-bezier(0.22, 0.61, 0.36, 1);
41 |
42 | $border-radius-big: 1rem;
43 | $border-radius-medium: 0.75rem;
44 | $border-radius-small: 0.5rem;
45 |
--------------------------------------------------------------------------------
/stylelint.config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @type {import("stylelint").Configuration}
3 | */
4 | module.exports = {
5 | extends: [
6 | 'stylelint-config-standard',
7 | 'stylelint-config-sass-guidelines',
8 | 'stylelint-config-idiomatic-order',
9 | 'stylelint-config-prettier',
10 | ],
11 |
12 | plugins: ['stylelint-order', 'stylelint-scss'],
13 |
14 | rules: {
15 | 'block-no-empty': null,
16 | 'function-no-unknown': null,
17 | 'max-nesting-depth': null,
18 | 'selector-max-compound-selectors': null, // TODO: set to 3
19 | 'order/properties-alphabetical-order': null,
20 | 'selector-class-pattern': [
21 | '^(?:(?:o|c|u|t|s|is|has|_|js|qa)-)?[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*(?:__[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*)?(?:--[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*)?(?:\\[.+\\])?$',
22 | {
23 | message: 'Class names must follow BEM convention',
24 | },
25 | ],
26 | 'declaration-block-no-duplicate-properties': true,
27 | },
28 | }
29 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "esnext",
4 | "module": "esnext",
5 | "strict": true,
6 | "importHelpers": true,
7 | "moduleResolution": "node",
8 | "skipLibCheck": true,
9 | "esModuleInterop": true,
10 | "allowSyntheticDefaultImports": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "removeComments": true,
13 | "sourceMap": true,
14 | "baseUrl": ".",
15 | "lib": ["esnext", "dom", "dom.iterable", "scripthost"]
16 | },
17 | "include": ["src"],
18 | "exclude": ["node_modules"],
19 | "$schema": "https://json.schemastore.org/tsconfig"
20 | }
21 |
--------------------------------------------------------------------------------