diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..a44058c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +.DS_Store +node_modules +dist \ No newline at end of file diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000..fb4572c --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,51 @@ +name: Docker Image CI + +on: + push: + branches: [ "main", "feature/website-2.0" ] + pull_request: + branches: [ "main" ] + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + + build: + + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + + steps: + - uses: actions/checkout@v2 + - name: Node install and build + uses: actions/setup-node@v3 + with: + node-version: '20.x' + - run: npm i + - run: npm run build --if-present + - name: Log in to the Container registry + uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push Docker image + uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml deleted file mode 100644 index d7fe848..0000000 --- a/.github/workflows/pages.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Deploy to GitHub Pages - -on: - push: - branches: [main] - -permissions: - contents: read - pages: write - id-token: write - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout Repository - uses: actions/checkout@v3 - - name: Install, Build, and Upload - uses: withastro/action@v0 - - deploy: - needs: build - runs-on: ubuntu-latest - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v1 diff --git a/.gitignore b/.gitignore index 7329a85..02c0d6e 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ pnpm-debug.log* # macOS-specific files .DS_Store +.next diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6f97d5c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,7 @@ +FROM nginx:alpine + +RUN rm /etc/nginx/conf.d/default.conf +COPY ./nginx/nginx.conf /etc/nginx/conf.d + +COPY ./out /usr/share/nginx/html/ +EXPOSE 80 diff --git a/astro.config.mjs b/astro.config.mjs deleted file mode 100644 index 17aafa3..0000000 --- a/astro.config.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'astro/config'; -import tailwind from '@astrojs/tailwind'; - -export default defineConfig({ - integrations: [tailwind()], - site: 'https://hackhpi.org/', -}); diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 0000000..4f11a03 --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/next.config.js b/next.config.js new file mode 100644 index 0000000..01111ff --- /dev/null +++ b/next.config.js @@ -0,0 +1,17 @@ +/** + * @type {import('next').NextConfig} + */ +const nextConfig = { + output: 'export', + + // Optional: Change links `/me` -> `/me/` and emit `/me.html` -> `/me/index.html` + // trailingSlash: true, + + // Optional: Prevent automatic `/me` -> `/me/`, instead preserve `href` + // skipTrailingSlashRedirect: true, + + // Optional: Change the output directory `out` -> `dist` + // distDir: 'dist', +} + +module.exports = nextConfig \ No newline at end of file diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 0000000..5d36b9a --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,11 @@ +server { + listen 80; + root /usr/share/nginx/html; + index index.html; + + error_page 404 /404.html; + + location / { + try_files $uri $uri/ $uri.html =404; + } +} diff --git a/package.json b/package.json index 078a39b..b175bad 100644 --- a/package.json +++ b/package.json @@ -1,23 +1,34 @@ { "name": "hackhpi-website", - "type": "module", - "version": "0.0.1", + "version": "1.0.1", "private": true, "scripts": { - "dev": "astro dev", - "start": "astro dev", - "build": "astro build", - "preview": "astro preview", - "astro": "astro" + "dev": "next dev", + "start": "next dev", + "build": "next build", + "lint": "next lint" }, "dependencies": { - "@astrojs/tailwind": "^5.0.0", - "astro": "^3.1.1", - "astro-icon": "^0.8.1", - "tailwindcss": "^3.3.3" + "@emotion/cache": "^11.11.0", + "@emotion/react": "^11.11.3", + "@emotion/styled": "^11.11.0", + "@fontsource-variable/open-sans": "^5.0.23", + "@mui/icons-material": "^5.15.5", + "@mui/lab": "^5.0.0-alpha.163", + "@mui/material": "^5.15.5", + "@mui/material-nextjs": "^5.15.9", + "@types/node": "^20.11.24", + "@types/react": "^18.2.48", + "@types/react-dom": "^18.2.18", + "axios": "^1.6.7", + "next": "^14.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-type-animation": "^3.2.0", + "react-visibility-sensor": "^5.1.1", + "sharp": "^0.33.2" }, "devDependencies": { - "@tailwindcss/typography": "^0.5.10", "prettier": "^3.0.3", "prettier-plugin-astro": "^0.12.0", "prettier-plugin-tailwindcss": "^0.5.4", diff --git a/public/HackHPI24_white.png b/public/HackHPI24_white.png new file mode 100644 index 0000000..52cbf57 Binary files /dev/null and b/public/HackHPI24_white.png differ diff --git a/public/HackHPI24_white.svg b/public/HackHPI24_white.svg new file mode 100644 index 0000000..e3ff184 --- /dev/null +++ b/public/HackHPI24_white.svg @@ -0,0 +1,84 @@ + + + + + + + + + white + + + + + + + + + + + white + + + + diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index 2823939..0000000 Binary files a/public/favicon.ico and /dev/null differ diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000..18c1e62 Binary files /dev/null and b/public/favicon.png differ diff --git a/public/fonts/NeoSansStdBold.otf b/public/fonts/NeoSansStdBold.otf new file mode 100644 index 0000000..77f2f6c Binary files /dev/null and b/public/fonts/NeoSansStdBold.otf differ diff --git a/public/fonts/NeoSansStdLight.otf b/public/fonts/NeoSansStdLight.otf new file mode 100644 index 0000000..81cfb8e Binary files /dev/null and b/public/fonts/NeoSansStdLight.otf differ diff --git a/public/fonts/NeoSansStdRegular.otf b/public/fonts/NeoSansStdRegular.otf new file mode 100644 index 0000000..496752f Binary files /dev/null and b/public/fonts/NeoSansStdRegular.otf differ diff --git a/public/hero.jpg b/public/hero.jpg deleted file mode 100644 index 773d41e..0000000 Binary files a/public/hero.jpg and /dev/null differ diff --git a/public/img/sponsors/dataport.jpeg b/public/img/sponsors/dataport.jpeg deleted file mode 100644 index 1540cdc..0000000 Binary files a/public/img/sponsors/dataport.jpeg and /dev/null differ diff --git a/public/img/sponsors/nexenio.jpeg b/public/img/sponsors/nexenio.jpeg deleted file mode 100644 index f6a7a38..0000000 Binary files a/public/img/sponsors/nexenio.jpeg and /dev/null differ diff --git a/public/img/team/an_nguyen.jpg b/public/img/team/an_nguyen.jpg deleted file mode 100644 index 04fc785..0000000 Binary files a/public/img/team/an_nguyen.jpg and /dev/null differ diff --git a/public/img/team/benedikt_helfrich.jpg b/public/img/team/benedikt_helfrich.jpg deleted file mode 100644 index 3de1e95..0000000 Binary files a/public/img/team/benedikt_helfrich.jpg and /dev/null differ diff --git a/public/img/team/benjamin_frost.jpg b/public/img/team/benjamin_frost.jpg deleted file mode 100644 index 42ee32e..0000000 Binary files a/public/img/team/benjamin_frost.jpg and /dev/null differ diff --git a/public/img/team/cedric_rische.jpg b/public/img/team/cedric_rische.jpg deleted file mode 100644 index 0707923..0000000 Binary files a/public/img/team/cedric_rische.jpg and /dev/null differ diff --git a/public/img/team/leon_hermann.jpg b/public/img/team/leon_hermann.jpg deleted file mode 100644 index 5ce766e..0000000 Binary files a/public/img/team/leon_hermann.jpg and /dev/null differ diff --git a/public/img/team/mathilda_heise.jpg b/public/img/team/mathilda_heise.jpg deleted file mode 100644 index 44bc55d..0000000 Binary files a/public/img/team/mathilda_heise.jpg and /dev/null differ diff --git a/public/img/team/matti_schmidt.jpg b/public/img/team/matti_schmidt.jpg deleted file mode 100644 index 808598d..0000000 Binary files a/public/img/team/matti_schmidt.jpg and /dev/null differ diff --git a/public/img/team/nikolas_rieger.jpg b/public/img/team/nikolas_rieger.jpg deleted file mode 100644 index 9fda050..0000000 Binary files a/public/img/team/nikolas_rieger.jpg and /dev/null differ diff --git a/public/img/team/placeholder.jpg b/public/img/team/placeholder.jpg deleted file mode 100644 index 3ab91fd..0000000 Binary files a/public/img/team/placeholder.jpg and /dev/null differ diff --git a/public/img/team/tanja_lehmann.jpg b/public/img/team/tanja_lehmann.jpg deleted file mode 100644 index d879191..0000000 Binary files a/public/img/team/tanja_lehmann.jpg and /dev/null differ diff --git a/public/img/team/theo_klinke.jpg b/public/img/team/theo_klinke.jpg deleted file mode 100644 index abfbef8..0000000 Binary files a/public/img/team/theo_klinke.jpg and /dev/null differ diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..05bf7b6 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "HackHPI 24", + "short_name": "HackHPI 2024", + "description": "Explore the future of urban living at HPI in Potsdam. Join motivated students for two days of innovation, workshops, and collaboration with top-notch sponsors offering support and expertise. Tackle a challenge and dive into the world of smart cities.", + "start_url": "/", + "display": "standalone", + "background_color": "#13101B", + "theme_color": "#13101B" +} \ No newline at end of file diff --git a/public/mazeBackground.svg b/public/mazeBackground.svg new file mode 100644 index 0000000..48c2306 --- /dev/null +++ b/public/mazeBackground.svg @@ -0,0 +1,445 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/imprint/page.tsx b/src/app/imprint/page.tsx new file mode 100644 index 0000000..b34f210 --- /dev/null +++ b/src/app/imprint/page.tsx @@ -0,0 +1,6 @@ +import Imprint from "../../components/Imprint/Imprint"; +import HackHPIWrapper from "../../components/Theme/HackHPIWrapper"; + +export default function Page(){ + return +} \ No newline at end of file diff --git a/src/app/layout.css b/src/app/layout.css new file mode 100644 index 0000000..9a0bea1 --- /dev/null +++ b/src/app/layout.css @@ -0,0 +1,15 @@ +@font-face { + font-family: "Neo Sans"; + src: url("/fonts/NeoSansStdRegular.otf") format("opentype"); +} + +@font-face { + font-family: Neo Sans; + font-weight: bold; + src: url("/fonts/NeoSansStdBold.otf") format("opentype"); +} +@font-face { + font-family: Neo Sans; + font-weight: 100; + src: url("/fonts/NeoSansStdLight.otf") format("opentype"); +} \ No newline at end of file diff --git a/src/app/layout.tsx b/src/app/layout.tsx new file mode 100644 index 0000000..c47f7ad --- /dev/null +++ b/src/app/layout.tsx @@ -0,0 +1,38 @@ +import React from "react"; +import {AppRouterCacheProvider} from "@mui/material-nextjs/v13-appRouter"; +import HackHPIWrapper from "../components/Theme/HackHPIWrapper"; +import Footer from "../components/Footer/Footer"; +import './layout.css' + + +export default function RootLayout({children,}: { children: React.ReactNode }) { + return ( + + + + + + + HackHPI 2024 | tomorrow's reality, today's vision. smart cities edition. + + + + + + +
+
+ + {children} + +
+
+
+
+
+
+ + + ) +} \ No newline at end of file diff --git a/src/app/page.tsx b/src/app/page.tsx new file mode 100644 index 0000000..0fd7308 --- /dev/null +++ b/src/app/page.tsx @@ -0,0 +1,31 @@ +import {VerifiedChecker} from "../components/VerifiedChecker/VerifiedChecker"; +import WhatToExpect from "../components/WhatToExpect/WhatToExpect"; +import Sponsors from "../components/Sponsors/Sponsors"; +import Registration from "../components/Registration/Registration"; +import Newsletter from "../components/Newsletter/Newsletter"; +import {TimeTable} from "../components/TimeTable/TimeTable"; +import {Gallery} from "../components/Gallery/Gallery"; +import {Faq} from "../components/Faq/Faq"; +import Team from "../components/Team/Team"; +import Speakers from "../components/Speakers/Speakers"; +import {Features} from "../components/Features/Features"; +import LandingImage from "../components/LandingImage/LandingImage"; + +export default function Page() { + return ( + <> + + + + + + + + + + + + + + ) +} \ No newline at end of file diff --git a/src/app/privacy/page.tsx b/src/app/privacy/page.tsx new file mode 100644 index 0000000..8befc34 --- /dev/null +++ b/src/app/privacy/page.tsx @@ -0,0 +1,217 @@ +import { Box, Container, Link, Stack, Typography } from "@mui/material"; + +export default function Page() { + return ( + + + Datenschutz­erklärung + + 1. Datenschutz auf einen Blick + Allgemeine Hinweise + Die folgenden Hinweise geben einen einfachen Überblick darüber, was mit Ihren personenbezogenen Daten passiert, wenn Sie diese Website besuchen. Personenbezogene Daten sind alle Daten, mit denen Sie persönlich identifiziert werden können. Ausführliche Informationen zum Thema Datenschutz entnehmen Sie unserer unter diesem Text aufgeführten Datenschutzerklärung. + Datenerfassung auf dieser Website + Wer ist verantwortlich für die Datenerfassung auf dieser Website? + Die Datenverarbeitung auf dieser Website erfolgt durch den Websitebetreiber. Dessen Kontaktdaten können Sie dem Abschnitt „Hinweis zur Verantwortlichen Stelle“ in dieser Datenschutzerklärung entnehmen. + Wie erfassen wir Ihre Daten? + Ihre Daten werden zum einen dadurch erhoben, dass Sie uns diese mitteilen. Hierbei kann es sich z. B. um Daten handeln, die Sie in ein Kontaktformular eingeben. + Andere Daten werden automatisch oder nach Ihrer Einwilligung beim Besuch der Website durch unsere IT-Systeme erfasst. Das sind vor allem technische Daten (z. B. Internetbrowser, Betriebssystem oder Uhrzeit des Seitenaufrufs). Die Erfassung dieser Daten erfolgt automatisch, sobald Sie diese Website betreten. + Wofür nutzen wir Ihre Daten? + Ein Teil der Daten wird erhoben, um eine fehlerfreie Bereitstellung der Website zu gewährleisten. Andere Daten können zur Analyse Ihres Nutzerverhaltens verwendet werden. + Welche Rechte haben Sie bezüglich Ihrer Daten? + Sie haben jederzeit das Recht, unentgeltlich Auskunft über Herkunft, Empfänger und Zweck Ihrer gespeicherten personenbezogenen Daten zu erhalten. Sie haben außerdem ein Recht, die Berichtigung oder Löschung dieser Daten zu verlangen. Wenn Sie eine Einwilligung zur Datenverarbeitung erteilt haben, können Sie diese Einwilligung jederzeit für die Zukunft widerrufen. Außerdem haben Sie das Recht, unter bestimmten Umständen die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen. Des Weiteren steht Ihnen ein Beschwerderecht bei der zuständigen Aufsichtsbehörde zu. + Hierzu sowie zu weiteren Fragen zum Thema Datenschutz können Sie sich jederzeit an uns wenden. + + + 2. Hosting und Content Delivery Networks (CDN) + Wir hosten die Inhalte unserer Website bei folgendem Anbieter: + Hetzner + Anbieter ist die Hetzner Online GmbH, Industriestr. 25, 91710 Gunzenhausen (nachfolgend Hetzner). + + Details entnehmen Sie der Datenschutzerklärung von Hetzner: + https://www.hetzner.com/de/rechtliches/datenschutz + . + + Die Verwendung von Hetzner erfolgt auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO. Wir haben ein berechtigtes Interesse an einer möglichst zuverlässigen Darstellung unserer Website. Sofern eine entsprechende Einwilligung abgefragt wurde, erfolgt die Verarbeitung ausschließlich auf Grundlage von Art. 6 Abs. 1 lit. a DSGVO und § 25 Abs. 1 TTDSG, soweit die Einwilligung die Speicherung von Cookies oder den Zugriff auf Informationen im Endgerät des Nutzers (z. B. Device-Fingerprinting) im Sinne des TTDSG umfasst. Die Einwilligung ist jederzeit widerrufbar. + Auftragsverarbeitung + Wir haben einen Vertrag über Auftragsverarbeitung (AVV) zur Nutzung des oben genannten Dienstes geschlossen. Hierbei handelt es sich um einen datenschutzrechtlich vorgeschriebenen Vertrag, der gewährleistet, dass dieser die personenbezogenen Daten unserer Websitebesucher nur nach unseren Weisungen und unter Einhaltung der DSGVO verarbeitet. + Cloudflare + Wir nutzen den Service „Cloudflare“. Anbieter ist die Cloudflare Inc., 101 Townsend St., San Francisco, CA 94107, USA (im Folgenden „Cloudflare”). + Cloudflare bietet ein weltweit verteiltes Content Delivery Network mit DNS an. Dabei wird technisch der Informationstransfer zwischen Ihrem Browser und unserer Website über das Netzwerk von Cloudflare geleitet. Das versetzt Cloudflare in die Lage, den Datenverkehr zwischen Ihrem Browser und unserer Website zu analysieren und als Filter zwischen unseren Servern und potenziell bösartigem Datenverkehr aus dem Internet zu dienen. Hierbei kann Cloudflare auch Cookies oder sonstige Technologien zur Wiedererkennung von Internetnutzern einsetzen, die jedoch allein zum hier beschriebenen Zweck verwendet werden. + Der Einsatz von Cloudflare beruht auf unserem berechtigten Interesse an einer möglichst fehlerfreien und sicheren Bereitstellung unseres Webangebotes (Art. 6 Abs. 1 lit. f DSGVO). + + Die Datenübertragung in die USA wird auf die Standardvertragsklauseln der EU-Kommission gestützt. Details finden Sie hier: + https://www.cloudflare.com/privacypolicy/ + . + + + Weitere Informationen zum Thema Sicherheit und Datenschutz bei Cloudflare finden Sie hier: + https://www.cloudflare.com/privacypolicy/ + . + + + Das Unternehmen verfügt über eine Zertifizierung nach dem „EU-US Data Privacy Framework“ (DPF). Der DPF ist ein Übereinkommen zwischen der Europäischen Union und den USA, der die Einhaltung europäischer Datenschutzstandards bei Datenverarbeitungen in den USA gewährleisten soll. Jedes nach dem DPF zertifizierte Unternehmen verpflichtet sich, diese Datenschutzstandards einzuhalten. Weitere Informationen hierzu erhalten Sie vom Anbieter unter folgendem Link: + https://www.dataprivacyframework.gov/s/participant-search/participant-detail?contact=true&id=a2zt0000000GnZKAA0&status=Active + + + + 3. Allgemeine Hinweise und Pflicht­informationen + Datenschutz + Die Betreiber dieser Seiten nehmen den Schutz Ihrer persönlichen Daten sehr ernst. Wir behandeln Ihre personenbezogenen Daten vertraulich und entsprechend den gesetzlichen Datenschutzvorschriften sowie dieser Datenschutzerklärung. + Wenn Sie diese Website benutzen, werden verschiedene personenbezogene Daten erhoben. Personenbezogene Daten sind Daten, mit denen Sie persönlich identifiziert werden können. Die vorliegende Datenschutzerklärung erläutert, welche Daten wir erheben und wofür wir sie nutzen. Sie erläutert auch, wie und zu welchem Zweck das geschieht. + Wir weisen darauf hin, dass die Datenübertragung im Internet (z. B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich. + Hinweis zur verantwortlichen Stelle + Die verantwortliche Stelle für die Datenverarbeitung auf dieser Website ist: + + HackHPI Klub
+ am Hasso-Plattner-Institut
+ Prof.-Dr.-Helmert-Str. 2-3
+ 14482 Potsdam +
+ + + E-Mail: team@hackhpi.org + + Verantwortliche Stelle ist die natürliche oder juristische Person, die allein oder gemeinsam mit anderen über die Zwecke und Mittel der Verarbeitung von personenbezogenen Daten (z. B. Namen, E-Mail-Adressen o. Ä.) entscheidet. + + Speicherdauer + Soweit innerhalb dieser Datenschutzerklärung keine speziellere Speicherdauer genannt wurde, verbleiben Ihre personenbezogenen Daten bei uns, bis der Zweck für die Datenverarbeitung entfällt. Wenn Sie ein berechtigtes Löschersuchen geltend machen oder eine Einwilligung zur Datenverarbeitung widerrufen, werden Ihre Daten gelöscht, sofern wir keine anderen rechtlich zulässigen Gründe für die Speicherung Ihrer personenbezogenen Daten haben (z. B. steuer- oder handelsrechtliche Aufbewahrungsfristen); im letztgenannten Fall erfolgt die Löschung nach Fortfall dieser Gründe. + Allgemeine Hinweise zu den Rechtsgrundlagen der Datenverarbeitung auf dieser Website + Sofern Sie in die Datenverarbeitung eingewilligt haben, verarbeiten wir Ihre personenbezogenen Daten auf Grundlage von Art. 6 Abs. 1 lit. a DSGVO bzw. Art. 9 Abs. 2 lit. a DSGVO, sofern besondere Datenkategorien nach Art. 9 Abs. 1 DSGVO verarbeitet werden. Im Falle einer ausdrücklichen Einwilligung in die Übertragung personenbezogener Daten in Drittstaaten erfolgt die Datenverarbeitung außerdem auf Grundlage von Art. 49 Abs. 1 lit. a DSGVO. Sofern Sie in die Speicherung von Cookies oder in den Zugriff auf Informationen in Ihr Endgerät (z. B. via Device-Fingerprinting) eingewilligt haben, erfolgt die Datenverarbeitung zusätzlich auf Grundlage von § 25 Abs. 1 TTDSG. Die Einwilligung ist jederzeit widerrufbar. Sind Ihre Daten zur Vertragserfüllung oder zur Durchführung vorvertraglicher Maßnahmen erforderlich, verarbeiten wir Ihre Daten auf Grundlage des Art. 6 Abs. 1 lit. b DSGVO. Des Weiteren verarbeiten wir Ihre Daten, sofern diese zur Erfüllung einer rechtlichen Verpflichtung erforderlich sind auf Grundlage von Art. 6 Abs. 1 lit. c DSGVO. Die Datenverarbeitung kann ferner auf Grundlage unseres berechtigten Interesses nach Art. 6 Abs. 1 lit. f DSGVO erfolgen. Über die jeweils im Einzelfall einschlägigen Rechtsgrundlagen wird in den folgenden Absätzen dieser Datenschutzerklärung informiert. + Hinweis zur Datenweitergabe in datenschutzrechtlich nicht sichere Drittstaaten sowie die Weitergabe an US-Unternehmen, die nicht DPF-zertifiziert sind + Wir verwenden unter anderem Tools von Unternehmen mit Sitz in datenschutzrechtlich nicht sicheren Drittstaaten sowie US-Tools, deren Anbieter nicht nach dem EU-US-Data Privacy Framework (DPF) zertifiziert sind. Wenn diese Tools aktiv sind, können Ihre personenbezogene Daten in diese Staaten übertragen und dort verarbeitet werden. Wir weisen darauf hin, dass in datenschutzrechtlich unsicheren Drittstaaten kein mit der EU vergleichbares Datenschutzniveau garantiert werden kann. + Wir weisen darauf hin, dass die USA als sicherer Drittstaat grundsätzlich ein mit der EU vergleichbares Datenschutzniveau aufweisen. Eine Datenübertragung in die USA ist danach zulässig, wenn der Empfänger eine Zertifizierung unter dem „EU-US Data Privacy Framework“ (DPF) besitzt oder über geeignete zusätzliche Garantien verfügt. Informationen zu Übermittlungen an Drittstaaten einschließlich der Datenempfänger finden Sie in dieser Datenschutzerklärung. + Empfänger von personenbezogenen Daten + Im Rahmen unserer Geschäftstätigkeit arbeiten wir mit verschiedenen externen Stellen zusammen. Dabei ist teilweise auch eine Übermittlung von personenbezogenen Daten an diese externen Stellen erforderlich. Wir geben personenbezogene Daten nur dann an externe Stellen weiter, wenn dies im Rahmen einer Vertragserfüllung erforderlich ist, wenn wir gesetzlich hierzu verpflichtet sind (z. B. Weitergabe von Daten an Steuerbehörden), wenn wir ein berechtigtes Interesse nach Art. 6 Abs. 1 lit. f DSGVO an der Weitergabe haben oder wenn eine sonstige Rechtsgrundlage die Datenweitergabe erlaubt. Beim Einsatz von Auftragsverarbeitern geben wir personenbezogene Daten unserer Kunden nur auf Grundlage eines gültigen Vertrags über Auftragsverarbeitung weiter. Im Falle einer gemeinsamen Verarbeitung wird ein Vertrag über gemeinsame Verarbeitung geschlossen. + Widerruf Ihrer Einwilligung zur Datenverarbeitung + Viele Datenverarbeitungsvorgänge sind nur mit Ihrer ausdrücklichen Einwilligung möglich. Sie können eine bereits erteilte Einwilligung jederzeit widerrufen. Die Rechtmäßigkeit der bis zum Widerruf erfolgten Datenverarbeitung bleibt vom Widerruf unberührt. + Widerspruchsrecht gegen die Datenerhebung in besonderen Fällen sowie gegen Direktwerbung (Art. 21 DSGVO) + WENN DIE DATENVERARBEITUNG AUF GRUNDLAGE VON ART. 6 ABS. 1 LIT. E ODER F DSGVO ERFOLGT, HABEN SIE JEDERZEIT DAS RECHT, AUS GRÜNDEN, DIE SICH AUS IHRER BESONDEREN SITUATION ERGEBEN, GEGEN DIE VERARBEITUNG IHRER PERSONENBEZOGENEN DATEN WIDERSPRUCH EINZULEGEN; DIES GILT AUCH FÜR EIN AUF DIESE BESTIMMUNGEN GESTÜTZTES PROFILING. DIE JEWEILIGE RECHTSGRUNDLAGE, AUF DENEN EINE VERARBEITUNG BERUHT, ENTNEHMEN SIE DIESER DATENSCHUTZERKLÄRUNG. WENN SIE WIDERSPRUCH EINLEGEN, WERDEN WIR IHRE BETROFFENEN PERSONENBEZOGENEN DATEN NICHT MEHR VERARBEITEN, ES SEI DENN, WIR KÖNNEN ZWINGENDE SCHUTZWÜRDIGE GRÜNDE FÜR DIE VERARBEITUNG NACHWEISEN, DIE IHRE INTERESSEN, RECHTE UND FREIHEITEN ÜBERWIEGEN ODER DIE VERARBEITUNG DIENT DER GELTENDMACHUNG, AUSÜBUNG ODER VERTEIDIGUNG VON RECHTSANSPRÜCHEN (WIDERSPRUCH NACH ART. 21 ABS. 1 DSGVO). + WERDEN IHRE PERSONENBEZOGENEN DATEN VERARBEITET, UM DIREKTWERBUNG ZU BETREIBEN, SO HABEN SIE DAS RECHT, JEDERZEIT WIDERSPRUCH GEGEN DIE VERARBEITUNG SIE BETREFFENDER PERSONENBEZOGENER DATEN ZUM ZWECKE DERARTIGER WERBUNG EINZULEGEN; DIES GILT AUCH FÜR DAS PROFILING, SOWEIT ES MIT SOLCHER DIREKTWERBUNG IN VERBINDUNG STEHT. WENN SIE WIDERSPRECHEN, WERDEN IHRE PERSONENBEZOGENEN DATEN ANSCHLIESSEND NICHT MEHR ZUM ZWECKE DER DIREKTWERBUNG VERWENDET (WIDERSPRUCH NACH ART. 21 ABS. 2 DSGVO). + Beschwerde­recht bei der zuständigen Aufsichts­behörde + Im Falle von Verstößen gegen die DSGVO steht den Betroffenen ein Beschwerderecht bei einer Aufsichtsbehörde, insbesondere in dem Mitgliedstaat ihres gewöhnlichen Aufenthalts, ihres Arbeitsplatzes oder des Orts des mutmaßlichen Verstoßes zu. Das Beschwerderecht besteht unbeschadet anderweitiger verwaltungsrechtlicher oder gerichtlicher Rechtsbehelfe. + Recht auf Daten­übertrag­barkeit + Sie haben das Recht, Daten, die wir auf Grundlage Ihrer Einwilligung oder in Erfüllung eines Vertrags automatisiert verarbeiten, an sich oder an einen Dritten in einem gängigen, maschinenlesbaren Format aushändigen zu lassen. Sofern Sie die direkte Übertragung der Daten an einen anderen Verantwortlichen verlangen, erfolgt dies nur, soweit es technisch machbar ist. + Auskunft, Berichtigung und Löschung + Sie haben im Rahmen der geltenden gesetzlichen Bestimmungen jederzeit das Recht auf unentgeltliche Auskunft über Ihre gespeicherten personenbezogenen Daten, deren Herkunft und Empfänger und den Zweck der Datenverarbeitung und ggf. ein Recht auf Berichtigung oder Löschung dieser Daten. Hierzu sowie zu weiteren Fragen zum Thema personenbezogene Daten können Sie sich jederzeit an uns wenden. + Recht auf Einschränkung der Verarbeitung + Sie haben das Recht, die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen. Hierzu können Sie sich jederzeit an uns wenden. Das Recht auf Einschränkung der Verarbeitung besteht in folgenden Fällen: + +
    +
  • Wenn Sie die Richtigkeit Ihrer bei uns gespeicherten personenbezogenen Daten bestreiten, benötigen wir in der Regel Zeit, um dies zu überprüfen. Für die Dauer der Prüfung haben Sie das Recht, die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen.
  • +
  • Wenn die Verarbeitung Ihrer personenbezogenen Daten unrechtmäßig geschah/geschieht, können Sie statt der Löschung die Einschränkung der Datenverarbeitung verlangen.
  • +
  • Wenn wir Ihre personenbezogenen Daten nicht mehr benötigen, Sie sie jedoch zur Ausübung, Verteidigung oder Geltendmachung von Rechtsansprüchen benötigen, haben Sie das Recht, statt der Löschung die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen.
  • +
  • Wenn Sie einen Widerspruch nach Art. 21 Abs. 1 DSGVO eingelegt haben, muss eine Abwägung zwischen Ihren und unseren Interessen vorgenommen werden. Solange noch nicht feststeht, wessen Interessen überwiegen, haben Sie das Recht, die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten zu verlangen.
  • +
+
+ Wenn Sie die Verarbeitung Ihrer personenbezogenen Daten eingeschränkt haben, dürfen diese Daten – von ihrer Speicherung abgesehen – nur mit Ihrer Einwilligung oder zur Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen oder zum Schutz der Rechte einer anderen natürlichen oder juristischen Person oder aus Gründen eines wichtigen öffentlichen Interesses der Europäischen Union oder eines Mitgliedstaats verarbeitet werden. + SSL- bzw. TLS-Verschlüsselung + Diese Seite nutzt aus Sicherheitsgründen und zum Schutz der Übertragung vertraulicher Inhalte, wie zum Beispiel Bestellungen oder Anfragen, die Sie an uns als Seitenbetreiber senden, eine SSL- bzw. TLS-Verschlüsselung. Eine verschlüsselte Verbindung erkennen Sie daran, dass die Adresszeile des Browsers von „http://“ auf „https://“ wechselt und an dem Schloss-Symbol in Ihrer Browserzeile. + Wenn die SSL- bzw. TLS-Verschlüsselung aktiviert ist, können die Daten, die Sie an uns übermitteln, nicht von Dritten mitgelesen werden. + Widerspruch gegen Werbe-E-Mails + Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten zur Übersendung von nicht ausdrücklich angeforderter Werbung und Informationsmaterialien wird hiermit widersprochen. Die Betreiber der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der unverlangten Zusendung von Werbeinformationen, etwa durch Spam-E-Mails, vor. + + + 4. Datenerfassung auf dieser Website + Server-Log-Dateien + Der Provider der Seiten erhebt und speichert automatisch Informationen in so genannten Server-Log-Dateien, die Ihr Browser automatisch an uns übermittelt. Dies sind: +
    +
  • Browsertyp und Browserversion
  • +
  • verwendetes Betriebssystem
  • +
  • Referrer URL
  • +
  • Hostname des zugreifenden Rechners
  • +
  • Uhrzeit der Serveranfrage
  • +
  • IP-Adresse
  • +
+ Eine Zusammenführung dieser Daten mit anderen Datenquellen wird nicht vorgenommen. + Die Erfassung dieser Daten erfolgt auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO. Der Websitebetreiber hat ein berechtigtes Interesse an der technisch fehlerfreien Darstellung und der Optimierung seiner Website – hierzu müssen die Server-Log-Files erfasst werden. + Kontaktformular + Wenn Sie uns per Kontaktformular Anfragen zukommen lassen, werden Ihre Angaben aus dem Anfrageformular inklusive der von Ihnen dort angegebenen Kontaktdaten zwecks Bearbeitung der Anfrage und für den Fall von Anschlussfragen bei uns gespeichert. Diese Daten geben wir nicht ohne Ihre Einwilligung weiter. + Die Verarbeitung dieser Daten erfolgt auf Grundlage von Art. 6 Abs. 1 lit. b DSGVO, sofern Ihre Anfrage mit der Erfüllung eines Vertrags zusammenhängt oder zur Durchführung vorvertraglicher Maßnahmen erforderlich ist. In allen übrigen Fällen beruht die Verarbeitung auf unserem berechtigten Interesse an der effektiven Bearbeitung der an uns gerichteten Anfragen (Art. 6 Abs. 1 lit. f DSGVO) oder auf Ihrer Einwilligung (Art. 6 Abs. 1 lit. a DSGVO) sofern diese abgefragt wurde; die Einwilligung ist jederzeit widerrufbar. + Die von Ihnen im Kontaktformular eingegebenen Daten verbleiben bei uns, bis Sie uns zur Löschung auffordern, Ihre Einwilligung zur Speicherung widerrufen oder der Zweck für die Datenspeicherung entfällt (z. B. nach abgeschlossener Bearbeitung Ihrer Anfrage). Zwingende gesetzliche Bestimmungen – insbesondere Aufbewahrungsfristen – bleiben unberührt. + Anfrage per E-Mail, Telefon oder Telefax + Wenn Sie uns per E-Mail, Telefon oder Telefax kontaktieren, wird Ihre Anfrage inklusive aller daraus hervorgehenden personenbezogenen Daten (Name, Anfrage) zum Zwecke der Bearbeitung Ihres Anliegens bei uns gespeichert und verarbeitet. Diese Daten geben wir nicht ohne Ihre Einwilligung weiter. + Die Verarbeitung dieser Daten erfolgt auf Grundlage von Art. 6 Abs. 1 lit. b DSGVO, sofern Ihre Anfrage mit der Erfüllung eines Vertrags zusammenhängt oder zur Durchführung vorvertraglicher Maßnahmen erforderlich ist. In allen übrigen Fällen beruht die Verarbeitung auf unserem berechtigten Interesse an der effektiven Bearbeitung der an uns gerichteten Anfragen (Art. 6 Abs. 1 lit. f DSGVO) oder auf Ihrer Einwilligung (Art. 6 Abs. 1 lit. a DSGVO) sofern diese abgefragt wurde; die Einwilligung ist jederzeit widerrufbar. + Die von Ihnen an uns per Kontaktanfragen übersandten Daten verbleiben bei uns, bis Sie uns zur Löschung auffordern, Ihre Einwilligung zur Speicherung widerrufen oder der Zweck für die Datenspeicherung entfällt (z. B. nach abgeschlossener Bearbeitung Ihres Anliegens). Zwingende gesetzliche Bestimmungen – insbesondere gesetzliche Aufbewahrungsfristen – bleiben unberührt. + + + 5. Newsletter + Newsletter­daten + Wenn Sie den auf der Website angebotenen Newsletter beziehen möchten, benötigen wir von Ihnen eine E-Mail-Adresse sowie Informationen, welche uns die Überprüfung gestatten, dass Sie der Inhaber der angegebenen E-Mail-Adresse und mit dem Empfang des Newsletters einverstanden sind. Weitere Daten werden nicht bzw. nur auf freiwilliger Basis erhoben. Für die Abwicklung der Newsletter nutzen wir Newsletterdiensteanbieter, die nachfolgend beschrieben werden. + Brevo + Diese Website nutzt Brevo für den Versand von Newslettern. Anbieter ist die Sendinblue GmbH, Köpenicker Straße 126, 10179 Berlin, Deutschland. + Brevo ist ein Dienst, mit dem u.a. der Versand von Newslettern organisiert und analysiert werden kann. Die von Ihnen zum Zwecke des Newsletterbezugs eingegeben Daten werden auf den Servern der Sendinblue GmbH in Deutschland gespeichert. + Datenanalyse durch Brevo + Mit Hilfe von Brevo ist es uns möglich, unsere Newsletter-Kampagnen zu analysieren. So können wir z. B. sehen, ob eine Newsletter-Nachricht geöffnet und welche Links ggf. angeklickt wurden. Auf diese Weise können wir u.a. feststellen, welche Links besonders oft angeklickt wurden. + Außerdem können wir erkennen, ob nach dem Öffnen/ Anklicken bestimmte vorher definierte Aktionen durchgeführt wurden (Conversion-Rate). Wir können so z. B. erkennen, ob Sie nach dem Anklicken des Newsletters einen Kauf getätigt haben. + Brevo ermöglicht es uns auch, die Newsletter-Empfänger anhand verschiedener Kategorien zu unterteilen („clustern“). Dabei lassen sich die Newsletterempfänger z. B. nach Alter, Geschlecht oder Wohnort unterteilen. Auf diese Weise lassen sich die Newsletter besser an die jeweiligen Zielgruppen anpassen. + Wenn Sie keine Analyse durch Brevo wollen, müssen Sie den Newsletter abbestellen. Hierfür stellen wir in jeder Newsletternachricht einen entsprechenden Link zur Verfügung. + + Ausführliche Informationen zum zu den Funktionen von Brevo entnehmen Sie folgendem Link: + https://www.brevo.com/de/newsletter-software/ + . + + Rechtsgrundlage + Die Datenverarbeitung erfolgt auf Grundlage Ihrer Einwilligung (Art. 6 Abs. 1 lit. a DSGVO). Sie können diese Einwilligung jederzeit widerrufen. Die Rechtmäßigkeit der bereits erfolgten Datenverarbeitungsvorgänge bleibt vom Widerruf unberührt. + Speicherdauer + Die von Ihnen zum Zwecke des Newsletter-Bezugs bei uns hinterlegten Daten werden von uns bis zu Ihrer Austragung aus dem Newsletter bei uns bzw. dem Newsletterdiensteanbieter gespeichert und nach der Abbestellung des Newsletters aus der Newsletterverteilerliste gelöscht. Daten, die zu anderen Zwecken bei uns gespeichert wurden, bleiben hiervon unberührt. + Nach Ihrer Austragung aus der Newsletterverteilerliste wird Ihre E-Mail-Adresse bei uns bzw. dem Newsletterdiensteanbieter ggf. in einer Blacklist gespeichert, sofern dies zur Verhinderung künftiger Mailings erforderlich ist. Die Daten aus der Blacklist werden nur für diesen Zweck verwendet und nicht mit anderen Daten zusammengeführt. Dies dient sowohl Ihrem Interesse als auch unserem Interesse an der Einhaltung der gesetzlichen Vorgaben beim Versand von Newslettern (berechtigtes Interesse im Sinne des Art. 6 Abs. 1 lit. f DSGVO). Die Speicherung in der Blacklist ist zeitlich nicht befristet. Sie können der Speicherung widersprechen, sofern Ihre Interessen unser berechtigtes Interesse überwiegen. + + Näheres entnehmen Sie den Datenschutzbestimmungen von Brevo unter: + https://www.brevo.com/de/datenschutz-uebersicht/ + sowie + https://www.brevo.com/de/legal/privacypolicy/ + . + + Auftragsverarbeitung + Wir haben einen Vertrag über Auftragsverarbeitung (AVV) zur Nutzung des oben genannten Dienstes geschlossen. Hierbei handelt es sich um einen datenschutzrechtlich vorgeschriebenen Vertrag, der gewährleistet, dass dieser die personenbezogenen Daten unserer Websitebesucher nur nach unseren Weisungen und unter Einhaltung der DSGVO verarbeitet. + + + 6. Plugins und Tools + Vimeo + Diese Website nutzt Plugins des Videoportals Vimeo. Anbieter ist die Vimeo Inc., 555 West 18th Street, New York, New York 10011, USA. + Wenn Sie eine unserer mit einem Vimeo-Video ausgestatteten Seiten besuchen, wird eine Verbindung zu den Servern von Vimeo hergestellt. Dabei wird dem Vimeo-Server mitgeteilt, welche unserer Seiten Sie besucht haben. Zudem erlangt Vimeo Ihre IP-Adresse. Dies gilt auch dann, wenn Sie nicht bei Vimeo eingeloggt sind oder keinen Account bei Vimeo besitzen. Die von Vimeo erfassten Informationen werden an den Vimeo-Server in den USA übermittelt. + Wenn Sie in Ihrem Vimeo-Account eingeloggt sind, ermöglichen Sie Vimeo, Ihr Surfverhalten direkt Ihrem persönlichen Profil zuzuordnen. Dies können Sie verhindern, indem Sie sich aus Ihrem Vimeo-Account ausloggen. + Zur Wiedererkennung der Websitebesucher verwendet Vimeo Cookies bzw. vergleichbare Wiedererkennungstechnologien (z. B. Device-Fingerprinting). + Die Nutzung von Vimeo erfolgt im Interesse einer ansprechenden Darstellung unserer Online-Angebote. Dies stellt ein berechtigtes Interesse im Sinne des Art. 6 Abs. 1 lit. f DSGVO dar. Sofern eine entsprechende Einwilligung abgefragt wurde, erfolgt die Verarbeitung ausschließlich auf Grundlage von Art. 6 Abs. 1 lit. a DSGVO und § 25 Abs. 1 TTDSG, soweit die Einwilligung die Speicherung von Cookies oder den Zugriff auf Informationen im Endgerät des Nutzers (z. B. Device-Fingerprinting) im Sinne des TTDSG umfasst. Die Einwilligung ist jederzeit widerrufbar. + + Die Datenübertragung in die USA wird auf die Standardvertragsklauseln der EU-Kommission sowie nach Aussage von Vimeo auf „berechtigte Geschäftsinteressen“ gestützt. Details finden Sie hier: + https://vimeo.com/privacy + . + + + Weitere Informationen zum Umgang mit Nutzerdaten finden Sie in der Datenschutzerklärung von Vimeo unter: + https://vimeo.com/privacy + . + + hCaptcha + Wir nutzen hCaptcha (im Folgenden „hCaptcha“) auf dieser Website. Anbieter ist die Intuition Machines, Inc., 2211 Selig Drive, Los Angeles, CA 90026, USA (im Folgenden „IMI“). + Mit hCaptcha soll überprüft werden, ob die Dateneingabe auf dieser Website (z. B. in einem Kontaktformular) durch einen Menschen oder durch ein automatisiertes Programm erfolgt. Hierzu analysiert hCaptcha das Verhalten des Websitebesuchers anhand verschiedener Merkmale. + Diese Analyse beginnt automatisch, sobald der Websitebesucher eine Website mit aktiviertem hCaptcha betritt. Zur Analyse wertet hCaptcha verschiedene Informationen aus (z. B. IP-Adresse, Verweildauer des Websitebesuchers auf der Website oder vom Nutzer getätigte Mausbewegungen). Die bei der Analyse erfassten Daten werden an IMI weitergeleitet. Wird hCaptcha im „unsichtbaren Modus“ verwendet, laufen die Analysen vollständig im Hintergrund. Websitebesucher werden nicht darauf hingewiesen, dass eine Analyse stattfindet. Die Speicherung und Analyse der Daten erfolgt auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO. Der Websitebetreiber hat ein berechtigtes Interesse daran, seine Webangebote vor missbräuchlicher automatisierter Ausspähung und vor SPAM zu schützen. Sofern eine entsprechende Einwilligung abgefragt wurde, erfolgt die Verarbeitung ausschließlich auf Grundlage von Art. 6 Abs. 1 lit. a DSGVO und § 25 Abs. 1 TTDSG, soweit die Einwilligung die Speicherung von Cookies oder den Zugriff auf Informationen im Endgerät des Nutzers (z. B. Device-Fingerprinting) im Sinne des TTDSG umfasst. Die Einwilligung ist jederzeit widerrufbar. Die Datenverarbeitung wird auf Standardvertragsklauseln gestützt, die in den Datenverarbeitungszusatz zu den Allgemeinen Geschäftsbedingungen von IMI bzw. den Datenverarbeitungsverträgen enthalten sind. + + Weitere Informationen zu hCaptcha entnehmen Sie den Datenschutzbestimmungen und Nutzungsbedingungen unter folgenden Links: + https://www.hcaptcha.com/privacy + und + https://hcaptcha.com/terms + . + + Das Unternehmen verfügt über eine Zertifizierung nach dem „EU-US Data Privacy Framework“ (DPF). Der DPF ist ein Übereinkommen zwischen der Europäischen Union und den USA, der die Einhaltung europäischer Datenschutzstandards bei Datenverarbeitungen in den USA gewährleisten soll. Jedes nach dem DPF zertifizierte Unternehmen verpflichtet sich, diese Datenschutzstandards einzuhalten. Weitere Informationen hierzu erhalten Sie vom Anbieter unter folgendem Link: https://www.dataprivacyframework.gov/list + + + 7. Eigene Dienste + Umgang mit Bewerberdaten + Wir bieten Ihnen die Möglichkeit, sich bei uns zu bewerben (z. B. per E-Mail, postalisch oder via Online-Bewerberformular). Im Folgenden informieren wir Sie über Umfang, Zweck und Verwendung Ihrer im Rahmen des Bewerbungsprozesses erhobenen personenbezogenen Daten. Wir versichern, dass die Erhebung, Verarbeitung und Nutzung Ihrer Daten in Übereinstimmung mit geltendem Datenschutzrecht und allen weiteren gesetzlichen Bestimmungen erfolgt und Ihre Daten streng vertraulich behandelt werden. + Umfang und Zweck der Datenerhebung + Wenn Sie uns eine Bewerbung zukommen lassen, verarbeiten wir Ihre damit verbundenen personenbezogenen Daten (z. B. Kontakt- und Kommunikationsdaten, Bewerbungsunterlagen, Notizen im Rahmen von Bewerbungsgesprächen etc.), soweit dies zur Entscheidung über die Begründung eines Beschäftigungsverhältnisses erforderlich ist. Rechtsgrundlage hierfür ist § 26 BDSG nach deutschem Recht (Anbahnung eines Beschäftigungsverhältnisses), Art. 6 Abs. 1 lit. b DSGVO (allgemeine Vertragsanbahnung) und – sofern Sie eine Einwilligung erteilt haben – Art. 6 Abs. 1 lit. a DSGVO. Die Einwilligung ist jederzeit widerrufbar. Ihre personenbezogenen Daten werden innerhalb unseres Unternehmens ausschließlich an Personen weitergegeben, die an der Bearbeitung Ihrer Bewerbung beteiligt sind. + Sofern die Bewerbung erfolgreich ist, werden die von Ihnen eingereichten Daten auf Grundlage von § 26 BDSG und Art. 6 Abs. 1 lit. b DSGVO zum Zwecke der Durchführung des Beschäftigungsverhältnisses in unseren Datenverarbeitungssystemen gespeichert. + Aufbewahrungsdauer der Daten + Sofern wir Ihnen kein Stellenangebot machen können, Sie ein Stellenangebot ablehnen oder Ihre Bewerbung zurückziehen, behalten wir uns das Recht vor, die von Ihnen übermittelten Daten auf Grundlage unserer berechtigten Interessen (Art. 6 Abs. 1 lit. f DSGVO) bis zu 6 Monate ab der Beendigung des Bewerbungsverfahrens (Ablehnung oder Zurückziehung der Bewerbung) bei uns aufzubewahren. Anschließend werden die Daten gelöscht und die physischen Bewerbungsunterlagen vernichtet. Die Aufbewahrung dient insbesondere Nachweiszwecken im Falle eines Rechtsstreits. Sofern ersichtlich ist, dass die Daten nach Ablauf der 6-Monatsfrist erforderlich sein werden (z. B. aufgrund eines drohenden oder anhängigen Rechtsstreits), findet eine Löschung erst statt, wenn der Zweck für die weitergehende Aufbewahrung entfällt. + Eine längere Aufbewahrung kann außerdem stattfinden, wenn Sie eine entsprechende Einwilligung (Art. 6 Abs. 1 lit. a DSGVO) erteilt haben oder wenn gesetzliche Aufbewahrungspflichten der Löschung entgegenstehen. + Aufnahme in den Bewerber-Pool + Sofern wir Ihnen kein Stellenangebot machen, besteht ggf. die Möglichkeit, Sie in unseren Bewerber-Pool aufzunehmen. Im Falle der Aufnahme werden alle Dokumente und Angaben aus der Bewerbung in den Bewerber-Pool übernommen, um Sie im Falle von passenden Vakanzen zu kontaktieren. + Die Aufnahme in den Bewerber-Pool geschieht ausschließlich auf Grundlage Ihrer ausdrücklichen Einwilligung (Art. 6 Abs. 1 lit. a DSGVO). Die Abgabe der Einwilligung ist freiwillig und steht in keinem Bezug zum laufenden Bewerbungsverfahren. Der Betroffene kann seine Einwilligung jederzeit widerrufen. In diesem Falle werden die Daten aus dem Bewerber-Pool unwiderruflich gelöscht, sofern keine gesetzlichen Aufbewahrungsgründe vorliegen. + Die Daten aus dem Bewerber-Pool werden spätestens zwei Jahre nach Erteilung der Einwilligung unwiderruflich gelöscht. + +
+
+ ) +} \ No newline at end of file diff --git a/src/app/verify/page.tsx b/src/app/verify/page.tsx new file mode 100644 index 0000000..92008e2 --- /dev/null +++ b/src/app/verify/page.tsx @@ -0,0 +1,26 @@ +"use client" +import {useEffect} from "react"; +import {RegistrationRest} from "../../rest/RegistrationRest"; +import {Box, CircularProgress, Typography} from "@mui/material"; +import {useRouter} from "next/navigation"; + +export default function Page() { + + const router = useRouter() + + useEffect(() => { + if (typeof window !== 'undefined') { + const queryParameters = new URLSearchParams(window?.location?.search) + const type = queryParameters.get("token") + const registrationRest = new RegistrationRest() + registrationRest.verifyToken(type).then(() => router.push("/?isVerified=true")) + } + + }, []); + return + + + Verifying your Token + + +} \ No newline at end of file diff --git a/src/assets/data/faq.json b/src/assets/data/faq.json deleted file mode 100644 index 741bc87..0000000 --- a/src/assets/data/faq.json +++ /dev/null @@ -1,62 +0,0 @@ -[ - { - "question": "What's so special about HackHPI?", - "answer": "There are very few hackathons focusing on social issues; we want to fix that and give you the chance to change the world for better by building applications that truly matter! You will also have the opportunity to get in touch with our awesome partners, slip into their shoes and solve real-world challenges using their API and expertise." - }, - { - "question": "What is HackHPI / a Hackathon?", - "answer": "For two consecutive days, students and others interested in tackling challenges concerning Cybersecurity and/or Digital Government come together on HPI's campus to be creative, implement innovative ideas using code, gadgets and open data, and also to simply have a great time!" - }, - { - "question": "Will the Hackathon be in present?", - "answer": "Yes, and that's quite a sure thing. We believe that Hackathons need the human contact that only in-person events can provide, and we're glad to announce that the HackHPI 2024 will be an in-presence event!" - }, - { - "question": "Is there a code of conduct?", - "answer": "Yes. We comply with the MLH's code of conduct, which all attendees, partners, volunteers, and staff are required to agree to. We expect all of our attendees to be respectful and considerate of others. For your information, it is linked above this FAQ." - }, - { - "question": "What are the rules concerning COVID?", - "answer": "As of right now, there are only few rules concerning COVID regulations. We strongly recommend you to wear a face mask and to test yourself before the event, yet we can also provide you with a mask if you don't have any. No vaccination or recovery certificates required." - }, - { - "question": "How does the application process work?", - "answer": "You can apply by filling all required information into the form below. We kindly ask you to only do so if you are planning to attend the hackathon, as you might otherwise take someone else's place. We will then evaluate your application and inform everyone by the end of March. Even if you are not selected at the beginning, you might have the chance to move up in our listings if someone else decides to leave. In cases where you need a prioritized response, indicate it in the form and we will try to contact you faster." - }, - { - "question": "Are there any requirements?", - "answer": "We believe that diverse teams come up with more creative solutions. A hackathon should be a way to experience teamwork and work on your abilities. We therefore encourage every major to apply, and give a warm welcome to young professionals as well. However, due to german law, every participant has to be at least 18 years old." - }, - { - "question": "What are the challenges?", - "answer": "All challenges are connected to the subject of Cybersecurity or Digital Government, but as they are sponsored, we cannot yet exactly tell what awaits you. and honestly, who would want to miss the thrill of a surprise challenge? Anyways, the exact challenges will be announced soon, so stay tuned!" - }, - { - "question": "What API should I use?", - "answer": "Feel free to use whatever you feel most comfortable with. Our partners will be happy to assist you with their APIs and know-how." - }, - { - "question": "Are there any costs for me?", - "answer": "Nope! HackHPI is completely free, and we provide you with food, drinks (and a lot of caffeine! :D) during the whole Hackathon." - }, - { - "question": "Where can I stay during the Hackathon?", - "answer": "This is an all-night Hackathon, meaning that we won't stop until the last one standing. We will provide rooms in which you can sleep or just rest, but you're required to bring your own sleeping bag and air mattress. We're also planning on organizing a couch surfing option from Wednesday to Thursday for everybody coming early. If you wish to participate in this, whether you want to stay or offer a bed, please note that down when filling in the application form." - }, - { - "question": "What about teams?", - "answer": "A Hackathon is an ideal place to meet other motivated students from other universities and majors. We will have a dedicated team building session on Wednesday, in which you can find your perfect teammates. We recommend a team size between 4-6 people." - }, - { - "question": "How can I get to the location?", - "answer": "Take S7 from Berlin Central Station (\"Hauptbahnhof\") towards Potsdam and exit at Griebnitzsee. It will cost just around 3,40€ one-way." - }, - { - "question": "How should I prepare?", - "answer": "Bring your laptop and a charger, comfortable clothes, and, above all, motivation to hack! We will additionally announce the challenges and potentially interesting papers, data and tools, so if you want to, you can already research the challenges; however, this is not mandatory." - }, - { - "question": "Does HackHPI help with travel reimbursements?", - "answer": "Unfortunately, we are not able to provide travel reimbursements." - } -] diff --git a/src/assets/data/sponsors.json b/src/assets/data/sponsors.json deleted file mode 100644 index 96ca52d..0000000 --- a/src/assets/data/sponsors.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "name": "Dataport", - "image": "/img/sponsors/dataport.jpeg", - "description": "Dataport is the IT service provider for public administration. As a partner for all digitalisation projects, the company supports the public sector from the initial idea through to secure operation. To this end, Dataport collaborates with providers from the region and supports federal IT cooperation. As a public-law institution, Dataport is owned by the states of Bremen, Hamburg, Mecklenburg-Western Pomerania, Lower Saxony, Saxony-Anhalt and Schleswig- Holstein and by the communal IT association of Schleswig-Holstein. Dataport has around 4,400 employees and achieved a turnover of 1,04 billion euros in 2021.", - "url": "https://www.dataport.de" - }, - { - "name": "neXenio", - "image": "/img/sponsors/nexenio.jpeg", - "description": "We design, develop and maintain software products for our partners in public & private sector - always with focus on security and usability. To stay on trend, we work on research projects such as AI and Post Quantum Cryptography to contribute to digitalization in Germany and the EU. You're interested in developing secure software products? Whether full-time staff, working students or interns - join us in our Berlin based office, hybrid or remotely.", - "url": "https://www.nexenio.com" - } -] diff --git a/src/assets/data/team.json b/src/assets/data/team.json deleted file mode 100644 index 5b27cbc..0000000 --- a/src/assets/data/team.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "name": "An Nguyen", - "image": "/img/team/an_nguyen.jpg" - }, - { - "name": "Benedikt Helfrich", - "image": "/img/team/benedikt_helfrich.jpg" - }, - { - "name": "Benjamin Frost", - "image": "/img/team/benjamin_frost.jpg" - }, - { - "name": "Cedric Rische", - "image": "/img/team/cedric_rische.jpg" - }, - { - "name": "Leon Hermann", - "image": "/img/team/leon_hermann.jpg" - }, - { - "name": "Mathilda Heise", - "image": "/img/team/mathilda_heise.jpg" - }, - { - "name": "Matti Schmidt", - "image": "/img/team/matti_schmidt.jpg" - }, - { - "name": "Nikolas Rieger", - "image": "/img/team/nikolas_rieger.jpg" - }, - { - "name": "Tanja Lehmann", - "image": "/img/team/tanja_lehmann.jpg" - }, - { - "name": "Theo Klinke", - "image": "/img/team/theo_klinke.jpg" - } -] diff --git a/src/assets/images/event/DSC02572.jpg b/src/assets/images/event/DSC02572.jpg deleted file mode 100644 index 80d2d3f..0000000 Binary files a/src/assets/images/event/DSC02572.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02572_1920.webp b/src/assets/images/event/DSC02572_1920.webp new file mode 100644 index 0000000..3d4e706 Binary files /dev/null and b/src/assets/images/event/DSC02572_1920.webp differ diff --git a/src/assets/images/event/DSC02594.jpg b/src/assets/images/event/DSC02594.jpg deleted file mode 100644 index 7a54124..0000000 Binary files a/src/assets/images/event/DSC02594.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02594_1920.webp b/src/assets/images/event/DSC02594_1920.webp new file mode 100644 index 0000000..ca12319 Binary files /dev/null and b/src/assets/images/event/DSC02594_1920.webp differ diff --git a/src/assets/images/event/DSC02601.jpg b/src/assets/images/event/DSC02601.jpg deleted file mode 100644 index 2e5b49c..0000000 Binary files a/src/assets/images/event/DSC02601.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02601_1920.webp b/src/assets/images/event/DSC02601_1920.webp new file mode 100644 index 0000000..fc3f224 Binary files /dev/null and b/src/assets/images/event/DSC02601_1920.webp differ diff --git a/src/assets/images/event/DSC02604.jpg b/src/assets/images/event/DSC02604.jpg deleted file mode 100644 index 71d4499..0000000 Binary files a/src/assets/images/event/DSC02604.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02604_1920.webp b/src/assets/images/event/DSC02604_1920.webp new file mode 100644 index 0000000..98230b8 Binary files /dev/null and b/src/assets/images/event/DSC02604_1920.webp differ diff --git a/src/assets/images/event/DSC02609.jpg b/src/assets/images/event/DSC02609.jpg deleted file mode 100644 index 8ea0d5f..0000000 Binary files a/src/assets/images/event/DSC02609.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02609_1920.webp b/src/assets/images/event/DSC02609_1920.webp new file mode 100644 index 0000000..d030f7f Binary files /dev/null and b/src/assets/images/event/DSC02609_1920.webp differ diff --git a/src/assets/images/event/DSC02617.jpg b/src/assets/images/event/DSC02617.jpg deleted file mode 100644 index d9ba8f2..0000000 Binary files a/src/assets/images/event/DSC02617.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02617_1920.webp b/src/assets/images/event/DSC02617_1920.webp new file mode 100644 index 0000000..08fa2d1 Binary files /dev/null and b/src/assets/images/event/DSC02617_1920.webp differ diff --git a/src/assets/images/event/DSC02619.jpg b/src/assets/images/event/DSC02619.jpg deleted file mode 100644 index 4bd1eb3..0000000 Binary files a/src/assets/images/event/DSC02619.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02619_1920.webp b/src/assets/images/event/DSC02619_1920.webp new file mode 100644 index 0000000..79c4924 Binary files /dev/null and b/src/assets/images/event/DSC02619_1920.webp differ diff --git a/src/assets/images/event/DSC02630.jpg b/src/assets/images/event/DSC02630.jpg deleted file mode 100644 index b0f5ff9..0000000 Binary files a/src/assets/images/event/DSC02630.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02630_1920.webp b/src/assets/images/event/DSC02630_1920.webp new file mode 100644 index 0000000..80ed059 Binary files /dev/null and b/src/assets/images/event/DSC02630_1920.webp differ diff --git a/src/assets/images/event/DSC02632.jpg b/src/assets/images/event/DSC02632.jpg deleted file mode 100644 index 9716ba6..0000000 Binary files a/src/assets/images/event/DSC02632.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02632_1920.webp b/src/assets/images/event/DSC02632_1920.webp new file mode 100644 index 0000000..dcdca9a Binary files /dev/null and b/src/assets/images/event/DSC02632_1920.webp differ diff --git a/src/assets/images/event/DSC02635.jpg b/src/assets/images/event/DSC02635.jpg deleted file mode 100644 index ad6c387..0000000 Binary files a/src/assets/images/event/DSC02635.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02635_1920.webp b/src/assets/images/event/DSC02635_1920.webp new file mode 100644 index 0000000..75937a9 Binary files /dev/null and b/src/assets/images/event/DSC02635_1920.webp differ diff --git a/src/assets/images/event/DSC02638.jpg b/src/assets/images/event/DSC02638.jpg deleted file mode 100644 index ab368bd..0000000 Binary files a/src/assets/images/event/DSC02638.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02638_1920.webp b/src/assets/images/event/DSC02638_1920.webp new file mode 100644 index 0000000..2ff8e72 Binary files /dev/null and b/src/assets/images/event/DSC02638_1920.webp differ diff --git a/src/assets/images/event/DSC02639.jpg b/src/assets/images/event/DSC02639.jpg deleted file mode 100644 index a89e7db..0000000 Binary files a/src/assets/images/event/DSC02639.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02639_1920.webp b/src/assets/images/event/DSC02639_1920.webp new file mode 100644 index 0000000..81983fe Binary files /dev/null and b/src/assets/images/event/DSC02639_1920.webp differ diff --git a/src/assets/images/event/DSC02643.jpg b/src/assets/images/event/DSC02643.jpg deleted file mode 100644 index 076b502..0000000 Binary files a/src/assets/images/event/DSC02643.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02643_1920.webp b/src/assets/images/event/DSC02643_1920.webp new file mode 100644 index 0000000..a026aa5 Binary files /dev/null and b/src/assets/images/event/DSC02643_1920.webp differ diff --git a/src/assets/images/event/DSC02645.jpg b/src/assets/images/event/DSC02645.jpg deleted file mode 100644 index 78379fd..0000000 Binary files a/src/assets/images/event/DSC02645.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02645_1920.webp b/src/assets/images/event/DSC02645_1920.webp new file mode 100644 index 0000000..9b70a3d Binary files /dev/null and b/src/assets/images/event/DSC02645_1920.webp differ diff --git a/src/assets/images/event/DSC02646.jpg b/src/assets/images/event/DSC02646.jpg deleted file mode 100644 index 2e3a28f..0000000 Binary files a/src/assets/images/event/DSC02646.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02646_1920.webp b/src/assets/images/event/DSC02646_1920.webp new file mode 100644 index 0000000..11d0ae9 Binary files /dev/null and b/src/assets/images/event/DSC02646_1920.webp differ diff --git a/src/assets/images/event/DSC02659.jpg b/src/assets/images/event/DSC02659.jpg deleted file mode 100644 index 802406f..0000000 Binary files a/src/assets/images/event/DSC02659.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02659_1920.webp b/src/assets/images/event/DSC02659_1920.webp new file mode 100644 index 0000000..125a4a2 Binary files /dev/null and b/src/assets/images/event/DSC02659_1920.webp differ diff --git a/src/assets/images/event/DSC02677.jpg b/src/assets/images/event/DSC02677.jpg deleted file mode 100644 index e1ea80f..0000000 Binary files a/src/assets/images/event/DSC02677.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02677_1920.webp b/src/assets/images/event/DSC02677_1920.webp new file mode 100644 index 0000000..735e3db Binary files /dev/null and b/src/assets/images/event/DSC02677_1920.webp differ diff --git a/src/assets/images/event/DSC02680.jpg b/src/assets/images/event/DSC02680.jpg deleted file mode 100644 index f69e1a4..0000000 Binary files a/src/assets/images/event/DSC02680.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02680_1920.webp b/src/assets/images/event/DSC02680_1920.webp new file mode 100644 index 0000000..4012955 Binary files /dev/null and b/src/assets/images/event/DSC02680_1920.webp differ diff --git a/src/assets/images/event/DSC02762.jpg b/src/assets/images/event/DSC02762.jpg deleted file mode 100644 index a4a98c8..0000000 Binary files a/src/assets/images/event/DSC02762.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02762_1920.webp b/src/assets/images/event/DSC02762_1920.webp new file mode 100644 index 0000000..f24cab0 Binary files /dev/null and b/src/assets/images/event/DSC02762_1920.webp differ diff --git a/src/assets/images/event/DSC02810.jpg b/src/assets/images/event/DSC02810.jpg deleted file mode 100644 index c0dd653..0000000 Binary files a/src/assets/images/event/DSC02810.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02810_1920.webp b/src/assets/images/event/DSC02810_1920.webp new file mode 100644 index 0000000..1d1f72b Binary files /dev/null and b/src/assets/images/event/DSC02810_1920.webp differ diff --git a/src/assets/images/event/DSC02820.jpg b/src/assets/images/event/DSC02820.jpg deleted file mode 100644 index 00d81e3..0000000 Binary files a/src/assets/images/event/DSC02820.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02820_1920.webp b/src/assets/images/event/DSC02820_1920.webp new file mode 100644 index 0000000..6efc5c5 Binary files /dev/null and b/src/assets/images/event/DSC02820_1920.webp differ diff --git a/src/assets/images/event/DSC02823.jpg b/src/assets/images/event/DSC02823.jpg deleted file mode 100644 index 4ded1f4..0000000 Binary files a/src/assets/images/event/DSC02823.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02823_1920.webp b/src/assets/images/event/DSC02823_1920.webp new file mode 100644 index 0000000..768b058 Binary files /dev/null and b/src/assets/images/event/DSC02823_1920.webp differ diff --git a/src/assets/images/event/DSC02824.jpg b/src/assets/images/event/DSC02824.jpg deleted file mode 100644 index 41677f4..0000000 Binary files a/src/assets/images/event/DSC02824.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02824_1920.webp b/src/assets/images/event/DSC02824_1920.webp new file mode 100644 index 0000000..c427944 Binary files /dev/null and b/src/assets/images/event/DSC02824_1920.webp differ diff --git a/src/assets/images/event/DSC02830.jpg b/src/assets/images/event/DSC02830.jpg deleted file mode 100644 index aed0553..0000000 Binary files a/src/assets/images/event/DSC02830.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02830_1920.webp b/src/assets/images/event/DSC02830_1920.webp new file mode 100644 index 0000000..bbb1f74 Binary files /dev/null and b/src/assets/images/event/DSC02830_1920.webp differ diff --git a/src/assets/images/event/DSC02868.jpg b/src/assets/images/event/DSC02868.jpg deleted file mode 100644 index a201220..0000000 Binary files a/src/assets/images/event/DSC02868.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02868_1920.webp b/src/assets/images/event/DSC02868_1920.webp new file mode 100644 index 0000000..21590eb Binary files /dev/null and b/src/assets/images/event/DSC02868_1920.webp differ diff --git a/src/assets/images/event/DSC02870.jpg b/src/assets/images/event/DSC02870.jpg deleted file mode 100644 index 776bb28..0000000 Binary files a/src/assets/images/event/DSC02870.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02870_1920.webp b/src/assets/images/event/DSC02870_1920.webp new file mode 100644 index 0000000..e7575a2 Binary files /dev/null and b/src/assets/images/event/DSC02870_1920.webp differ diff --git a/src/assets/images/event/DSC02872.jpg b/src/assets/images/event/DSC02872.jpg deleted file mode 100644 index efa67fc..0000000 Binary files a/src/assets/images/event/DSC02872.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02872_1920.webp b/src/assets/images/event/DSC02872_1920.webp new file mode 100644 index 0000000..7b544b8 Binary files /dev/null and b/src/assets/images/event/DSC02872_1920.webp differ diff --git a/src/assets/images/event/DSC02876.jpg b/src/assets/images/event/DSC02876.jpg deleted file mode 100644 index 0a099dc..0000000 Binary files a/src/assets/images/event/DSC02876.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02876_1920.webp b/src/assets/images/event/DSC02876_1920.webp new file mode 100644 index 0000000..46ea922 Binary files /dev/null and b/src/assets/images/event/DSC02876_1920.webp differ diff --git a/src/assets/images/event/DSC02879.jpg b/src/assets/images/event/DSC02879.jpg deleted file mode 100644 index c12016b..0000000 Binary files a/src/assets/images/event/DSC02879.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02879_1920.webp b/src/assets/images/event/DSC02879_1920.webp new file mode 100644 index 0000000..3a28528 Binary files /dev/null and b/src/assets/images/event/DSC02879_1920.webp differ diff --git a/src/assets/images/event/DSC02886.jpg b/src/assets/images/event/DSC02886.jpg deleted file mode 100644 index e921e66..0000000 Binary files a/src/assets/images/event/DSC02886.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02886_1920.webp b/src/assets/images/event/DSC02886_1920.webp new file mode 100644 index 0000000..fb6baf7 Binary files /dev/null and b/src/assets/images/event/DSC02886_1920.webp differ diff --git a/src/assets/images/event/DSC02889.jpg b/src/assets/images/event/DSC02889.jpg deleted file mode 100644 index c3231a3..0000000 Binary files a/src/assets/images/event/DSC02889.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02889_1920.webp b/src/assets/images/event/DSC02889_1920.webp new file mode 100644 index 0000000..604a934 Binary files /dev/null and b/src/assets/images/event/DSC02889_1920.webp differ diff --git a/src/assets/images/event/DSC02903.jpg b/src/assets/images/event/DSC02903.jpg deleted file mode 100644 index f40b645..0000000 Binary files a/src/assets/images/event/DSC02903.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02903_1920.webp b/src/assets/images/event/DSC02903_1920.webp new file mode 100644 index 0000000..39ecaa2 Binary files /dev/null and b/src/assets/images/event/DSC02903_1920.webp differ diff --git a/src/assets/images/event/DSC02908.jpg b/src/assets/images/event/DSC02908.jpg deleted file mode 100644 index cc08e37..0000000 Binary files a/src/assets/images/event/DSC02908.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02908_1920.webp b/src/assets/images/event/DSC02908_1920.webp new file mode 100644 index 0000000..e11aa51 Binary files /dev/null and b/src/assets/images/event/DSC02908_1920.webp differ diff --git a/src/assets/images/event/DSC02914.jpg b/src/assets/images/event/DSC02914.jpg deleted file mode 100644 index 0e1fb0c..0000000 Binary files a/src/assets/images/event/DSC02914.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02914_1920.webp b/src/assets/images/event/DSC02914_1920.webp new file mode 100644 index 0000000..72ee12e Binary files /dev/null and b/src/assets/images/event/DSC02914_1920.webp differ diff --git a/src/assets/images/event/DSC02919.jpg b/src/assets/images/event/DSC02919.jpg deleted file mode 100644 index 7cbefc2..0000000 Binary files a/src/assets/images/event/DSC02919.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02919_1920.webp b/src/assets/images/event/DSC02919_1920.webp new file mode 100644 index 0000000..7fd1e2b Binary files /dev/null and b/src/assets/images/event/DSC02919_1920.webp differ diff --git a/src/assets/images/event/DSC02920.jpg b/src/assets/images/event/DSC02920.jpg deleted file mode 100644 index 7145fa8..0000000 Binary files a/src/assets/images/event/DSC02920.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02920_1920.webp b/src/assets/images/event/DSC02920_1920.webp new file mode 100644 index 0000000..8e44454 Binary files /dev/null and b/src/assets/images/event/DSC02920_1920.webp differ diff --git a/src/assets/images/event/DSC02923.jpg b/src/assets/images/event/DSC02923.jpg deleted file mode 100644 index 664dc25..0000000 Binary files a/src/assets/images/event/DSC02923.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02923_1920.webp b/src/assets/images/event/DSC02923_1920.webp new file mode 100644 index 0000000..6c3b370 Binary files /dev/null and b/src/assets/images/event/DSC02923_1920.webp differ diff --git a/src/assets/images/event/DSC02926.jpg b/src/assets/images/event/DSC02926.jpg deleted file mode 100644 index 6258ba1..0000000 Binary files a/src/assets/images/event/DSC02926.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02926_1920.webp b/src/assets/images/event/DSC02926_1920.webp new file mode 100644 index 0000000..c75d0ed Binary files /dev/null and b/src/assets/images/event/DSC02926_1920.webp differ diff --git a/src/assets/images/event/DSC02928.jpg b/src/assets/images/event/DSC02928.jpg deleted file mode 100644 index a8c98cb..0000000 Binary files a/src/assets/images/event/DSC02928.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02928_1920.webp b/src/assets/images/event/DSC02928_1920.webp new file mode 100644 index 0000000..499c094 Binary files /dev/null and b/src/assets/images/event/DSC02928_1920.webp differ diff --git a/src/assets/images/event/DSC02931.jpg b/src/assets/images/event/DSC02931.jpg deleted file mode 100644 index 15b6538..0000000 Binary files a/src/assets/images/event/DSC02931.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02931_1920.webp b/src/assets/images/event/DSC02931_1920.webp new file mode 100644 index 0000000..ce4f85a Binary files /dev/null and b/src/assets/images/event/DSC02931_1920.webp differ diff --git a/src/assets/images/event/DSC02941.jpg b/src/assets/images/event/DSC02941.jpg deleted file mode 100644 index ce144e9..0000000 Binary files a/src/assets/images/event/DSC02941.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02941_1920.webp b/src/assets/images/event/DSC02941_1920.webp new file mode 100644 index 0000000..dc2735b Binary files /dev/null and b/src/assets/images/event/DSC02941_1920.webp differ diff --git a/src/assets/images/event/DSC02946.jpg b/src/assets/images/event/DSC02946.jpg deleted file mode 100644 index 1bca787..0000000 Binary files a/src/assets/images/event/DSC02946.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02946_1920.webp b/src/assets/images/event/DSC02946_1920.webp new file mode 100644 index 0000000..e438a35 Binary files /dev/null and b/src/assets/images/event/DSC02946_1920.webp differ diff --git a/src/assets/images/event/DSC02949.jpg b/src/assets/images/event/DSC02949.jpg deleted file mode 100644 index b126a1b..0000000 Binary files a/src/assets/images/event/DSC02949.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02949_1920.webp b/src/assets/images/event/DSC02949_1920.webp new file mode 100644 index 0000000..5c786f7 Binary files /dev/null and b/src/assets/images/event/DSC02949_1920.webp differ diff --git a/src/assets/images/event/DSC02957.jpg b/src/assets/images/event/DSC02957.jpg deleted file mode 100644 index 92e9a26..0000000 Binary files a/src/assets/images/event/DSC02957.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02957_1920.webp b/src/assets/images/event/DSC02957_1920.webp new file mode 100644 index 0000000..8539455 Binary files /dev/null and b/src/assets/images/event/DSC02957_1920.webp differ diff --git a/src/assets/images/event/DSC02962.jpg b/src/assets/images/event/DSC02962.jpg deleted file mode 100644 index da58c42..0000000 Binary files a/src/assets/images/event/DSC02962.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02962_1920.webp b/src/assets/images/event/DSC02962_1920.webp new file mode 100644 index 0000000..3824afc Binary files /dev/null and b/src/assets/images/event/DSC02962_1920.webp differ diff --git a/src/assets/images/event/DSC02969.jpg b/src/assets/images/event/DSC02969.jpg deleted file mode 100644 index 6d5d463..0000000 Binary files a/src/assets/images/event/DSC02969.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02969_1920.webp b/src/assets/images/event/DSC02969_1920.webp new file mode 100644 index 0000000..5c35712 Binary files /dev/null and b/src/assets/images/event/DSC02969_1920.webp differ diff --git a/src/assets/images/event/DSC02974.jpg b/src/assets/images/event/DSC02974.jpg deleted file mode 100644 index 1a23d72..0000000 Binary files a/src/assets/images/event/DSC02974.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02974_1920.webp b/src/assets/images/event/DSC02974_1920.webp new file mode 100644 index 0000000..58cfffa Binary files /dev/null and b/src/assets/images/event/DSC02974_1920.webp differ diff --git a/src/assets/images/event/DSC02983.jpg b/src/assets/images/event/DSC02983.jpg deleted file mode 100644 index cdb8b78..0000000 Binary files a/src/assets/images/event/DSC02983.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02983_1920.webp b/src/assets/images/event/DSC02983_1920.webp new file mode 100644 index 0000000..2992e81 Binary files /dev/null and b/src/assets/images/event/DSC02983_1920.webp differ diff --git a/src/assets/images/event/DSC02992.jpg b/src/assets/images/event/DSC02992.jpg deleted file mode 100644 index 0d289c0..0000000 Binary files a/src/assets/images/event/DSC02992.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02992_1920.webp b/src/assets/images/event/DSC02992_1920.webp new file mode 100644 index 0000000..c1ce016 Binary files /dev/null and b/src/assets/images/event/DSC02992_1920.webp differ diff --git a/src/assets/images/event/DSC02998.jpg b/src/assets/images/event/DSC02998.jpg deleted file mode 100644 index 6d1cbae..0000000 Binary files a/src/assets/images/event/DSC02998.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC02998_1920.webp b/src/assets/images/event/DSC02998_1920.webp new file mode 100644 index 0000000..d71a1ca Binary files /dev/null and b/src/assets/images/event/DSC02998_1920.webp differ diff --git a/src/assets/images/event/DSC03006.jpg b/src/assets/images/event/DSC03006.jpg deleted file mode 100644 index 0958bb0..0000000 Binary files a/src/assets/images/event/DSC03006.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC03006_1920.webp b/src/assets/images/event/DSC03006_1920.webp new file mode 100644 index 0000000..9b58cd6 Binary files /dev/null and b/src/assets/images/event/DSC03006_1920.webp differ diff --git a/src/assets/images/event/DSC03022.jpg b/src/assets/images/event/DSC03022.jpg deleted file mode 100644 index c2b8502..0000000 Binary files a/src/assets/images/event/DSC03022.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC03022_1920.webp b/src/assets/images/event/DSC03022_1920.webp new file mode 100644 index 0000000..8663b8f Binary files /dev/null and b/src/assets/images/event/DSC03022_1920.webp differ diff --git a/src/assets/images/event/DSC03032.jpg b/src/assets/images/event/DSC03032.jpg deleted file mode 100644 index da31e1d..0000000 Binary files a/src/assets/images/event/DSC03032.jpg and /dev/null differ diff --git a/src/assets/images/event/DSC03032_1920.webp b/src/assets/images/event/DSC03032_1920.webp new file mode 100644 index 0000000..9a6f488 Binary files /dev/null and b/src/assets/images/event/DSC03032_1920.webp differ diff --git a/src/assets/images/speakers/FelixLennardHake.jpg b/src/assets/images/speakers/FelixLennardHake.jpg new file mode 100644 index 0000000..2e10acd Binary files /dev/null and b/src/assets/images/speakers/FelixLennardHake.jpg differ diff --git a/src/assets/images/sponsors/CTH-Logo-vertical_2000px-white.png b/src/assets/images/sponsors/CTH-Logo-vertical_2000px-white.png new file mode 100644 index 0000000..6168bc5 Binary files /dev/null and b/src/assets/images/sponsors/CTH-Logo-vertical_2000px-white.png differ diff --git a/src/assets/images/sponsors/CTH-logo-vertical_white.svg b/src/assets/images/sponsors/CTH-logo-vertical_white.svg new file mode 100644 index 0000000..bcc2d94 --- /dev/null +++ b/src/assets/images/sponsors/CTH-logo-vertical_white.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/sponsors/axelspringer.webp b/src/assets/images/sponsors/axelspringer.webp new file mode 100644 index 0000000..2a61f1b Binary files /dev/null and b/src/assets/images/sponsors/axelspringer.webp differ diff --git a/src/assets/images/sponsors/berta-rudi_logo_negativ_sw.svg b/src/assets/images/sponsors/berta-rudi_logo_negativ_sw.svg new file mode 100644 index 0000000..cf0bcdc --- /dev/null +++ b/src/assets/images/sponsors/berta-rudi_logo_negativ_sw.svg @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/sponsors/cropped-logo-starwit-white.png b/src/assets/images/sponsors/cropped-logo-starwit-white.png new file mode 100644 index 0000000..605ad65 Binary files /dev/null and b/src/assets/images/sponsors/cropped-logo-starwit-white.png differ diff --git a/src/assets/images/sponsors/cropped-logo-starwit.png b/src/assets/images/sponsors/cropped-logo-starwit.png new file mode 100644 index 0000000..1c54ffc Binary files /dev/null and b/src/assets/images/sponsors/cropped-logo-starwit.png differ diff --git a/src/assets/images/sponsors/db.svg b/src/assets/images/sponsors/db.svg new file mode 100644 index 0000000..f2b54bb --- /dev/null +++ b/src/assets/images/sponsors/db.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/sponsors/e-school.svg b/src/assets/images/sponsors/e-school.svg new file mode 100644 index 0000000..c16463f --- /dev/null +++ b/src/assets/images/sponsors/e-school.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/sponsors/holySquad.png b/src/assets/images/sponsors/holySquad.png new file mode 100644 index 0000000..d3d47c4 Binary files /dev/null and b/src/assets/images/sponsors/holySquad.png differ diff --git a/src/assets/images/sponsors/potsdam.webp b/src/assets/images/sponsors/potsdam.webp new file mode 100644 index 0000000..3850dc4 Binary files /dev/null and b/src/assets/images/sponsors/potsdam.webp differ diff --git a/src/assets/images/team/cedric_rische.webp b/src/assets/images/team/cedric_rische.webp new file mode 100644 index 0000000..e4ca088 Binary files /dev/null and b/src/assets/images/team/cedric_rische.webp differ diff --git a/src/assets/images/team/gerome_quantmeyer.webp b/src/assets/images/team/gerome_quantmeyer.webp new file mode 100644 index 0000000..6a7ec88 Binary files /dev/null and b/src/assets/images/team/gerome_quantmeyer.webp differ diff --git a/src/assets/images/team/mathilda_heise.webp b/src/assets/images/team/mathilda_heise.webp new file mode 100644 index 0000000..2f3c368 Binary files /dev/null and b/src/assets/images/team/mathilda_heise.webp differ diff --git a/src/assets/images/team/matti_schmidt.webp b/src/assets/images/team/matti_schmidt.webp new file mode 100644 index 0000000..55ffe6a Binary files /dev/null and b/src/assets/images/team/matti_schmidt.webp differ diff --git a/src/assets/images/team/nikolas_heise.webp b/src/assets/images/team/nikolas_heise.webp new file mode 100644 index 0000000..6a65b8b Binary files /dev/null and b/src/assets/images/team/nikolas_heise.webp differ diff --git a/src/assets/images/team/nikolas_rieger.webp b/src/assets/images/team/nikolas_rieger.webp new file mode 100644 index 0000000..608327f Binary files /dev/null and b/src/assets/images/team/nikolas_rieger.webp differ diff --git a/src/assets/images/team/tanja_lehmann.webp b/src/assets/images/team/tanja_lehmann.webp new file mode 100644 index 0000000..0c07d7f Binary files /dev/null and b/src/assets/images/team/tanja_lehmann.webp differ diff --git a/src/assets/images/team/theo_klinke.webp b/src/assets/images/team/theo_klinke.webp new file mode 100644 index 0000000..3918bec Binary files /dev/null and b/src/assets/images/team/theo_klinke.webp differ diff --git a/src/assets/images/team/uli_prantz.webp b/src/assets/images/team/uli_prantz.webp new file mode 100644 index 0000000..4cab83e Binary files /dev/null and b/src/assets/images/team/uli_prantz.webp differ diff --git a/src/assets/images/team/viktor_kalvoda.webp b/src/assets/images/team/viktor_kalvoda.webp new file mode 100644 index 0000000..15e1af9 Binary files /dev/null and b/src/assets/images/team/viktor_kalvoda.webp differ diff --git a/src/assets/svg/HackHPI_white.svg b/src/assets/svg/HackHPI_white.svg new file mode 100644 index 0000000..e3ff184 --- /dev/null +++ b/src/assets/svg/HackHPI_white.svg @@ -0,0 +1,84 @@ + + + + + + + + + white + + + + + + + + + + + white + + + + diff --git a/src/assets/svg/Wave.astro b/src/assets/svg/Wave.astro deleted file mode 100644 index 7b42aff..0000000 --- a/src/assets/svg/Wave.astro +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - diff --git a/src/assets/svg/mazeBackground.png b/src/assets/svg/mazeBackground.png new file mode 100644 index 0000000..257ff28 Binary files /dev/null and b/src/assets/svg/mazeBackground.png differ diff --git a/src/assets/svg/mazeBackground.svg b/src/assets/svg/mazeBackground.svg new file mode 100644 index 0000000..48c2306 --- /dev/null +++ b/src/assets/svg/mazeBackground.svg @@ -0,0 +1,445 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/videos/1860079.mp4 b/src/assets/videos/1860079.mp4 new file mode 100644 index 0000000..da1234c Binary files /dev/null and b/src/assets/videos/1860079.mp4 differ diff --git a/src/components/About.astro b/src/components/About.astro deleted file mode 100644 index 0a6f58a..0000000 --- a/src/components/About.astro +++ /dev/null @@ -1,38 +0,0 @@ -
-
-
-

