From 4bdbf2a598a7061d410e2f119effa3689015b1e1 Mon Sep 17 00:00:00 2001 From: Jonas Tobias Hopusch Date: Fri, 10 Mar 2023 15:08:43 +0100 Subject: [PATCH] Tweaks and formatting with prettier --- .gitlab-ci.yml | 54 ++-- content/about/index.md | 18 +- content/profiles/index.md | 12 +- content/servers/index.md | 49 ++-- static/css/general.css | 271 ++++++++++++--------- static/modversions/testingmod-updates.json | 14 +- static/scripts/calcage.js | 23 +- static/scripts/updatecopyrightyear.js | 17 +- templates/base.html | 158 ++++++------ templates/index.html | 17 +- templates/page.html | 85 +++---- templates/section.html | 10 +- 12 files changed, 371 insertions(+), 357 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4e6170b..ee62fcd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,32 +2,32 @@ variables: GIT_SUBMODULE_STRATEGY: recursive pages: - image: archlinux:latest - interruptible: true - timeout: 5m - rules: - - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH' - when: always - before_script: - - pacman --needed --noconfirm --sync --refresh --sysupgrade zola - script: - - zola --version - - zola build - artifacts: - paths: - - public - exclude: - - public/404.html + image: archlinux:latest + interruptible: true + timeout: 5m + rules: + - if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH" + when: always + before_script: + - pacman --needed --noconfirm --sync --refresh --sysupgrade zola + script: + - zola --version + - zola build + artifacts: + paths: + - public + exclude: + - public/404.html merge-request-testing: - image: archlinux:latest - interruptible: true - timeout: 5m - rules: - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - when: always - before_script: - - pacman --needed --noconfirm --sync --refresh --sysupgrade zola - script: - - zola --version - - zola build + image: archlinux:latest + interruptible: true + timeout: 5m + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: always + before_script: + - pacman --needed --noconfirm --sync --refresh --sysupgrade zola + script: + - zola --version + - zola build diff --git a/content/about/index.md b/content/about/index.md index 31c7ba6..d47fb7a 100644 --- a/content/about/index.md +++ b/content/about/index.md @@ -10,7 +10,7 @@ Hello visitor, I am Jonas (Tobias) Hopusch, usually known online as by my username "jotoho". -I am male, German, currently *javascript failed* years old +I am male, German, currently _javascript failed_ years old and a student of computer science at the [South Westphalia University of Applied Sciences](https://fh-swf.de) working towards earning a Bachelor degree. @@ -32,13 +32,13 @@ trouble concretely defining the genres I listen to. ### My Desktop-PC -|PC Part|Installed Component| -|:-|:-:| -|CPU|[AMD Ryzen 7 5800X (8 cores, 16 threads)](https://www.amd.com/en/products/cpu/amd-ryzen-7-5800x)| -|Motherboard|[ASRock X570M Pro4](https://www.asrock.com/MB/AMD/X570M%20Pro4/)| -|Graphics Card|[ASUS Dual Radeon RX 6750XT 12GB OC Edition](https://www.asus.com/motherboards-components/graphics-cards/dual/dual-rx6750xt-o12g/)| -|Memory|20GiB (2*8G+4G) DDR4 2133MHz| -|Monitors|2 1920x1080 32" 60Hz screens| -|Storage|1TB SATA-SSD + 1TB SATA-HDD| +| PC Part | Installed Component | +| :------------ | :--------------------------------------------------------------------------------------------------------------------------------: | +| CPU | [AMD Ryzen 7 5800X (8 cores, 16 threads)](https://www.amd.com/en/products/cpu/amd-ryzen-7-5800x) | +| Motherboard | [ASRock X570M Pro4](https://www.asrock.com/MB/AMD/X570M%20Pro4/) | +| Graphics Card | [ASUS Dual Radeon RX 6750XT 12GB OC Edition](https://www.asus.com/motherboards-components/graphics-cards/dual/dual-rx6750xt-o12g/) | +| Memory | 20GiB (2\*8G+4G) DDR4 2133MHz | +| Monitors | 2 1920x1080 32" 60Hz screens | +| Storage | 1TB SATA-SSD + 1TB SATA-HDD | diff --git a/content/profiles/index.md b/content/profiles/index.md index a144c72..f4664b8 100644 --- a/content/profiles/index.md +++ b/content/profiles/index.md @@ -12,9 +12,9 @@ but hopefully even a list with only the less sensitive profiles and contact info The following list is probably not complete and will change over time. -| Service/Protocol | Hyperlink | Notes | -|-|-|-| -| E-Mail | [contact@jotoho.de](mailto:contact@jotoho.de) | [OpenPGP keys here](https://downloads.jotoho.de/openpgp/) and [via WKD](https://datatracker.ietf.org/doc/draft-koch-openpgp-webkey-service/) | -| Mastodon/Fediverse | [@jotoho@ruhr.social](https://ruhr.social/@jotoho) | | -| GitLab | [@jotoho](https://gitlab.com/jotoho) | Preferred Git hosting platform | -| GitHub | [@jotoho](https://github.com/jotoho) | | +| Service/Protocol | Hyperlink | Notes | +| ------------------ | -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| E-Mail | [contact@jotoho.de](mailto:contact@jotoho.de) | [OpenPGP keys here](https://downloads.jotoho.de/openpgp/) and [via WKD](https://datatracker.ietf.org/doc/draft-koch-openpgp-webkey-service/) | +| Mastodon/Fediverse | [@jotoho@ruhr.social](https://ruhr.social/@jotoho) | | +| GitLab | [@jotoho](https://gitlab.com/jotoho) | Preferred Git hosting platform | +| GitHub | [@jotoho](https://github.com/jotoho) | | diff --git a/content/servers/index.md b/content/servers/index.md index 806779b..a6747aa 100644 --- a/content/servers/index.md +++ b/content/servers/index.md @@ -7,38 +7,41 @@ updated = "2023-03-02T16:57:24+01:00" Besides this website, my domain also has a number of other services/servers running that are set up for learning purposes or for personal use by myself, family and acquaintances. The list only contains services available from the public internet. ------ +--- + ### Publicly accessible services -* [**This website**](https://www.jotoho.de): www.jotoho.de is currently being self-hosted using -[a customized Caddy docker image](https://gitea.jotoho.de/jotoho/site-deployer) -* [**Personal Nextcloud**](https://nextcloud.jotoho.de): This Nextcloud instance is set up for use by myself and those I have invited to store, conveniently access and exchange files and other information. -* [**Forgejo**](https://gitea.jotoho.de): This git server was migrated from Gitea to Forgejo on 2023-01-17 as an emergency measure due to the potentially hostile takeover -of the Gitea project. -Account Registration is limited to whitelisted email domains and accounts need to manually be confirmed by me before becoming active. -* [**Vaultwarden**](https://bitwarden.jotoho.de): Instance of this Bitwarden server implementation for storing and synchronizing my access credentials -and other secrets on my own infrastructure. -* [**Caddy public fileserver**](https://downloads.jotoho.de): For holding and serving public files directly via HTTPS without needing to go through Nextcloud. -Has increased compatibility for use-cases like embedding images or media on this website. -* [**Vikunja Task Management**](https://tasks.jotoho.de): Online To-Do list and Tasks management. Family and Friends can request accounts to be created for them -in order to be able to share to-do lists. -It supports CalDAV synchronization with client devices. +- [**This website**](https://www.jotoho.de): www.jotoho.de is currently being self-hosted using + [a customized Caddy docker image](https://gitea.jotoho.de/jotoho/site-deployer) +- [**Personal Nextcloud**](https://nextcloud.jotoho.de): This Nextcloud instance is set up for use by myself and those I have invited to store, conveniently access and exchange files and other information. +- [**Forgejo**](https://gitea.jotoho.de): This git server was migrated from Gitea to Forgejo on 2023-01-17 as an emergency measure due to the potentially hostile takeover + of the Gitea project. + Account Registration is limited to whitelisted email domains and accounts need to manually be confirmed by me before becoming active. +- [**Vaultwarden**](https://bitwarden.jotoho.de): Instance of this Bitwarden server implementation for storing and synchronizing my access credentials + and other secrets on my own infrastructure. +- [**Caddy public fileserver**](https://downloads.jotoho.de): For holding and serving public files directly via HTTPS without needing to go through Nextcloud. + Has increased compatibility for use-cases like embedding images or media on this website. +- [**Vikunja Task Management**](https://tasks.jotoho.de): Online To-Do list and Tasks management. Family and Friends can request accounts to be created for them + in order to be able to share to-do lists. + It supports CalDAV synchronization with client devices. + +--- ------ ### Special Purpose Subdomains -* **lab.jotoho.de**: Delegated to DigitalOcean Nameservers for quick configuration of droplets and other testing projects hosted there. -Do not expect anything hosted under this subdomain or one of it's subdomains to live for more than a few hours or days. -Security issues, Anomalies or detected abuse of this subdomain [should be immediately reported to me via email](mailto:security@jotoho.de), -so I can investigate and implement corrective measures, if necessary. +- **lab.jotoho.de**: Delegated to DigitalOcean Nameservers for quick configuration of droplets and other testing projects hosted there. + Do not expect anything hosted under this subdomain or one of it's subdomains to live for more than a few hours or days. + Security issues, Anomalies or detected abuse of this subdomain [should be immediately reported to me via email](mailto:security@jotoho.de), + so I can investigate and implement corrective measures, if necessary. + +--- ------ ### Potential future additions or experiments When I bought this domain, it became clear to me how very versatile and useful it can be to have a publicly listed internet namespace so I am always trying to find and learn new ways to put the domain to good use and try out new technologies & server-side software that I view as interesting or useful. Things I may set up and play with in the future: -* personal mastodon or activitypub-compatible server -* outgoing SMTP server for service notifications -* Apache Guacamole for remote control of devices +- personal mastodon or activitypub-compatible server +- outgoing SMTP server for service notifications +- Apache Guacamole for remote control of devices diff --git a/static/css/general.css b/static/css/general.css index e6f4a61..2612a8d 100644 --- a/static/css/general.css +++ b/static/css/general.css @@ -1,200 +1,233 @@ * { - padding: 0; - margin: 0; - border: none; - border-collapse: collapse; - box-sizing: border-box; - overflow-wrap: anywhere; + padding: 0; + margin: 0; + border: none; + border-collapse: collapse; + box-sizing: border-box !important; + overflow-wrap: anywhere; } -html, body { - max-width: 100%; - overflow-x: clip; +html, +body { + max-width: 100%; + overflow-x: clip; } #root { - font-family: monospace; - display: flex; - flex-direction: column; - flex-wrap: nowrap; - min-height: 100vh; + font-family: monospace; + display: flex; + flex-direction: column; + flex-wrap: nowrap; + min-height: 100vh; } #root > * { - flex-grow: 0; - flex-shrink: 0; + flex-grow: 0; + flex-shrink: 0; } -header, footer { - text-align: center; +header, +footer { + text-align: center; } #header-title { - display: block; - padding: 0.5rem 0; + display: block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; } footer { - padding-top: 0.5rem; + padding-top: 0.5rem; } #header-delimiter { - padding-top: 0; - margin-top: 0; + padding-top: 0; + margin-top: 0; } #footer-delimiter { - padding-bottom: 0; - margin-bottom: 0; + padding-bottom: 0; + margin-bottom: 0; } -.globalnav{ - display: flex; - flex-wrap: wrap; - flex-direction: row; - text-align: center; - gap: 2px; - height: max-content; +.globalnav { + display: flex; + flex-wrap: wrap; + flex-direction: row; + text-align: center; + gap: 2px; + height: max-content; } .globalnav-element { - display: block; - background-color: #ddd; - text-align: center; - flex-basis: 0; - flex-grow: 1; - min-width: fit-content; - padding-top: 0.5rem; - padding-bottom: 0.5rem; + display: block; + background-color: #ddd; + text-align: center; + flex-basis: 0; + flex-grow: 1; + min-width: fit-content; + padding-top: 0.5rem; + padding-bottom: 0.5rem; } /* Code Blocks */ pre { - padding: 0.75rem; - margin-top: 1.5rem; - margin-bottom: 1.5rem; - margin-left: auto; - margin-right: auto; - width: fit-content; - overflow-x: auto; - line-break: strict; + display: block; + padding: 0.75rem; + margin-top: 1.5rem; + margin-bottom: 1.5rem; + margin-left: auto; + margin-right: auto; + width: fit-content; + max-width: 100%; + overflow-x: auto; + line-break: strict; } /* Inline keywords/code */ code { - display: inline-block; - color: green; - line-break: strict; + display: inline-block; + color: green; + line-break: strict; } p { - margin-top: 0.5rem; - margin-bottom: 0.5rem; -} - -article { - padding: 0.5rem; + margin-top: 0.5rem; + margin-bottom: 0.5rem; } h2 { - margin-bottom: 1rem; - text-align: center; + margin-bottom: 1rem; + text-align: center; } #mainarticle { - width: fit-content; - max-width: min(100%, 60rem); - margin: 0 auto; - flex-grow: 1; + width: fit-content; + max-width: min(100%, 60rem); + margin-left: auto; + margin-right: auto; + flex-grow: 1; } #mainarticle h3 { - margin: 1rem 0; + margin-top: 1rem; + margin-bottom: 1rem; } -li, ul, ol { - margin: 1rem; +ul > li, +ol > li { + margin-top: 0.5rem; + margin-bottom: 0.5rem; +} + +li::marker { + width: 1rem; + max-width: 100%; + padding: 0; + margin: 0; + border: none; +} + +li { + margin-inline-start: 1rem; } hr { - border-style: inset; - border-width: 1px; - margin: 0.5rem 0; + border-style: inset; + border-width: 1px; + margin-top: 0.5rem; + margin-bottom: 0.5rem; } table { - display: block; - border-collapse: collapse; - margin: 1rem auto; - width: fit-content; - max-width: 100%; - overflow-x: auto; + display: block; + border-collapse: collapse; + margin: 1rem auto; + width: fit-content; + max-width: 100%; + overflow-x: auto; } tr { - width: fit-content; + width: fit-content; } -td, th { - border-style: solid; - border-color: black; - border-collapse: collapse; - padding: 0.5rem; +td, +th { + border-style: solid; + border-color: black; + border-collapse: collapse; + padding: 0.5rem; } #licenseimg { - vertical-align: middle; - height: inherit; - width: auto; - display: inline; -} - -#article-missinglicense { - font-size: small; + vertical-align: middle; + height: inherit; + width: auto; + display: inline; } #last-article-metadata { - margin-bottom: 1rem; + margin-bottom: 1rem; +} + +.visible-article-metadata { + display: contents; + font-size: small; + font-style: italic; +} + +.article-metadata-label { + font-weight: bold; +} + +.article-missinglicense { + font-size: xx-small; } @media (prefers-color-scheme: dark) { - html { - background-color: #111; - color: white; - } + html { + background-color: #111; + color: white; + } - .globalnav-element { - background-color: #222; - } + .globalnav-element { + background-color: #222; + } - code { - color: lawngreen; - } + code { + color: lawngreen; + } - a { - color: lightskyblue; - } + a { + color: lightskyblue; + } - table, td, th { - border-color: white; - } + table, + td, + th { + border-color: white; + } } @media (prefers-color-scheme: light) { - html { - background-color: white; - color: black; - } + html { + background-color: white; + color: black; + } - .globalnav-element { - background-color: #ddd; - } + .globalnav-element { + background-color: #ddd; + } - code { - color: green; - } + code { + color: green; + } - table, td, th { - border-color: black; - } + table, + td, + th { + border-color: black; + } } diff --git a/static/modversions/testingmod-updates.json b/static/modversions/testingmod-updates.json index 9ccd468..d8551d4 100644 --- a/static/modversions/testingmod-updates.json +++ b/static/modversions/testingmod-updates.json @@ -1,9 +1,9 @@ { - "homepage": "https://gitlab.com/jotoho/mc-testingmod", - "1.16.5": { - "prealpha": "This 'version' has no changelog" - }, - "promos": { - "1.16.5-latest": "prealpha" - } + "homepage": "https://gitlab.com/jotoho/mc-testingmod", + "1.16.5": { + "prealpha": "This 'version' has no changelog" + }, + "promos": { + "1.16.5-latest": "prealpha" + } } diff --git a/static/scripts/calcage.js b/static/scripts/calcage.js index db2dcf4..b5039b1 100644 --- a/static/scripts/calcage.js +++ b/static/scripts/calcage.js @@ -1,18 +1,19 @@ "use strict"; { - // Month index must be two because counting begins at 0 (for January) - const myBirthDate = new Date(2001, 2, 29); - const today = new Date(); + // Month index must be two because counting begins at 0 (for January) + const myBirthDate = new Date(2001, 2, 29); + const today = new Date(); - let yearsSinceBirth = today.getFullYear() - myBirthDate.getFullYear(); + let yearsSinceBirth = today.getFullYear() - myBirthDate.getFullYear(); - // Correct yearsSinceBirth if between New Year and my birthday - if (today.getMonth() < myBirthDate.getMonth()) - yearsSinceBirth--; - else if (today.getMonth() == myBirthDate.getMonth() - && today.getDate() < myBirthDate.getDate()) - yearsSinceBirth--; + // Correct yearsSinceBirth if between New Year and my birthday + if (today.getMonth() < myBirthDate.getMonth()) yearsSinceBirth--; + else if ( + today.getMonth() == myBirthDate.getMonth() && + today.getDate() < myBirthDate.getDate() + ) + yearsSinceBirth--; - document.getElementById('age-display').innerText = yearsSinceBirth.toString(); + document.getElementById("age-display").innerText = yearsSinceBirth.toString(); } diff --git a/static/scripts/updatecopyrightyear.js b/static/scripts/updatecopyrightyear.js index 665ba76..4911ec3 100644 --- a/static/scripts/updatecopyrightyear.js +++ b/static/scripts/updatecopyrightyear.js @@ -1,14 +1,15 @@ "use strict"; { - const copyrightYearElement = document.getElementById("footer-copyrightyear"); + const copyrightYearElement = document.getElementById("footer-copyrightyear"); - if (copyrightYearElement) { - const currentYearAsStr = new Date().getFullYear().toString(); + if (copyrightYearElement) { + const currentYearAsStr = new Date().getFullYear().toString(); - copyrightYearElement.innerText = currentYearAsStr; - copyrightYearElement.dateTime = currentYearAsStr; - } - else - console.error("Could not find the footer entry for the year of the copyright notice."); + copyrightYearElement.innerText = currentYearAsStr; + copyrightYearElement.dateTime = currentYearAsStr; + } else + console.error( + "Could not find the footer entry for the year of the copyright notice." + ); } diff --git a/templates/base.html b/templates/base.html index 2df0dc1..492e989 100644 --- a/templates/base.html +++ b/templates/base.html @@ -1,68 +1,66 @@ - - - - - - - - - - - - - - jotoho.de - A personal website - {% block metadata %} {% endblock %} - - -
- -

