commit 25c9dc1586d2e95b587459d433024f359cd7cb24 Author: Jannik Menzel Date: Fri May 9 01:07:20 2025 +0200 init diff --git a/.github/workflows/hugo.yaml b/.github/workflows/hugo.yaml new file mode 100644 index 0000000..ce21030 --- /dev/null +++ b/.github/workflows/hugo.yaml @@ -0,0 +1,95 @@ +# Sample workflow for building and deploying a Hugo site to GitHub Pages +name: Deploy Hugo site to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: + - main + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +# Default to bash +defaults: + run: + shell: bash + +jobs: + # Build job + build: + runs-on: ubuntu-latest + env: + HUGO_VERSION: 0.147.1 + HUGO_ENVIRONMENT: production + TZ: America/Los_Angeles + steps: + - name: Install Hugo CLI + run: | + wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \ + && sudo dpkg -i ${{ runner.temp }}/hugo.deb + - name: Install Dart Sass + run: sudo snap install dart-sass + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + - name: Setup Pages + id: pages + uses: actions/configure-pages@v5 + - name: Install Node.js dependencies + run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true" + - name: Cache Restore + id: cache-restore + uses: actions/cache/restore@v4 + with: + path: | + ${{ runner.temp }}/hugo_cache + key: hugo-${{ github.run_id }} + restore-keys: + hugo- + - name: Configure Git + run: git config core.quotepath false + - name: Build with Hugo + run: | + hugo \ + --gc \ + --minify \ + --baseURL "${{ steps.pages.outputs.base_url }}/" \ + --cacheDir "${{ runner.temp }}/hugo_cache" + - name: Cache Save + id: cache-save + uses: actions/cache/save@v4 + with: + path: | + ${{ runner.temp }}/hugo_cache + key: ${{ steps.cache-restore.outputs.cache-primary-key }} + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./public + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0b2485f --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Hugo output +/public/ +/resources/ diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..25b6752 --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,5 @@ ++++ +date = '{{ .Date }}' +draft = true +title = '{{ replace .File.ContentBaseName "-" " " | title }}' ++++ diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 0000000..1c61472 --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1,233 @@ +/* ======================== + Allgemein + ======================== */ +html, body { + height: 100%; +} + +body { + font-family: 'Cairo', sans-serif; + background-color: #f8f9fa; + margin: 0; + padding: 0; + color: #191A23; + display: flex; + flex-direction: column; + justify-content: flex-start; + position: relative; +} + +main { + flex: 1; +} + +h1, h2, h3, h4, h5 { + font-family: 'Exo 2', sans-serif; + font-weight: 500; + margin-top: 1rem; + margin-bottom: 0.5rem; + color: #1a1a1a; +} + +p { + line-height: 1.6; + margin-bottom: 1rem; +} + +.container { + width: 100%; + max-width: 1200px; + margin: 0 auto; + padding: 0 15px; +} + +/* ======================== + Navbar + ======================== */ +.navbar { + padding: 15px 0; + top: 0; + left: 0; + width: 100%; +} + +.navbar .container { + padding: 10px 15px; + border-radius: 5px; +} + +.navbar-brand { + font-family: 'Exo 2', sans-serif; + font-size: 1.5rem; + font-weight: bold; +} + +.navbar-nav .nav-link { + font-size: 1.1rem; + margin-right: 10px; + transition: color 0.3s ease-in-out; + margin-left: 1rem; +} + +.navbar-nav .nav-link:hover { + text-decoration: underline; +} + +.nav-item.dropdown { + position: relative; +} + +.show-on-hover:hover > .dropdown-menu { + display: block; + position: absolute; + top: 100%; + left: 0; + margin-top: 0; +} + +.dropdown-menu .dropdown-item:active { + background-color: #e0e0e0; + color: #191A23; +} + +/* ======================== + Hero + ======================== */ +.hero-section { + padding-top: 6rem; + padding-bottom: 6rem; + max-width: 45rem; + margin: 5rem auto; + text-align: center; +} + +.hero-section h1 { + margin-bottom: 1rem; + line-height: 1.2; + font-size: 3.2rem; +} + +.hero-section p { + margin-bottom: 0.5rem; + font-size: 1.25rem; + color: #191A23; + max-width: 35rem; + margin-left: auto; + margin-right: auto; +} + +/* ======================== + Button + ======================== */ +.btn-primary-dark { + background-color: #191A23; + color: #ffffff; +} + +.btn-primary-dark:hover { + color: #191A23; + background-color: transparent; + border-color: #191A23; + box-shadow: 0 2px 0 0 #191A23; +} + +.btn-primary-dark:focus { + color: #191A23; + background-color: transparent; + border-color: #191A23; + box-shadow: 0 4px 0 0 #191A23; +} + +.btn-primary-light { + /* TODO */ +} + +.btn-primary-light:hover { + /* TODO */ +} + +.btn-primary-light:focus { + /* TODO */ +} + +.btn-primary-green { + /* TODO */ +} + +.btn-primary-green:hover { + /* TODO */ +} + +.btn-primary-green:focus { + /* TODO */ +} + +/* ======================== + Footer + ======================== */ +.footer { + padding: 1.5rem 0; + width: 100%; + margin-top: auto; + text-align: center; + font-size: 0.95rem; +} + +.footer-nav ul { + list-style: none; + padding: 0; + margin: 0.5rem 0 0; + display: flex; + justify-content: center; + gap: 1.5rem; + flex-wrap: wrap; +} + +.footer-nav li { + display: inline; +} + +.footer-nav a { + color: #191A23; + text-decoration: none; + transition: color 0.3s ease; +} + +.footer-nav a:hover, +.footer-nav a:focus { + color: #191A23; + text-decoration: underline; + outline: none; +} + +@media (max-width: 600px) { + .footer-nav ul { + flex-direction: column; + gap: 0.75rem; + } +} + +/* ======================== + 404 Error Page + ======================== */ +.page-not-found { + margin-top: 10rem; + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-family: 'Exo 2', sans-serif; + text-align: center; +} + +.page-not-found .error-code { + font-size: 6rem; + font-weight: bold; + color: #d9534f; +} + +.page-not-found .error-message { + font-size: 1.25rem; + color: #191A23; +} diff --git a/assets/images/hero-image.png b/assets/images/hero-image.png new file mode 100644 index 0000000..db501a5 Binary files /dev/null and b/assets/images/hero-image.png differ diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..e69de29 diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..2f99648 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,4 @@ ++++ +title = 'Home' +draft = false ++++ diff --git a/content/about.md b/content/about.md new file mode 100644 index 0000000..7efb7f2 --- /dev/null +++ b/content/about.md @@ -0,0 +1,6 @@ ++++ +title = 'Über Uns' +draft = false ++++ + +# Über Uns \ No newline at end of file diff --git a/content/about/aemter.md b/content/about/aemter.md new file mode 100644 index 0000000..2532748 --- /dev/null +++ b/content/about/aemter.md @@ -0,0 +1,6 @@ ++++ +title = 'Ämter' +draft = false ++++ + +# Ämter \ No newline at end of file diff --git a/content/about/aufgaben.md b/content/about/aufgaben.md new file mode 100644 index 0000000..0966bb2 --- /dev/null +++ b/content/about/aufgaben.md @@ -0,0 +1,6 @@ ++++ +title = 'Aufgaben' +draft = false ++++ + +# Aufgaben \ No newline at end of file diff --git a/content/about/entsendungen.md b/content/about/entsendungen.md new file mode 100644 index 0000000..5711669 --- /dev/null +++ b/content/about/entsendungen.md @@ -0,0 +1,6 @@ ++++ +title = 'Entsendungen' +draft = false ++++ + +# Entsendungen \ No newline at end of file diff --git a/content/about/mitglieder.md b/content/about/mitglieder.md new file mode 100644 index 0000000..2b9dbfa --- /dev/null +++ b/content/about/mitglieder.md @@ -0,0 +1,6 @@ ++++ +title = 'Mitglieder' +draft = false ++++ + +# Mitglieder \ No newline at end of file diff --git a/content/barrierefreiheit.md b/content/barrierefreiheit.md new file mode 100644 index 0000000..4d172ee --- /dev/null +++ b/content/barrierefreiheit.md @@ -0,0 +1,6 @@ ++++ +title = 'Barrierefreiheit' +draft = false ++++ + +# Barrierefreiheit \ No newline at end of file diff --git a/content/datenschutz.md b/content/datenschutz.md new file mode 100644 index 0000000..b6ddf41 --- /dev/null +++ b/content/datenschutz.md @@ -0,0 +1,6 @@ ++++ +title = 'Datenschutz' +draft = false ++++ + +# Datenschutz \ No newline at end of file diff --git a/content/impressum.md b/content/impressum.md new file mode 100644 index 0000000..b23e5ea --- /dev/null +++ b/content/impressum.md @@ -0,0 +1,6 @@ ++++ +title = 'Impressum' +draft = false ++++ + +# Impressum \ No newline at end of file diff --git a/content/kontakt.md b/content/kontakt.md new file mode 100644 index 0000000..6fc728e --- /dev/null +++ b/content/kontakt.md @@ -0,0 +1,6 @@ ++++ +title = 'Kontakt' +draft = false ++++ + +# Kontakt \ No newline at end of file diff --git a/content/studium.md b/content/studium.md new file mode 100644 index 0000000..0ae9685 --- /dev/null +++ b/content/studium.md @@ -0,0 +1,6 @@ ++++ +title = 'Studium' +draft = false ++++ + +# Studium \ No newline at end of file diff --git a/content/studium/linksammlung.md b/content/studium/linksammlung.md new file mode 100644 index 0000000..458f85b --- /dev/null +++ b/content/studium/linksammlung.md @@ -0,0 +1,6 @@ ++++ +title = 'Linksammlung' +draft = false ++++ + +# Linksammlung \ No newline at end of file diff --git a/content/studium/services.md b/content/studium/services.md new file mode 100644 index 0000000..fdc51d3 --- /dev/null +++ b/content/studium/services.md @@ -0,0 +1,6 @@ ++++ +title = 'Services' +draft = false ++++ + +# Services \ No newline at end of file diff --git a/content/studium/stoffkiste-und-ftp.md b/content/studium/stoffkiste-und-ftp.md new file mode 100644 index 0000000..fe9585a --- /dev/null +++ b/content/studium/stoffkiste-und-ftp.md @@ -0,0 +1,6 @@ ++++ +title = 'Stoffkiste & FTP' +draft = false ++++ + +# Stoffkiste & FTP \ No newline at end of file diff --git a/content/studium/studienberatung.md b/content/studium/studienberatung.md new file mode 100644 index 0000000..8e9550a --- /dev/null +++ b/content/studium/studienberatung.md @@ -0,0 +1,6 @@ ++++ +title = 'Studienberatung' +draft = false ++++ + +# Studienberatung \ No newline at end of file diff --git a/hugo.toml b/hugo.toml new file mode 100644 index 0000000..08a4c65 --- /dev/null +++ b/hugo.toml @@ -0,0 +1,6 @@ +baseURL = 'https://jannikmenzel.me/' +languageCode = 'de' +title = 'iFSR-Website' +disableKinds = ["taxonomy", "RSS"] +[minify] +disableXML = true \ No newline at end of file diff --git a/layouts/404.html b/layouts/404.html new file mode 100644 index 0000000..4961a86 --- /dev/null +++ b/layouts/404.html @@ -0,0 +1,6 @@ +{{- define "main" }} +
+
404
+
Die Seite, die du suchst, wurde nicht gefunden.
+
+{{- end }} diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html new file mode 100644 index 0000000..f6ae23f --- /dev/null +++ b/layouts/_default/baseof.html @@ -0,0 +1,24 @@ + + + + {{ partial "head.html" . }} + + + +
+
+ {{ partial "nav.html" . }} +
+
+
+
+ {{ block "main" . }}{{ end }} +
+
+ + + diff --git a/layouts/_default/home.html b/layouts/_default/home.html new file mode 100644 index 0000000..911e023 --- /dev/null +++ b/layouts/_default/home.html @@ -0,0 +1,4 @@ +{{ define "main" }} + {{ partial "hero.html" . }} + {{ .Content }} +{{ end }} diff --git a/layouts/_default/section.html b/layouts/_default/section.html new file mode 100644 index 0000000..50fc92d --- /dev/null +++ b/layouts/_default/section.html @@ -0,0 +1,8 @@ +{{ define "main" }} +