- What to expect at HackHPI 2024 -

-

- In the era of rapid urbanization and advancing technologies, the concept - of smart cities has emerged as a solution to address the evolving needs - of our society. To meet these demands of an increasingly digitized - society, government agencies and companies alike must adapt their - infrastructure and embrace state-of-the-art technologies. -

-

- Furthermore, the increasing awareness about climate change urges us to - take steps towards a more sustainable future. Whether it be our way of - transportation or our general lifestyle, clever designs and coding - solutions can motivate us to do better. -

-

- However, much work still needs to be done in making our cities work - seamlessly and environmentally friendly. Therefore, this year focuses on - developing solutions for tomorrow's urban society and solving problems - we already face. -

-

- For two consecutive days, we will bring motivated students from - different backgrounds together at HPI near Berlin. By providing - world-class sponsors, including workshops and access to their data and - APIs, a great location and plenty of caffeine to fuel your brain, we - will create a space for creativity, inspiring ideas and a passion for - trying out new things. -

-
-
-
diff --git a/src/components/Faq.astro b/src/components/Faq.astro deleted file mode 100644 index 0440b4e..0000000 --- a/src/components/Faq.astro +++ /dev/null @@ -1,46 +0,0 @@ ---- -import faq from "../assets/data/faq.json"; ---- - -
-
-
-
-