jotoho.de - My personal website

-
- -
-
+ + + + + + + + + + + + + + jotoho.de - A personal website + {% block metadata %} {% endblock %} + + +
+ +

jotoho.de - My personal website

+
+ +
+
-
{% block content %} {% endblock %}
+
{% block content %} {% endblock %}
- - - +

+

+ This page + is being served using + Caddy + and was generated using + Zola. +
+ You may contact me via + email + regarding any issues with this website. +

+

+ You can + download my OpenPGP public keys here. +

+ + diff --git a/templates/index.html b/templates/index.html index 4dcfd2f..0c81ab4 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,11 +1,8 @@ -{% extends "base.html" %} - -{% block metadata %} - -{% endblock metadata %} - -{% block content %} -

- This is some placeholder text because I don't know what to put here, yet. -

+{% extends "base.html" %} {% block metadata %} + +{% endblock metadata %} {% block content %} +

This is some placeholder text because I don't know what to put here, yet.

{% endblock content %} diff --git a/templates/page.html b/templates/page.html index 07e2e5c..1352a52 100644 --- a/templates/page.html +++ b/templates/page.html @@ -4,58 +4,43 @@ {% endblock %} {% block content %}

{{ page.title }}

-{% if page.date and page.date is defined %} -

- Published on: - + {% if page.date and page.date is defined %} +