{{ .Title }}

+ {{ .Content }} + {{ range .Pages }} +

{{ .LinkTitle }}

+ {{ .Summary }} + {{ end }} +{{ end }} diff --git a/layouts/_default/single.html b/layouts/_default/single.html new file mode 100644 index 0000000..e0e8308 --- /dev/null +++ b/layouts/_default/single.html @@ -0,0 +1,3 @@ +{{ define "main" }} + {{ .Content }} +{{ end }} diff --git a/layouts/_partials/footer.html b/layouts/_partials/footer.html new file mode 100644 index 0000000..1135a86 --- /dev/null +++ b/layouts/_partials/footer.html @@ -0,0 +1,13 @@ + + \ No newline at end of file diff --git a/layouts/_partials/head.html b/layouts/_partials/head.html new file mode 100644 index 0000000..a21a191 --- /dev/null +++ b/layouts/_partials/head.html @@ -0,0 +1,17 @@ + + + + + +{{ if .IsHome }}{{ site.Title }}{{ else }}{{ printf "%s | %s" .Title site.Title }}{{ end }} +{{ partialCached "head/css.html" . }} +{{ partialCached "head/js.html" . }} diff --git a/layouts/_partials/head/css.html b/layouts/_partials/head/css.html new file mode 100644 index 0000000..d76d23a --- /dev/null +++ b/layouts/_partials/head/css.html @@ -0,0 +1,9 @@ +{{- with resources.Get "css/main.css" }} + {{- if hugo.IsDevelopment }} + + {{- else }} + {{- with . | minify | fingerprint }} + + {{- end }} + {{- end }} +{{- end }} diff --git a/layouts/_partials/head/js.html b/layouts/_partials/head/js.html new file mode 100644 index 0000000..16ffbed --- /dev/null +++ b/layouts/_partials/head/js.html @@ -0,0 +1,16 @@ +{{- with resources.Get "js/main.js" }} + {{- $opts := dict + "minify" (not hugo.IsDevelopment) + "sourceMap" (cond hugo.IsDevelopment "external" "") + "targetPath" "js/main.js" + }} + {{- with . | js.Build $opts }} + {{- if hugo.IsDevelopment }} + + {{- else }} + {{- with . | fingerprint }} + + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/layouts/_partials/hero.html b/layouts/_partials/hero.html new file mode 100644 index 0000000..a39aafa --- /dev/null +++ b/layouts/_partials/hero.html @@ -0,0 +1,12 @@ +
+
+
+ +
+

Willkommen auf der Website des FSR Informatik

+

Gemeinsam stark im Studium – dein Fachschaftsrat steht für Austausch, Unterstützung und Mitgestaltung.

+ mehr erfahren +
+
+
+
\ No newline at end of file diff --git a/layouts/_partials/nav.html b/layouts/_partials/nav.html new file mode 100644 index 0000000..27a5c0f --- /dev/null +++ b/layouts/_partials/nav.html @@ -0,0 +1,46 @@ + \ No newline at end of file