- Frequently asked questions -

-

- Can't find the answer you're looking for? You can always send us an email with your enquiry. Furthermore, you can find the MLH's code of - conduct - here. -

-
-
-
- { - faq.map((it) => ( -
-
- {it.question} -
-
-

{it.answer}

-
-
- )) - } -
-
-
-
-
diff --git a/src/components/Faq/Faq.jsx b/src/components/Faq/Faq.jsx new file mode 100644 index 0000000..279c610 --- /dev/null +++ b/src/components/Faq/Faq.jsx @@ -0,0 +1,211 @@ +'use client' +import { + Box, + Button, + Card, + CardActions, + CardContent, + Container, + Grid, + Link, + List, + ListItemButton, + ListItemIcon, + Stack, + Typography, + useMediaQuery, + useTheme +} from "@mui/material"; +import React from "react"; +import {KeyboardArrowRight} from "@mui/icons-material"; +import {WindowCard} from "../WindowCard/WindowCard.jsx"; +import {Masonry} from "@mui/lab"; +import HackHPIWrapper from "../Theme/HackHPIWrapper.jsx"; + +let faqs = [ + { + name: "General", + items: [ + { + title: "What is a hackathon?", + text: "A hackathon is an amazing event where students come together to collaborate to turn crazy ideas into real projects. \n" + + "In the case of HackHPI for two consecutive days, students come together on HPI's campus in Potsdam, Germany to be creative, challenge the status quo, implement innovative ideas using code, gadgets and open data, create meaningful impact, and also to simply have a great time!" + }, { + title: "What's so special about HackHPI?", + text: "There are very few hackathons focusing on social issues; we want to fix that and give you the chance to change the world for the better by building applications that truly matter! You will also have the opportunity to get in touch with our awesome partners, slip into their shoes and solve real-world challenges using their APIs and expertise." + }, { + title: "Will HackHPI 2024 take place onsite?", + text: "Yes, and that's quite a sure thing. We believe that Hackathons need the human contact that only in-person events can provide, and we're glad to announce that the HackHPI 2024 will be an in-presence only event!" + }, { + title: "Are there any costs for me?", + text: "Nope! HackHPI is completely free, and we provide you with food, drinks (and a lot of caffeine! :D) during the whole Hackathon. Unfortunately, we are not able to provide travel reimbursements. However, as an attendee, your confirmation email will include a link to our DB Event Ticket to receive a discount when booking via DB." + }, { + title: "Where can I stay during the Hackathon?", + text: "This is an all-night Hackathon, meaning that we won't stop until the last one standing. We will provide rooms in which you can sleep or just rest, but you're required to bring your own sleeping bag and air mattress. We're also planning on organizing a couch surfing option from Thursday to Friday for everybody coming early. If you wish to participate in this, whether you want to stay or offer a bed, please note that down when filling in the application form." + }, { + title: "How can I get to the location?", + text: "Take S7 from Berlin Central Station (\"Hauptbahnhof\") towards Potsdam and exit at Griebnitzsee." + }, { + title: "How should I prepare?", + text: "Bring your laptop and a charger, comfortable clothes, and, above all, motivation to hack! You can dive into the topic of Smart Cities in advance, but there will be introductory sessions as well." + } + ] + }, + { + name: "Application", + items: [ + { + title: "How does the application process work?", + text: "You can apply by filling all required information into the form during the application phases. All we need is some basic information. Then you’ll be on your way to HackHPI in no time!\n" + + "We kindly ask you to only do so if you are planning to attend the hackathon, as you might otherwise take someone else's place. We will then evaluate your application and inform everyone by the mid of March. Even if you are not selected at the beginning, you might have the chance to move up in our listings if someone else decides to leave. In cases where you need a prioritized response, indicate it in the form and we will try to contact you faster.\n" + }, + { + title: "Who can attend and are there any requirements to attend?", + text: "If you’re a university or high-school student, you're good to go! We believe that diverse teams come up with more creative solutions. A hackathon should be a way to experience teamwork and work on your abilities. We therefore encourage every major to apply, and give a warm welcome to young professionals as well. However, due to german law, every participant has to be at least 18 years old. There are no further requirements" + }, + { + title: "How can we apply as a team?", + text: "Teams will consist of about 5 people. In the registration form, you will be able to fill in with whom you would like to be in a team. However, everyone has to register themselves!" + }, + { + title: "When will applications close??", + text: "Applications will open 15th February - 15th March." + }, + { + title: "When will I hear back?", + text: "Please note that your acceptance must be confirmed. As the event gets closer, you will receive a notification to confirm your attendance." + } + ] + }, + { + name: "Hacking", + items: [ + { + title: "What are the challenges?", + text: "All challenges are connected to the subject of Smart Cities, but we cannot tell you what awaits you. And honestly, who wants to miss the thrill of a surprise challenge? Anyway, the exact challenges will be announced at the event, so stay tuned!" + }, + { + title: "What are the prizes?", + text: "There’ll be an overall prize pool for the best teams in different categories. You will find out more at the event!" + }, + { + title: "How big are the teams?", + text: "Each team will consist of about 5 people. Teams of less than 4 people will be filled up with great people, and teams of more than 6 people will be split into smaller teams, as we have found that teams that are too small or too large are not ideal for our 2-day event." + }, + { + title: "What if I don’t have a team?", + text: "Don't worry! Most of our participants don't have a team while applying. That's why we've come up with a few ways for you to get to know other participants before and during the HackHPI hackathon. Just register as an individual participant and we'll help you connect with others before and during the event!" + }, + { + title: "Is there a code of conduct?", + text: "Yes. We comply with the MLH's code of conduct, which all attendees, partners, volunteers, and staff are required to agree to. We expect all of our attendees to be respectful and considerate of others. You can find the MLH's code of conduct here (https://static.mlh.io/docs/mlh-code-of-conduct.pdf)." + }, + { + title: "What about food and accommodation?", + text: "HackHPI provides plenty of free food and accommodation at the event. We will provide rooms where you can sleep or just rest. There will be a separate women's sleeping/rest area. This area will be fairly modest, so we recommend bringing a sleeping bag for comfort." + } + ] + } +] + + +export function Faq() { + const [selectedIndex, setSelectedIndex] = React.useState(0); + const theme = useTheme(); + const matches = useMediaQuery(theme.breakpoints.up('sm')); + const handleListItemClick = ( + event, + index, + ) => { + setSelectedIndex(index); + }; + return ( + + + Frequently asked + questions + Can't find the answer you're looking for? You + can + always send us an email with your + inquiry! + + + + + + { + faqs.map((faq, idx) => ( + handleListItemClick(event, idx)} + sx={{padding: 1}} + > + + + + {faq.name} + + )) + } + + + + + + Still have Questions? + If you didn't find what you are looking for, feel free to + ask! + + + + + + + + + + { + faqs[selectedIndex].items.map((faq, idx) => ( + + + {faq.title} + + {faq.text} + + + + {/* + + } + aria-controls={faq.title+"-content"} + id={faq.title+"-header"} + sx={{fontSize: "1.5rem"}} + noWrap + > + {faq.title} + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse + malesuada lacus ex, sit amet blandit leo lobortis eget. + + + */} + + ) + ) + + } + + + + + + + ) + +} diff --git a/src/components/Features/Features.jsx b/src/components/Features/Features.jsx new file mode 100644 index 0000000..907072d --- /dev/null +++ b/src/components/Features/Features.jsx @@ -0,0 +1,71 @@ +import {Box, Card, Container, Grid, Typography} from "@mui/material"; +import {Campaign, ConfirmationNumber, EmojiEvents, MoneyOff} from "@mui/icons-material"; +import React from "react"; + +export function IconContainer(props) { + return ( + + {React.cloneElement(props.icon, {sx: {color: "white"}, style: {width: "65%", height: "auto"}})} + + ) +} + +export function Features() { + + const features = [ + { + icon: , + title: "Completely free (including food)", + subtitle: "Yes, completely free! This includes challenges, workshops, networking events, meals/snacks, and everything else during the event!" + }, + { + icon: , + title: "Cash prizes totaling up to €3500", + subtitle: "Up for grabs are cash prizes totaling up to €3500, and among other things, €100 for the best meme of the event." + }, + { + icon: , + title: "Free tickets for the Urban Innovation Forum in Berlin", + subtitle: "All participants are invited to attend the Urban Innovation Forum in Berlin on March 20th for FREE, hosted by our partner the Climate Tech Hub." + }, + { + icon: , + title: "Pitch your idea at the Greentech Festival in Berlin", + subtitle: "Two of this year’s HackHPI winning team, will have the opportunity to pitch the results at the startup stage of the Greentech Festival in Berlin on May 18th." + } + ] + + return ( + + + {features.map((feature, i) => ( + + + + + + + + + {feature.title} + + + {feature.subtitle} + + + + + + ))} + + + + ) +} \ No newline at end of file diff --git a/src/components/Footer.astro b/src/components/Footer.astro deleted file mode 100644 index a256611..0000000 --- a/src/components/Footer.astro +++ /dev/null @@ -1,143 +0,0 @@ ---- -import { Icon } from "astro-icon"; - -const socials = [ - { - name: "GitHub", - href: "https://github.com/HackHPI/hackhpi.github.io", - icon: "mdi:github", - }, - { - name: "LinkedIn", - href: "https://www.linkedin.com/company/hackhpi", - icon: "mdi:linkedin", - }, - { - name: "Instagram", - href: "https://www.instagram.com/hack.hpi", - icon: "mdi:instagram", - }, - { - name: "Facebook", - href: "https://www.facebook.com/HackHPI", - icon: "ic:baseline-facebook", - }, - { - name: "Twitter", - href: "https://twitter.com/HackHPI", - icon: "mdi:twitter", - }, - { - name: "Mail", - href: "mailto:team@hackhpi.org", - icon: "mdi:email", - }, -]; ---- - - diff --git a/src/components/Footer/Footer.jsx b/src/components/Footer/Footer.jsx new file mode 100644 index 0000000..41ef6f2 --- /dev/null +++ b/src/components/Footer/Footer.jsx @@ -0,0 +1,131 @@ +'use client' +import { + Card, + Container, + Divider, + Grid, + IconButton, + Link, + Stack, + Typography, + useMediaQuery, + useTheme +} from "@mui/material"; +import {GitHub, Instagram, LinkedIn, Mail} from "@mui/icons-material"; +import HackHPIWrapper from "../Theme/HackHPIWrapper.jsx"; +import HackHpiLogo from "../../assets/svg/HackHPI_white.svg" + +const socials = [ + { + icon: , + link: "https://github.com/HackHPI/hackhpi.github.io", + }, + { + icon: , + link: "https://www.linkedin.com/company/hackhpi", + }, + { + icon: , + link: "https://www.instagram.com/hack.hpi", + }, + { + icon: , + link: "mailto:team@hackhpi.org", + }, +] + + +function Footer() { + + const theme = useTheme(); + const matches = useMediaQuery(theme.breakpoints.up('sm')); + + + return ( + + + + + + + {"Logo + + + + HPI + + + Website + + + + + Public Relations + + + + + Legal + + + Imprint + + + + + Privacy Policy + + + + + More + + + + Code of Conduct + + + + + + + + © {new Date().getFullYear()} HackHPI. All rights + reserved. + + + + {socials.map((social) => ( + + {social.icon} + + ))} + + + + + + + ) +} + +export default Footer \ No newline at end of file diff --git a/src/components/Gallery/Gallery.jsx b/src/components/Gallery/Gallery.jsx new file mode 100644 index 0000000..d945c8f --- /dev/null +++ b/src/components/Gallery/Gallery.jsx @@ -0,0 +1,146 @@ +'use client' +import {Box, Container, Grid, ImageList, ImageListItem, Typography} from "@mui/material"; +import React from "react"; +import DSC02572 from '../../assets/images/event/DSC02572_1920.webp' +import DSC02594 from '../../assets/images/event/DSC02594_1920.webp' +import DSC02601 from '../../assets/images/event/DSC02601_1920.webp' +import DSC02604 from '../../assets/images/event/DSC02604_1920.webp' +import DSC02609 from '../../assets/images/event/DSC02609_1920.webp' +import DSC02617 from '../../assets/images/event/DSC02617_1920.webp' +import DSC02619 from '../../assets/images/event/DSC02619_1920.webp' +import DSC02630 from '../../assets/images/event/DSC02630_1920.webp' +import DSC02632 from '../../assets/images/event/DSC02632_1920.webp' +import DSC02635 from '../../assets/images/event/DSC02635_1920.webp' +import DSC02638 from '../../assets/images/event/DSC02638_1920.webp' +import DSC02639 from '../../assets/images/event/DSC02639_1920.webp' +import DSC02643 from '../../assets/images/event/DSC02643_1920.webp' +import DSC02645 from '../../assets/images/event/DSC02645_1920.webp' +import DSC02646 from '../../assets/images/event/DSC02646_1920.webp' +import DSC02659 from '../../assets/images/event/DSC02659_1920.webp' +import DSC02677 from '../../assets/images/event/DSC02677_1920.webp' +import DSC02680 from '../../assets/images/event/DSC02680_1920.webp' +import DSC02762 from '../../assets/images/event/DSC02762_1920.webp' +import DSC02810 from '../../assets/images/event/DSC02810_1920.webp' +import DSC02820 from '../../assets/images/event/DSC02820_1920.webp' +import DSC02823 from '../../assets/images/event/DSC02823_1920.webp' +import DSC02824 from '../../assets/images/event/DSC02824_1920.webp' +import DSC02830 from '../../assets/images/event/DSC02830_1920.webp' +import DSC02868 from '../../assets/images/event/DSC02868_1920.webp' +import DSC02870 from '../../assets/images/event/DSC02870_1920.webp' +import DSC02872 from '../../assets/images/event/DSC02872_1920.webp' +import DSC02876 from '../../assets/images/event/DSC02876_1920.webp' +import DSC02879 from '../../assets/images/event/DSC02879_1920.webp' +import DSC02886 from '../../assets/images/event/DSC02886_1920.webp' +import DSC02889 from '../../assets/images/event/DSC02889_1920.webp' +import DSC02903 from '../../assets/images/event/DSC02903_1920.webp' +import DSC02908 from '../../assets/images/event/DSC02908_1920.webp' +import DSC02914 from '../../assets/images/event/DSC02914_1920.webp' +import DSC02919 from '../../assets/images/event/DSC02919_1920.webp' +import DSC02920 from '../../assets/images/event/DSC02920_1920.webp' +import DSC02923 from '../../assets/images/event/DSC02923_1920.webp' +import DSC02926 from '../../assets/images/event/DSC02926_1920.webp' +import DSC02928 from '../../assets/images/event/DSC02928_1920.webp' +import DSC02931 from '../../assets/images/event/DSC02931_1920.webp' +import DSC02941 from '../../assets/images/event/DSC02941_1920.webp' +import DSC02946 from '../../assets/images/event/DSC02946_1920.webp' +import DSC02949 from '../../assets/images/event/DSC02949_1920.webp' +import DSC02957 from '../../assets/images/event/DSC02957_1920.webp' +import DSC02962 from '../../assets/images/event/DSC02962_1920.webp' +import DSC02969 from '../../assets/images/event/DSC02969_1920.webp' +import DSC02974 from '../../assets/images/event/DSC02974_1920.webp' +import DSC02983 from '../../assets/images/event/DSC02983_1920.webp' +import DSC02992 from '../../assets/images/event/DSC02992_1920.webp' +import DSC02998 from '../../assets/images/event/DSC02998_1920.webp' +import DSC03006 from '../../assets/images/event/DSC03006_1920.webp' +import DSC03022 from '../../assets/images/event/DSC03022_1920.webp' +import DSC03032 from '../../assets/images/event/DSC03032_1920.webp' + +let images = { + name: "2023", + subtitle: "about://building-trust-in-digital-state", + items: [ + DSC02572, + DSC02594, + DSC02601, + DSC02604, + DSC02609, + DSC02617, + DSC02619, + DSC02630, + DSC02632, + DSC02635, + DSC02638, + DSC02639, + DSC02643, + DSC02645, + DSC02646, + DSC02659, + DSC02677, + DSC02680, + DSC02762, + DSC02810, + DSC02820, + DSC02823, + DSC02824, + DSC02830, + DSC02868, + DSC02870, + DSC02872, + DSC02876, + DSC02879, + DSC02886, + DSC02889, + DSC02903, + DSC02908, + DSC02914, + DSC02919, + DSC02920, + DSC02923, + DSC02926, + DSC02928, + DSC02931, + DSC02941, + DSC02946, + DSC02949, + DSC02957, + DSC02962, + DSC02969, + DSC02974, + DSC02983, + DSC02992, + DSC02998, + DSC03006, + DSC03022, + DSC03032, + + ] +} + + +export function Gallery() { + return ( + + Gallery + + + + + {images.items.map((item, i) => ( + + {item.title} + + ))} + + + + + + ) + +} \ No newline at end of file diff --git a/src/components/Header.astro b/src/components/Header.astro deleted file mode 100644 index 571f0c5..0000000 --- a/src/components/Header.astro +++ /dev/null @@ -1,31 +0,0 @@ ---- -const navigation = [ - { name: "Home", href: "/" }, - { name: "Gallery", href: "/gallery" }, - { name: "Rules", href: "/rules" }, -]; ---- - -
- -
diff --git a/src/components/Hero.astro b/src/components/Hero.astro deleted file mode 100644 index c826aa4..0000000 --- a/src/components/Hero.astro +++ /dev/null @@ -1,57 +0,0 @@ ---- -import { Icon } from "astro-icon"; -import Wave from "../assets/svg/Wave.astro"; ---- - -
-
-
-
- -

- tomorrow's reality, today's vision.
smart cities edition. -

-

- - - - 5th – 6th April 2024 -

-

- - - - Hasso Plattner Institute -

- -
-
- -
-
- -
-
diff --git a/src/components/Imprint/Imprint.jsx b/src/components/Imprint/Imprint.jsx new file mode 100644 index 0000000..412ed45 --- /dev/null +++ b/src/components/Imprint/Imprint.jsx @@ -0,0 +1,56 @@ +import {Box, Container, Link, Stack, Typography} from "@mui/material"; + +function Imprint() { + return ( + + + + Impressum + Diese Webseite wird betrieben vom + + HackHPI Klub + + + am Hasso-Plattner-Institut + + + Prof.-Dr.-Helmert-Str. 2-3 + + + 14482 Potsdam + + + E-Mail: team@hackhpi.org + + Inhaltlich verantwortlich gemäß § 5 TMG, § 55 RStV: Klubsprecher Theo + Klinke, Mathilda Heise und Uli Prantz + + + Haftungsausschluss + + Trotz größtmöglicher Sorgfalt kann nicht ausgeschlossen werden, dass + einzelne Informationen auf dieser Seite veraltet oder nicht zutreffend + sind. Es wird keine Haftung für Aktualität, Genauigkeit und + Vollständigkeit der publizierten Informationen übernommen. Für den Inhalt + verlinkter externer Webseiten sind lediglich deren Betreiber + verantwortlich. + + + + Urheber der verwendeten Bilder + + HPI Hauptgebäude: HPI/K. Herschelmann + + + HPI School of Design Thinking: Nico Böckhoff + + + Partner-Logos: Der jeweilige Partner + + + + + ) +} + +export default Imprint \ No newline at end of file diff --git a/src/components/LandingImage/Countdown.jsx b/src/components/LandingImage/Countdown.jsx new file mode 100644 index 0000000..7b65525 --- /dev/null +++ b/src/components/LandingImage/Countdown.jsx @@ -0,0 +1,23 @@ +'use client' +import {Typography} from "@mui/material"; +import {useEffect, useState} from "react"; + +function Countdown() { + + const [timeLeft, setTimeLeft] = useState(new Date(new Date(2024, 3, 5) - new Date())) + + useEffect(() => { + const i = setInterval(() => { + setTimeLeft(new Date(new Date(2024, 3, 5) - new Date())) + }, 1000); + return () => clearInterval(i); + }, []); //dependency, if end changes remount + + return ( + + {`${Math.round(timeLeft / (24 * 60 * 60 * 1000))} Days`} + + ) +} + +export default Countdown; \ No newline at end of file diff --git a/src/components/LandingImage/LandingImage.jsx b/src/components/LandingImage/LandingImage.jsx new file mode 100644 index 0000000..3711fa2 --- /dev/null +++ b/src/components/LandingImage/LandingImage.jsx @@ -0,0 +1,82 @@ +'use client' +import {Box, Button, Card, Container, Stack, Typography} from "@mui/material"; +import {TypeAnimation} from "react-type-animation"; +import Countdown from "./Countdown.jsx"; +import {CalendarMonthOutlined} from "@mui/icons-material"; + +function LandingImage() { + + return ( + + + + + {"HackHPI +
+ + + + +
+ + + + + + + 5th - 6th April + + + + +
+
+
+ ) +} + +export default LandingImage \ No newline at end of file diff --git a/src/components/Newsletter.astro b/src/components/Newsletter.astro deleted file mode 100644 index 3227897..0000000 --- a/src/components/Newsletter.astro +++ /dev/null @@ -1,39 +0,0 @@ -
-
-
-
-