+ : + -

-{% endif %} {% if page.updated and page.updated != page.date %} -

- Last updated on: - + {% endif %} {% if page.updated and page.updated != page.date %} +

+ : + -

-{% endif %} -{% if page.extra.author and page.extra.author != "" %} -

- - Author(s): - {{page.extra.author}} - -

-{% else %} -

- - Author: - Jonas Tobias Hopusch - -

-{% endif %} -{% if page.extra.license and page.extra.license != "" %} -

- - Article is provided under the following license: - {{page.extra.license}} - -

-{% else %} -

- - This article is copyright-protected - and may not be used or replicated without permission. - (All rights reserved) - -

-{% endif %} +

+ {% endif %} {% if page.extra.author and page.extra.author != "" %} +

+ : {{page.extra.author}} +

+ {% else %} +

+ : Jonas Tobias Hopusch +

+ {% endif %} {% if page.extra.license and page.extra.license != "" %} +

+ : {{page.extra.license}} +

+ {% else %} +

+ No license is granted for this article. All rights reserved. +

+ {% endif %} +
{{ page.content | safe }}
{% endblock content %} diff --git a/templates/section.html b/templates/section.html index 2431ac2..7d2d7f9 100644 --- a/templates/section.html +++ b/templates/section.html @@ -1,11 +1,9 @@ {% extends "base.html" %} {% block content %}

{{ section.title }}

-
- {{ section.content | safe }} -
+
{{ section.content | safe }}
{% endblock content %}