- Want to stay in the loop? -

-

- Sign up for our newsletter. -

-

- We use Brevo as our marketing platform. By clicking below to submit - this form, you acknowledge that the information you provided will be - transferred to Brevo for processing in accordance with their terms of use. -

-
- -
-
-
diff --git a/src/components/Newsletter/Newsletter.jsx b/src/components/Newsletter/Newsletter.jsx new file mode 100644 index 0000000..f842be4 --- /dev/null +++ b/src/components/Newsletter/Newsletter.jsx @@ -0,0 +1,49 @@ +import {Box, Container, Grid, Link, Typography} from "@mui/material"; +import HackHPIWrapper from "../Theme/HackHPIWrapper.jsx"; + +function Newsletter() { + + return ( + + + + + + + + + + Want to stay in the loop? + + + Sign up for our newsletter. + + + We use Brevo as our marketing platform. By clicking below to submit + this form, you acknowledge that the information you provided will be + transferred to Brevo for processing in accordance with their terms of use. + + + + + + + + ) + +} + +export default Newsletter \ No newline at end of file diff --git a/src/components/Registration/Registration.jsx b/src/components/Registration/Registration.jsx new file mode 100644 index 0000000..b1287c2 --- /dev/null +++ b/src/components/Registration/Registration.jsx @@ -0,0 +1,528 @@ +'use client' +import { + Box, + Button, + Checkbox, + Container, + FormControl, + FormControlLabel, + FormHelperText, + FormLabel, + Grid, + Link, + MenuItem, + Radio, + RadioGroup, + Select, + Stack, + Step, + StepContent, + StepLabel, + Stepper, + TextField, + Typography +} from "@mui/material"; +import * as React from 'react'; +import {useMemo, useState} from 'react'; +import HackHPIWrapper from "../Theme/HackHPIWrapper.jsx"; +import {LoadingButton} from "@mui/lab"; +import {RegistrationRest} from "../../rest/RegistrationRest.js"; +import {Mail, Send} from "@mui/icons-material"; + +// types: 0 = empty, 1 = textfield, 2 = date, 3 = select, 4 = radio + +const registrationClosed = true; +const personalData = [ + { + formLabel: 'First name', + type: 1, + input: ['First Name'], + name: "forename", + max: 50, + min: 2, + required: true, + }, + { + formLabel: 'Last name', + type: 1, + input: ['Last Name'], + name: "surname", + max: 50, + min: 2, + required: true, + }, + { + formLabel: 'Date of birth', + type: 2, + name: "age", + required: true, + }, + { + formLabel: 'Gender', + type: 3, + input: ['male', 'female', 'diverse'], + name: "gender", + required: true, + }, + { + formLabel: 'E-mail', + type: 1, + input: ['example@example.com'], + name: "email", + regex: /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/, + required: true, + }, + { + formLabel: 'T-shirt size', + type: 3, + input: ['XS', 'S', 'M', 'L', 'XL', 'XXL'], + name: "shirtSize", + required: true, + }, + { + formLabel: 'Diet preferences', + type: 3, + input: ['omnivore', 'vegetarian', 'vegan'], + name: "dietPreference", + required: true, + }, + { + formLabel: 'Allergies', + type: 1, + input: ['e. g. gluten, ...'], + helperText: 'Please let us know if you have severe allergies that we must know about.', + name: "allergies", + max: 150, + required: false, + }, + { + formLabel: 'University/School/Institute', + type: 1, + input: ['e. g. University of Potsdam'], + name: "university", + max: 150, + min: 2, + required: true, + }, + { + formLabel: 'Course of study', + type: 1, + input: ['e. g. Computer Science'], + name: "fieldOfStudy", + max: 150, + min: 2, + required: true, + }, + { + formLabel: 'Intended degree', + type: 3, + input: ['High School Diploma', 'Bachelor', 'Master', 'PhD'], + name: "intendedDegree", + required: true, + } +] + +const motivation = [ + { + formLabel: 'How did you hear from us?', + type: 4, + input: ['university/school/institute', 'friends/other students', 'LinkedIn', 'Instagram'], + name: "howDidYouHear", + required: false, + }, + { + formLabel: '', + type: 0, + }, + { + formLabel: 'Your motivation', + type: 1, + input: ['My motivation is ...'], + helperText: 'Please write a short text (max. 1200 characters) or 3 key phrases describing your motivation to be part of HackHPI. If you can\'t think of anything, take the following questions as guidance: Can you share a project, creation, or task that holds a special place as one of your favorites? What motivated you to undertake it, and what aspects make you proud of the outcome?', + rows: 5, + name: "motivation", + max: 1200, + min: 10, + required: true, + }, +] +// TODO: maximal capacity for motivation text: 150 words + +const skills = [ + { + formLabel: 'Tech stack', + type: 1, + input: ['e. g. Python, ...'], + helperText: 'Please note programming languages, frameworks, etc. you have already worked with.', + rows: 3, + name: "techStack", + max: 300, + required: false, + }, + { + formLabel: 'Previous experiences / studies / projects...', + type: 1, + input: ['e. g. working student at HPI, ...'], + helperText: 'Outline the most important steps of your CV like work experiences, studies and projects.', + rows: 3, + name: "basicOutline", + max: 500, + required: false, + }, + { + formLabel: 'GitHub account', + type: 1, + input: ['e. g. maxm90'], + name: "github", + max: 50, + required: false, + }, + { + formLabel: 'LinkedIn account', + type: 1, + input: ['e. g. /in/max-mustermann'], + name: "linkedin", + max: 50, + required: false, + }, +] + +const teamMembers = [ + { + formLabel: 'Team member 1', + type: 1, + input: ['Name 1'], + max: 100, + required: false, + name: "team1" + }, + { + formLabel: 'Team member 2', + type: 1, + input: ['Name 2'], + max: 100, + required: false, + name: "team2" + }, + { + formLabel: 'Team member 3', + type: 1, + input: ['Name 3'], + max: 100, + required: false, + name: "team3" + }, + { + formLabel: 'Team member 4', + type: 1, + input: ['Name 4'], + max: 100, + required: false, + name: "team4" + }, + { + formLabel: 'Team member 5', + type: 1, + input: ['Name 5'], + max: 100, + required: false, + name: "team5" + }, + { + formLabel: '', + type: 0, + }, + { + formLabel: "Privacy Policy", + input: ["I have read and accept the Privacy Policy."], + name: "privacyPolicy", + type: 5, + required: true + } +] + +const steps = [ + { + label: 'Personal data', + content: personalData, + }, + { + label: 'Motivation', + content: motivation, + }, + { + label: 'Skills', + content: skills, + }, + { + label: 'Team members', + content: teamMembers, + }, + { + label: 'E-Mail Verification', + children: ( + + + + To complete the registration, please click on the link in the email we sent + you! + + + ), + }, +]; + + +function Registration() { + const [activeStep, setActiveStep] = React.useState(0); + const [values, setValues] = useState({}); + const [isSending, setIsSending] = useState(false); + const registrationRest = useMemo(() => new RegistrationRest(), []) + + function handleChange(name, inputValue) { + const newValue = {...values} + newValue[name] = inputValue; + setValues(newValue); + } + + function enableNext(inputList, name) { + if (!inputList) { + return; + } + const result = inputList.content.reduce((previous, current) => { + if (!current.required && (values[current.name] === undefined || values[current.name] === "")) { + return previous && true + } + if (current.required && ((!values[current.name] && values[current.name] !== 0) || values[current.name] === "")) { + return previous && false + } + const meetsMax = current.max ? values[current.name]?.length <= current.max : true; + const meetsMin = current.min ? values[current.name]?.length >= current.min : true; + + const meetsAll = meetsMax && meetsMin + return previous && meetsAll + + }, true) + return result + } + + + function contentForm(props) { + const type = props.type; + const input = props.input; + const name = props.name; + const rows = props.rows; + + switch (type) { + case 1: + return handleChange(event.target.name, event.target.value)} + /> + case 2: + return handleChange(event.target.name, event.target.value)} + /> + case 3: + return + case 4: + return handleChange(event.target.name, value)} + errorCheck + > + {input.map((item, i) => ( + } key={i} label={item}/> + ))} + + case 5: + return handleChange(name, value)}/>} + label={input.join("")}/> + + default: + return null + } + } + + function gridItemSize(props) { + if (props.name === "motivation") { + return 12 + } else { + return 6 + } + } + + const handleNext = () => { + setActiveStep((prevActiveStep) => prevActiveStep + 1); + }; + + const handleBack = () => { + setActiveStep((prevActiveStep) => prevActiveStep - 1); + }; + + const submitForm = () => { + setIsSending(true); + registrationRest.addRegistration(values).then(() => { + setIsSending(false); + handleNext() + }).catch(() => { + alert("Could not save Registration. Did you already submit? Please check your spam folder for verification mail.") + setIsSending(false) + }) + + } + + function renderNextButton(index, step) { + if (index === steps.length - 1) { + return + } + if (index === steps.length - 2) { + return ( + } + loading={isSending} + onClick={submitForm} + disabled={true || !enableNext(steps[index], step.label)} + > + Send + + ) + } + + return ( + + ) + + } + + function renderRegistration() { + if (registrationClosed) { + return ( + + + Registration is closed! + + + We are currently reviewing all applications and will reach out to you soon. + + + ) + } + + return( + <> + + {steps.map((step, index) => ( + + optional + ) : null + } + > + + + {step.label} + + + + + + + + + {step.children ? step.children : step.content.map((item, i) => ( + + + + {item.formLabel}{item.required ? "*" : ""} + + {contentForm({ + type: item.type, + input: item.input, + rows: item.rows, + name: item.name + })} + {item.helperText} + + + ))} + + + {renderNextButton(index, step)} + {index === steps.length - 1 ? undefined : + + + } + + + + + + + + + ))} + + Read our privacy + policy for information on how we handle your data and what you rights are. + + ) + } + + return ( + + + + Registration + {!registrationClosed ? Apply now before March 15th! : undefined} + {renderRegistration()} + + + ) +} + +export default Registration + +//TODO: +// Ja zur Datenschutzerklärung +// Please check your mailbox to confirm your registration \ No newline at end of file diff --git a/src/components/Speakers/Speakers.jsx b/src/components/Speakers/Speakers.jsx new file mode 100644 index 0000000..c21a8c1 --- /dev/null +++ b/src/components/Speakers/Speakers.jsx @@ -0,0 +1,72 @@ +"use client" +import {Box, Container, Grid, Paper, Stack, Typography, useTheme} from "@mui/material"; +import FelixLennardHake from "../../assets/images/speakers/FelixLennardHake.jpg" +import {WindowCard} from "../WindowCard/WindowCard"; + +const speakers = { + primary: [ + { + name: "Felix Lennart Hake", + position: "Mobility policy officer at Bitkom, Germany's digital association", + profilePicture: FelixLennardHake.src, + description: "Felix is responsible for Bitkom's political and regulatory work on smart mobility. Together with manufacturers, tech companies, mobility service providers and transport companies, Felix is committed to a connected, intelligent and sustainable mobility ecosystem - in rural areas as well as in cities and metropolitan regions. He is also responsible for the Digital Aviation working group. Prior to joining Bitkom, Felix worked for a political strategy and communications consultancy for several years and completed a Blue Book traineeship in the EU Commission's DG CONNECT. He studied sociology, politics and economics as well as European studies and political science in Friedrichshafen, Paris and Berlin.", + linkedIn: "felix-lennart-hake" + }, + ], +} + +function Speakers() { + const theme = useTheme(); + return ( + + Speakers + + + + {speakers.primary.map(speaker => ( + + + + + + + + + {speaker.name} + + {speaker.position} + + + + {speaker.description} + + + + + + ))} + + + + + ) +} + +export default Speakers; \ No newline at end of file diff --git a/src/components/Sponsors/Sponsors.jsx b/src/components/Sponsors/Sponsors.jsx new file mode 100644 index 0000000..0bc5ff2 --- /dev/null +++ b/src/components/Sponsors/Sponsors.jsx @@ -0,0 +1,74 @@ +import {Box, Container, Grid, Link} from "@mui/material"; +import ESchool from "../../assets/images/sponsors/e-school.svg" +import React from "react"; +import HackHPIWrapper from "../Theme/HackHPIWrapper.jsx"; +import ClimateTechHub from "../../assets/images/sponsors/CTH-logo-vertical_white.svg"; +import HolySquad from "../../assets/images/sponsors/holySquad.png"; +import DB from "../../assets/images/sponsors/db.svg"; +import Potsdam from "../../assets/images/sponsors/potsdam.webp"; +import AxelSpringer from "../../assets/images/sponsors/axelspringer.webp"; +import BertaRudi from "../../assets/images/sponsors/berta-rudi_logo_negativ_sw.svg"; + +function Sponsors() { + + const sponsors = [ + { + logo: ClimateTechHub.src, + alt: "Logo of Climate Tech Hub", + link: "https://www.climate-tech-hub.com/" + }, { + logo: ESchool.src, + alt: "Logo of HPI E-School", + link: "https://hpi.de/entrepreneurship/home.html" + }, { + logo: HolySquad.src, + alt: "Logo of HolySquad", + link: "https://de.weareholy.com/" + }, { + logo: DB.src, + alt: "Logo of Deutsche Bahn", + link: "https://www.deutschebahn.com/" + }, { + logo: Potsdam.src, + alt: "Logo of the City of Potsdam", + link: "https://www.potsdam.de/de" + }, { + logo: AxelSpringer.src, + alt: "Logo of Axel Springer", + link: "https://www.axelspringer.com/" + },{ + logo: BertaRudi.src, + alt: "Logo of Berta Rudi", + link: "https://berta-rudi.com/?utm_source=crossmedial&utm_medium=hpihack&utm_campaign=hackathon" + }, + ] + + return ( + + + + + {sponsors.map((sponsor, idx) => ( + + + + + + ))} + + + + + + + ) + +} + +export default Sponsors; \ No newline at end of file diff --git a/src/components/Team.astro b/src/components/Team.astro deleted file mode 100644 index 8f6681e..0000000 --- a/src/components/Team.astro +++ /dev/null @@ -1,45 +0,0 @@ ---- -import team from "../assets/data/team.json"; ---- - -
-
-
-
-

Team

-

Get to know the organizers

-
-
    - { - team.map((it) => ( -
  • -
    - {it.image ? ( - - ) : ( - - )} -
    -

    {it.name}

    -
    -
    -
  • - )) - } -
-
-
-
diff --git a/src/components/Team/Team.jsx b/src/components/Team/Team.jsx new file mode 100644 index 0000000..fbd43b8 --- /dev/null +++ b/src/components/Team/Team.jsx @@ -0,0 +1,183 @@ +'use client' +import CedricRischeProfile from "../../assets/images/team/cedric_rische.webp" +import MathildaHeiseProfile from "../../assets/images/team/mathilda_heise.webp" +import MattiSchmidtProfile from "../../assets/images/team/matti_schmidt.webp" +import NikolasRiegerProfile from "../../assets/images/team/nikolas_rieger.webp" +import TanjaLehmannProfile from "../../assets/images/team/tanja_lehmann.webp" +import TheoKlinkeProfile from "../../assets/images/team/theo_klinke.webp" +import ViktorKalvodaProfile from "../../assets/images/team/viktor_kalvoda.webp" +import GeromeQuantmeyerProfile from "../../assets/images/team/gerome_quantmeyer.webp" +import UliPrantzProfile from "../../assets/images/team/uli_prantz.webp" +import {Avatar, Box, Card, Container, Grid, Link, Stack, Typography, useMediaQuery, useTheme} from "@mui/material"; +import {LinkedIn, Mail} from "@mui/icons-material"; +import {useEffect, useState} from "react"; + + +const teamMembers = [ + { + name: "Cedric Rische", + position: "Team Member", + linkedIn: "cedric-rische", + profilePicture: CedricRischeProfile + }, + { + name: "Mathilda Heise", + position: "Team Member", + linkedIn: "mathilda-heise-9203a3258", + profilePicture: MathildaHeiseProfile + }, + { + name: "Matti Schmidt", + position: "Professioneller Gitarrenspieler", + linkedIn: "matti-schmidt-ac", + profilePicture: MattiSchmidtProfile + }, + { + name: "Nikolas Rieger", + position: "Team Member", + profilePicture: NikolasRiegerProfile, + linkedIn: "nikolas-rieger" + }, + { + name: "Tanja Lehmann", + position: "Team Member", + linkedIn: "tanja-lehmann-36713a265", + profilePicture: TanjaLehmannProfile + }, + { + name: "Theo Klinke", + position: "Team Member", + linkedIn: "theo-klinke", + profilePicture: TheoKlinkeProfile + }, + { + name: "Viktor Kalvoda", + position: "Team Member", + profilePicture: ViktorKalvodaProfile, + linkedIn: "viktor-kalvoda-3ab0b62a2", + }, + { + name: "Gerome Quantmeyer", + position: "Team Member", + profilePicture: GeromeQuantmeyerProfile, + linkedIn: "gerome-quantmeyer-44a90322b" + }, + { + name: "Uli Prantz", + position: "Team Member", + profilePicture: UliPrantzProfile, + linkedIn: "uli-prantz-100234227" + }, + + +] + + +function stringToColor(string) { + let hash = 0; + let i; + + /* eslint-disable no-bitwise */ + for (i = 0; i < string.length; i += 1) { + hash = string.charCodeAt(i) + ((hash << 5) - hash); + } + + let color = '#'; + + for (i = 0; i < 3; i += 1) { + const value = (hash >> (i * 8)) & 0xff; + color += `00${value.toString(16)}`.slice(-2); + } + /* eslint-enable no-bitwise */ + + return color; +} + +function stringAvatar(name) { + return { + sx: { + bgcolor: stringToColor(name), + }, + children: `${name.split(' ')[0][0]}${name.split(' ')[1][0]}`, + }; +} + +function Team() { + const theme = useTheme() + const matches = useMediaQuery(theme.breakpoints.up("sm")); + const [imageSize, setImageSize] = useState("9rem") + + useEffect(() => { + setImageSize(matches ? "9rem" : "7rem") + }, [matches]); + + return ( + + Meet the team + + {teamMembers.sort((a, b) => { + const nameA = a.name.toUpperCase(); // ignore upper and lowercase + const nameB = b.name.toUpperCase(); // ignore upper and lowercase + if (nameA < nameB) { + return -1; + } + if (nameA > nameB) { + return 1; + } + + // names must be equal + return 0; + }).map(teamMember => { + + const avatarPrep = stringAvatar(teamMember.name); + return ( + + + + + + {avatarPrep.children} + + + + + + {teamMember.name} + {/*{teamMember.position}*/} + + {/* {teamMember.mail ? : null} */} + {teamMember.linkedIn ? + : null} + + + + ) + })} + + + + ) + +} + +export default Team \ No newline at end of file diff --git a/src/components/Theme/HackHPIWrapper.jsx b/src/components/Theme/HackHPIWrapper.jsx new file mode 100644 index 0000000..676bb0d --- /dev/null +++ b/src/components/Theme/HackHPIWrapper.jsx @@ -0,0 +1,15 @@ +import {CssBaseline, ThemeProvider} from "@mui/material"; +import hackHpiTheme from "./HackHpiTheme.js"; + + +function HackHPIWrapper(props) { + + return ( + + + {props.children} + + ); +} + +export default HackHPIWrapper; \ No newline at end of file diff --git a/src/components/Theme/HackHpiTheme.js b/src/components/Theme/HackHpiTheme.js new file mode 100644 index 0000000..1a9e183 --- /dev/null +++ b/src/components/Theme/HackHpiTheme.js @@ -0,0 +1,100 @@ +'use client' +import {createTheme, responsiveFontSizes} from "@mui/material"; + +const theme = createTheme({}) + +const textColor = [245, 245, 245] + +const hackHpiTheme = responsiveFontSizes(createTheme(theme, { + palette: { + mode: "dark", + primary: theme.palette.augmentColor({ + color: { + main: "#3A0CA3", + }, + name: "primary" + }), + secondary: theme.palette.augmentColor({ + color: { + main: "#B1063A", + }, + name: "primary" + }), + success: theme.palette.augmentColor({ + color: { + main: "#66bb6a", + }, + name: "success" + }), + text: { + primary: `rgba(${textColor[0]},${textColor[1]},${textColor[2]}, 1)`, + secondary: `rgba(${textColor[0]},${textColor[1]},${textColor[2]}, .7)`, + disabled: `rgba(${textColor[0]},${textColor[1]},${textColor[2]}, .5)`, + icon: `rgba(${textColor[0]},${textColor[1]},${textColor[2]}, .5)` + }, + divider: `rgba(${textColor[0]},${textColor[1]},${textColor[2]}, .12)`, + background: { + default: "#13101B", + paper: "#13101B", + }, + action: { + active: "#fff", + hover: "rgba(255,255,255,0.08)", + hoverOpacity: .08, + selected: "rgba(255,255,255,0.16)", + selectedOpacity: .16, + disabled: "rgba(255,255,255,0.3)", + disabledBackground: "rgba(255,255,255,0.12)", + disabledOpacity: .38, + focus: "rgba(255,255,255,0.12)", + focusOpacity: .12, + activatedOpacity: .24 + } + }, + components: { + MuiCard: { + styleOverrides: { + root: { + borderRadius: "10px" + } + } + }, + MuiButton: { + styleOverrides: { + root: { + borderRadius: "10px" + } + } + }, + + }, + typography: { + fontSize: 10, + fontFamily: 'Neo Sans, Urbanist, Arial', + h1: { + fontFamily: 'Neo Sans, Urbanist, Arial', + fontWeight: "bold", + //fontSize: "5rem" + //lineHeight: "5.5rem", + //fontSize: "7rem" + }, + h2: { + fontFamily: 'Neo Sans, Urbanist, Arial', + fontWeight: "bold", + }, + h3:{ + fontFamily: 'Neo Sans, Urbanist, Arial', + }, + h4:{ + fontFamily: 'Neo Sans, Urbanist, Arial', + }, + h5:{ + fontFamily: 'Neo Sans, Urbanist, Arial', + }, + body1: { + fontFamily: '"Open Sans Variable", Urbanist, Arial', + } + } +})); + +export default hackHpiTheme; \ No newline at end of file diff --git a/src/components/TimeTable/TimeTable.jsx b/src/components/TimeTable/TimeTable.jsx new file mode 100644 index 0000000..80b6381 --- /dev/null +++ b/src/components/TimeTable/TimeTable.jsx @@ -0,0 +1,179 @@ +import {Box, Card, Container, Divider, Grid, Stack, Typography} from "@mui/material"; +import { + Campaign, + Celebration, + ConfirmationNumber, + EmojiEvents, + EmojiObjects, + PlayArrow, + Restaurant, + Stop +} from "@mui/icons-material"; +import {IconContainer} from "../Features/Features"; + +const dayOne = [ + { + time: "08:00 - 09:00", + icon: , + title: "Check-In", + person: "", + }, + { + time: "09:00 - 10:00", + icon: , + title: "Breakfast & Get to know each other", + person: "", + }, + { + time: "10:00 - 11:00", + icon: , + title: "Introduction & Speakers", + person: "", + }, + { + time: "11:00 - 12:00", + icon: , + title: "Challenge Input Sessions", + person: "", + }, + { + time: "12:00 - 13:00", + icon: , + title: "Lunch", + person: "", + }, + { + time: "13:00 - 18:00", + icon: , + title: "Idea-Workshop", + person: "optional", + }, + { + time: "13:00 - 13:00 next day (Continuously)", + icon: , + title: "Start Hacking Time", + person: "", + }, + { + time: "18:00 - 19:00", + icon: , + title: "Dinner", + person: "", + } +] + +const dayTwo = [ + { + time: "08:00 - 09:00", + icon: , + title: "Breakfast", + person: "", + }, + { + time: "09:00 - 10:00", + icon: , + title: "Pitch-Workshop", + person: "optional", + }, + { + time: "13:00", + icon: , + title: "End Hacking Time", + person: "", + }, + { + time: "13:00 - 14:00", + icon: , + title: "Lunch", + person: "", + }, + { + time: "14:00 - 16:00", + icon: , + title: "Challenge Presentations", + person: "", + }, { + time: "17:00 - 18:00", + icon: , + title: "Feedback & Awards", + person: "", + }, { + time: "18:00", + icon: , + title: "Drinks & Networking", + person: "", + } +] + +export function Table(props) { + return ( + + + + {props.title} + {props.subtitle} + + + + { + props.data.map((item, index) => ( + <> + + + + + + + + + + {item.time} + + + {item.title} + + + {item.person} + + + + + + + + {index !== props.data.length - 1 ? : undefined} + + )) + } + + ) +} + +export function TimeTable() { + + return ( + + Time Table + + + + + + +
+ + + + ) +} \ No newline at end of file diff --git a/src/components/VerifiedChecker/VerifiedChecker.jsx b/src/components/VerifiedChecker/VerifiedChecker.jsx new file mode 100644 index 0000000..f8edaf1 --- /dev/null +++ b/src/components/VerifiedChecker/VerifiedChecker.jsx @@ -0,0 +1,30 @@ +'use client' +import {useEffect, useState} from "react"; +import {Alert, Container} from "@mui/material"; +import {Check} from "@mui/icons-material"; + +export function VerifiedChecker() { + + const [isVerified, setIsVerified] = useState(false); + + useEffect(() => { + const queryParameters = new URLSearchParams(window?.location?.search) + const type = queryParameters.get("isVerified") + setIsVerified(type) + }, []); + + if (isVerified) { + return ( + + } severity="success"> + Your E-Mail has been verified! + + + ) + } + + return ( + <> + + ) +} \ No newline at end of file diff --git a/src/components/WhatToExpect/WhatToExpect.jsx b/src/components/WhatToExpect/WhatToExpect.jsx new file mode 100644 index 0000000..94f4395 --- /dev/null +++ b/src/components/WhatToExpect/WhatToExpect.jsx @@ -0,0 +1,74 @@ +"use client" +import {Box, Container, Grid, IconButton, Typography} from "@mui/material"; +import {WindowCard} from "../WindowCard/WindowCard.jsx"; +import HackHPIWrapper from "../Theme/HackHPIWrapper.jsx"; +import {PlayArrow} from "@mui/icons-material"; +import {useState} from "react"; + +function WhatToExpect() { + + const [playVideo, setPlayVideo] = useState(false) + const vimeoVideoId = "867922224" + + return ( + + + + + + + What to expect + + + Explore the future of urban living at HPI in Potsdam. + + + Join motivated students for two days of + innovation, workshops, and collaboration with top-notch sponsors offering support and + expertise. + Tackle a challenge and dive into the world of smart cities. + + + + + + + {playVideo ? ( +