From a5aa3cc0145bfacb415833546c271a60728f5cec Mon Sep 17 00:00:00 2001 From: samuel-p Date: Tue, 8 Jun 2021 00:16:21 +0200 Subject: [PATCH 1/6] major improvements added expenses and donations replaced some icons with svgs --- .eleventy.js | 36 ++++++++- src/_data/donations.json | 74 ++++++++++++++++-- src/_data/expenses.json | 50 ++++++++++++ src/_data/services.json | 8 +- src/_data/strings.json | 44 +++++++++++ src/_includes/donations-current.html | 34 ++++++++ src/_includes/donations.html | 38 +++++++++ src/_includes/expenses-current.html | 33 ++++++++ src/_includes/layouts/services.njk | 2 +- src/_includes/profiles.html | 30 ++++--- src/_includes/services-extended.html | 4 + src/_includes/services-simple.html | 4 + src/de/all-donations.html | 10 +++ src/de/contact.html | 8 +- src/de/donate.html | 20 ++--- src/de/index.html | 4 +- src/de/services/gitea.md | 2 +- src/de/services/jitsi.md | 2 +- src/de/services/matrix.md | 2 +- src/en/all-donations.html | 10 +++ src/en/contact.html | 8 +- src/en/donate.html | 16 ++-- src/en/index.html | 4 +- src/en/services/gitea.md | 2 +- src/en/services/jitsi.md | 2 +- src/en/services/matrix.md | 2 +- src/img/bg-light.png | Bin 66117 -> 0 bytes src/img/gitea.svg | 1 - src/img/{gitea-white.svg => icon/gitea.svg} | 0 src/img/icon/jitsi.svg | 1 + src/img/icon/mastodon.svg | 1 + src/img/{matrix-white.svg => icon/matrix.svg} | 0 .../opencollective.svg} | 0 .../{threema-white.svg => icon/threema.svg} | 0 src/img/{xmpp-white.svg => icon/xmpp.svg} | 0 src/img/matrix.svg | 1 - src/img/opencollective.svg | 1 - src/img/threema.svg | 1 - src/img/xmpp.svg | 1 - src/scss/icons.scss | 41 +++++----- src/scss/main.scss | 26 +++--- 41 files changed, 428 insertions(+), 95 deletions(-) create mode 100644 src/_data/expenses.json create mode 100644 src/_includes/donations-current.html create mode 100644 src/_includes/donations.html create mode 100644 src/_includes/expenses-current.html create mode 100644 src/de/all-donations.html create mode 100644 src/en/all-donations.html delete mode 100644 src/img/bg-light.png delete mode 100644 src/img/gitea.svg rename src/img/{gitea-white.svg => icon/gitea.svg} (100%) create mode 100644 src/img/icon/jitsi.svg create mode 100644 src/img/icon/mastodon.svg rename src/img/{matrix-white.svg => icon/matrix.svg} (100%) rename src/img/{opencollective-white.svg => icon/opencollective.svg} (100%) rename src/img/{threema-white.svg => icon/threema.svg} (100%) rename src/img/{xmpp-white.svg => icon/xmpp.svg} (100%) delete mode 100644 src/img/matrix.svg delete mode 100644 src/img/opencollective.svg delete mode 100644 src/img/threema.svg delete mode 100644 src/img/xmpp.svg diff --git a/.eleventy.js b/.eleventy.js index df43924..f330d76 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -1,6 +1,10 @@ const eleventyNavigationPlugin = require("@11ty/eleventy-navigation"); -module.exports = function(eleventyConfig) { +module.exports = function (eleventyConfig) { + eleventyConfig.setLiquidOptions({ + dynamicPartials: true, + // strict_filters: true, + }); eleventyConfig.addWatchTarget("./src/scss/"); eleventyConfig.addPlugin(eleventyNavigationPlugin); @@ -11,10 +15,38 @@ module.exports = function(eleventyConfig) { "node_modules/@fortawesome/fontawesome-free/webfonts/": "font", "node_modules/flag-icon-css/flags/4x3/(de|us)*": "flags" }); - eleventyConfig.addShortcode("translatedUrl", function(currentLocale, newLocale) { + eleventyConfig.addShortcode("translatedUrl", function (currentLocale, newLocale) { return this.page.url.replace(new RegExp(`\/${currentLocale}\/`), `/${newLocale}/`); }); + eleventyConfig.addFilter('year', function (value) { + return value * 12; + }); + + eleventyConfig.addFilter("sum", function (value) { + return value.map(d => d.amount).reduce((a, b) => a + b); + }); + + eleventyConfig.addFilter("amount", function (value, locale) { + return value.toLocaleString(locale, {minimumFractionDigits: 2}); + }); + + eleventyConfig.addFilter("banktransfers", function (donations) { + return donations + .flatMap(y => y.donations) + .filter(d => d.via === 'banktransfer') + .filter(d => d.first) + .length; + }); + + eleventyConfig.addFilter("cash", function (donations) { + return donations + .flatMap(y => y.donations) + .filter(d => d.via === 'cash') + .filter(d => d.first) + .length; + }); + return { dir: { input: "src", diff --git a/src/_data/donations.json b/src/_data/donations.json index 51e2993..e9b4451 100644 --- a/src/_data/donations.json +++ b/src/_data/donations.json @@ -1,10 +1,68 @@ -{ - "banktransfer": { - "number": 5, - "color": "success" +[ + { + "year": 2021, + "donations": [ + { + "date": "01.06.2021", + "amount": 20, + "via": "banktransfer", + "from": "Rumo", + "first": true + }, + { + "date": "26.04.2021", + "amount": 8.96, + "via": "banktransfer", + "from": null, + "first": false + }, + { + "date": "23.03.2021", + "amount": 30, + "via": "banktransfer", + "from": null, + "first": true + }, + { + "date": "19.02.2021", + "amount": 20, + "via": "banktransfer", + "from": null, + "first": true + }, + { + "date": "02.02.2021", + "amount": 9.01, + "via": "opencollective", + "from": "Dennis H.", + "first": true + }, + { + "date": "20.01.2021", + "amount": 10, + "via": "banktransfer", + "from": null, + "first": true + }, + { + "date": "17.01.2021", + "amount": 4.41, + "via": "opencollective", + "from": "Michael Haak", + "first": true + } + ] }, - "cash": { - "number": 0, - "color": "inactive" + { + "year": 2020, + "donations": [ + { + "date": "04.12.2020", + "amount": 10, + "via": "banktransfer", + "from": null, + "first": true + } + ] } -} +] diff --git a/src/_data/expenses.json b/src/_data/expenses.json new file mode 100644 index 0000000..fc616d1 --- /dev/null +++ b/src/_data/expenses.json @@ -0,0 +1,50 @@ +[ + { + "name": { + "en": "Websites", + "de": "Webseiten" + }, + "type": "Webhosting", + "provider": "netcup", + "amount": 1.99 + }, + { + "name": "Diana", + "type": "VPS", + "provider": "Hetzner", + "amount": 2.96 + }, + { + "name": "Ceres", + "type": "VPS", + "provider": "netcup", + "amount": 5.5 + }, + { + "name": "Venus", + "type": "VPS", + "provider": "netcup", + "amount": 3.33 + }, + { + "name": "Luna", + "type": "Root-Server", + "provider": "netcup", + "amount": 14 + }, + { + "name": "Vesta", + "type": "Root-Server", + "provider": "netcup", + "amount": 11.49 + }, + { + "name": { + "en": "Additional IPv4", + "de": "Zusätzliche IPv4" + }, + "type": "IPv4", + "provider": "netcup", + "amount": 1 + } +] diff --git a/src/_data/services.json b/src/_data/services.json index e29b754..cb03dbe 100644 --- a/src/_data/services.json +++ b/src/_data/services.json @@ -13,7 +13,7 @@ { "id": "matrix", "name": "Matrix", - "icon": "fas fa-comments", + "si": "matrix", "url": "https://chat.sp-codes.de", "status": "https://matrix.sp-codes.de/_matrix/static/", "summary": { @@ -24,7 +24,7 @@ { "id": "jitsi", "name": "Jitsi Meet", - "icon": "fas fa-users", + "si": "jitsi", "url": "https://jitsi.sp-codes.de", "status": "https://jitsi.sp-codes.de", "summary": { @@ -35,7 +35,7 @@ { "id": "mastodon", "name": "Mastodon", - "icon": "fab fa-mastodon", + "si": "mastodon", "url": "https://social.sp-codes.de", "status": "https://social.sp-codes.de/health", "beta": true, @@ -47,7 +47,7 @@ { "id": "gitea", "name": "Gitea", - "icon": "fas fa-code", + "si": "gitea", "url": "https://git.sp-codes.de", "status": "https://git.sp-codes.de", "summary": { diff --git a/src/_data/strings.json b/src/_data/strings.json index 5748020..244dd09 100644 --- a/src/_data/strings.json +++ b/src/_data/strings.json @@ -38,5 +38,49 @@ "maintenance": { "de": "Wartung", "en": "Maintenance" + }, + "date": { + "de": "Datum", + "en": "Date" + }, + "amount": { + "de": "Betrag", + "en": "Amount" + }, + "via": { + "de": "Via", + "en": "Via" + }, + "from": { + "de": "Von", + "en": "Form" + }, + "banktransfer": { + "de": "Überweisung", + "en": "Bank transfer" + }, + "total": { + "de": "Gesamt", + "en": "Total" + }, + "name": { + "de": "Name", + "en": "Name" + }, + "type": { + "de": "Typ", + "en": "Type" + }, + "provider": { + "de": "Anbieter", + "en": "Provider" + }, + "month": { + "de": "Monat", + "en": "Month" + }, + "year": { + "de": "Jahr", + "en": "Year" } } diff --git a/src/_includes/donations-current.html b/src/_includes/donations-current.html new file mode 100644 index 0000000..dc9e88e --- /dev/null +++ b/src/_includes/donations-current.html @@ -0,0 +1,34 @@ + + + + + + + + + + + {% for donation in donations[0].donations %} + + + {% if donation.via == 'opencollective' %} + + {% else %} + + {% endif %} + {% if donation.from %} + + {% else %} + + {% endif %} + + + {% endfor %} + + + + + + + +
{{strings.date[locale]}}{{strings.via[locale]}}{{strings.from[locale]}}{{strings.amount[locale]}}
{{donation.date}}Open Collective{{strings[donation.via][locale]}}{{donation.from}}***{{donation.amount | amount(locale)}} €
{{strings.total[locale]}}{{donations[0].donations | sum | amount(locale)}} €
diff --git a/src/_includes/donations.html b/src/_includes/donations.html new file mode 100644 index 0000000..685dc46 --- /dev/null +++ b/src/_includes/donations.html @@ -0,0 +1,38 @@ +{% for year in donations %} +

{{year.year}}

+ + + + + + + + + + + + {% for donation in year.donations %} + + + {% if donation.via == 'opencollective' %} + + {% else %} + + {% endif %} + {% if donation.from %} + + {% else %} + + {% endif %} + + + {% endfor %} + + + + + + + +
{{strings.date[locale]}}{{strings.via[locale]}}{{strings.from[locale]}}{{strings.amount[locale]}}
{{donation.date}}Open Collective{{strings[donation.via][locale]}}{{donation.from}}***{{donation.amount | amount(locale)}} €
{{strings.total[locale]}}{{year.donations | sum | amount(locale)}} €
+{% endfor %} diff --git a/src/_includes/expenses-current.html b/src/_includes/expenses-current.html new file mode 100644 index 0000000..2810feb --- /dev/null +++ b/src/_includes/expenses-current.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + {% for expense in expenses %} + + {% if expense.name[locale] %} + + {% else %} + + {% endif %} + + + + + + {% endfor %} + + + + + + + + +
{{strings.name[locale]}}{{strings.type[locale]}}{{strings.provider[locale]}}{{strings.amount[locale]}} / {{strings.month[locale]}}{{strings.amount[locale]}} / {{strings.year[locale]}}
{{expense.name[locale]}}{{expense.name}}{{expense.type}}{{expense.provider}}{{expense.amount | amount(locale)}} €{{expense.amount | year | amount(locale)}} €
{{strings.total[locale]}}{{expenses | sum | amount(locale)}} €{{expenses | sum | year | amount(locale)}} €
diff --git a/src/_includes/layouts/services.njk b/src/_includes/layouts/services.njk index 2ea3600..f15e7d6 100644 --- a/src/_includes/layouts/services.njk +++ b/src/_includes/layouts/services.njk @@ -6,5 +6,5 @@ layout: base.njk {{ content | safe }}
- {% include 'services-extended.html' %} + {% include "services-extended.html" %}
diff --git a/src/_includes/profiles.html b/src/_includes/profiles.html index 0187277..dba4605 100644 --- a/src/_includes/profiles.html +++ b/src/_includes/profiles.html @@ -1,18 +1,28 @@
diff --git a/src/_includes/services-extended.html b/src/_includes/services-extended.html index 97d7eef..ac4801c 100644 --- a/src/_includes/services-extended.html +++ b/src/_includes/services-extended.html @@ -6,7 +6,11 @@
TEST-PHASE
{% endif %}
+ {% if service.si %} + + {% else %} + {% endif %}

{{service.name}}{% if service.url %} {% endif %}

{% if service.status %} diff --git a/src/_includes/services-simple.html b/src/_includes/services-simple.html index 85f29bd..e0d1c44 100644 --- a/src/_includes/services-simple.html +++ b/src/_includes/services-simple.html @@ -6,7 +6,11 @@ {% if service.beta == true %}
TEST-PHASE
{% endif %} + {% if service.si %} + + {% else %} + {% endif %}

{{service.name}}{% if service.url %} {% endif %}

diff --git a/src/de/all-donations.html b/src/de/all-donations.html new file mode 100644 index 0000000..ef5510f --- /dev/null +++ b/src/de/all-donations.html @@ -0,0 +1,10 @@ +--- +layout: base.njk +key: all-donations +title: Unterstützen +--- +

Alle Spenden

+ +

➔ Unterstützen

+ +{% include "donations.html" %} diff --git a/src/de/contact.html b/src/de/contact.html index 0d13762..80879f4 100644 --- a/src/de/contact.html +++ b/src/de/contact.html @@ -20,23 +20,23 @@ eleventyNavigation: -
+
Folge mir auf Mastodon oder schicke mir dort eine Nachricht an @samuel_p@social.sp-codes.de
-
+
Schreibe mir auf Matrix an @samuel-p:matrix.sp-codes.de
-
+
Schreibe mir auf XMPP an @samuel-p:dismail.de
-
+
Schreibe mir auf Threema an die ID YSCU6F6U
diff --git a/src/de/donate.html b/src/de/donate.html index f0bad9a..f299062 100644 --- a/src/de/donate.html +++ b/src/de/donate.html @@ -14,7 +14,7 @@ eleventyNavigation: beteiligen oder mir eine kleine Anerkennung für meinen Blog zukommen lassen willst, kannst du mich über die folgenden Wege unterstützen1:

-
+

Empfehlen

@@ -29,7 +29,7 @@ eleventyNavigation: einen Dauerauftrag.
Banküberweisung {{ strings.supporters[locale] }} + src="https://shields.sp-codes.de/badge/{{ strings.supporters[locale] }}-{{ donations | banktransfers }}-active">
@@ -39,12 +39,12 @@ eleventyNavigation: href="/{{locale}}/imprint">Impressum senden.
Bargeld {{ strings.supporters[locale] }} + src="https://shields.sp-codes.de/badge/{{ strings.supporters[locale] }}-{{ donations | cash }}-inactive">
-

Open Collective

+

Open Collective

Gerne kannst du mir auch über Open Collective einen kleinen Betrag zukommen lassen. Wenn du willst, kannst du mich dort auch mit einer regelmäßigen Spende unterstützen. @@ -72,11 +72,13 @@ eleventyNavigation:
-
-

Eine aktuelle Liste aller eingegangenen Spenden pflege ich hier. -

-
+

Aktuelle Ausgaben

+{% include "expenses-current.html" %} + +

Spenden {{donations[0].year}}

+{% include "donations-current.html" %} + +

➔ Alle Spenden

1 Bei den geleisteten Zahlungen handelt sich um Schenkungen im Sinne von § 516 BGB, diff --git a/src/de/index.html b/src/de/index.html index a3ce08f..833ea88 100644 --- a/src/de/index.html +++ b/src/de/index.html @@ -31,7 +31,7 @@ eleventyNavigation: href="https://social.sp-codes.de/@sp_codes">@sp_codes@social.sp-codes.de

- {% include services-simple.html %} + {% include "services-simple.html" %}
@@ -44,4 +44,4 @@ eleventyNavigation:

-{% include profiles.html %} +{% include "profiles.html" %} diff --git a/src/de/services/gitea.md b/src/de/services/gitea.md index 77b3b2a..c6bed8e 100644 --- a/src/de/services/gitea.md +++ b/src/de/services/gitea.md @@ -3,7 +3,7 @@ layout: base.njk key: gitea title: Gitea --- -# Gitea +# Gitea Gitea ist eine einfache Code-Hosting-Plattform wie GitHub oder GitLab. Sie ist opensource und wird kontinuierlich weiterentwickelt. __Seit Ende 2019 betreibe ich eine eigene Gitea Instanz, in der ich meine Projekte verwalte.__ So zum Beispiel auch diese Webseite. Schau dir gerne mal den Quelltext an und lass mir Feedback da. diff --git a/src/de/services/jitsi.md b/src/de/services/jitsi.md index 854df79..d0171eb 100644 --- a/src/de/services/jitsi.md +++ b/src/de/services/jitsi.md @@ -3,7 +3,7 @@ layout: base.njk key: jitsi title: Jitsi Meet --- -# Jitsi Meet +# Jitsi Meet Jitsi-Meet ist eine Plattform für Videokonferenzen. Ohne Anmeldung können vollständig verschlüsselte Video-Chats gestartet werden. Zusätzlich bietet Jitsi-Meet die Möglichkeit den Bildschirm für die anderen Teilnehmer:innen freizugeben, neue Benutzer:innen einfach per Link einzuladen und Nachrichten im integrierten Chat zu verschicken. diff --git a/src/de/services/matrix.md b/src/de/services/matrix.md index 6e5c13f..3fb46bd 100644 --- a/src/de/services/matrix.md +++ b/src/de/services/matrix.md @@ -4,7 +4,7 @@ key: matrix title: Matrix --- -# Matrix +# Matrix [Matrix](https://matrix.org) ist eine moderne, quelloffene Software für dezentrale Kommunikation (wie E-Mail). Matrix bietet von Haus aus Sprach- und Videoanrufe, inklusive Ende-zu-Ende Verschlüsselung und vieles mehr. Das Entscheidende diff --git a/src/en/all-donations.html b/src/en/all-donations.html new file mode 100644 index 0000000..03ad175 --- /dev/null +++ b/src/en/all-donations.html @@ -0,0 +1,10 @@ +--- +layout: base.njk +key: all-donations +title: Unterstützen +--- +

All Donations

+ +

➔ Donate

+ +{% include "donations.html" %} diff --git a/src/en/contact.html b/src/en/contact.html index d645678..b48b357 100644 --- a/src/en/contact.html +++ b/src/en/contact.html @@ -19,22 +19,22 @@ eleventyNavigation: -
+
Follow me on Mastodon or send me a message to @samuel_p@social.sp-codes.de
-
+
Write me on Matrix to @samuel-p:matrix.sp-codes.de
-
+
Write me on XMPP to @samuel-p:dismail.de
-
+
Write me on Threema to the ID YSCU6F6U
diff --git a/src/en/donate.html b/src/en/donate.html index 4bc8d77..9d9103f 100644 --- a/src/en/donate.html +++ b/src/en/donate.html @@ -27,7 +27,7 @@ eleventyNavigation: will then send you my bank details as soon as possible. I am especially happy about a standing order.
Bank transfer {{ strings.supporters[locale] }} + src="https://shields.sp-codes.de/badge/{{ strings.supporters[locale] }}-{{ donations | banktransfers }}-active">
@@ -37,12 +37,12 @@ eleventyNavigation: href="/en/imprint">imprint.
Cash {{ strings.supporters[locale] }} + src="https://shields.sp-codes.de/badge/{{ strings.supporters[locale] }}-{{ donations | cash }}-inactive">
-

Open Collective

+

Open Collective

You are also welcome to send me a small amount via Open Collective. If you like you can also support me with a regular donation. @@ -70,9 +70,13 @@ eleventyNavigation:
-
-

I maintain a list of all received donations here.

-
+

Current Expenses

+{% include "expenses-current.html" %} + +

Donations {{donations[0].year}}

+{% include "donations-current.html" %} + +

➔ All Donations

1 The payments made are donations in terms of § 516 BGB, not tax-deductible donations in terms diff --git a/src/en/index.html b/src/en/index.html index fae8684..5f43784 100644 --- a/src/en/index.html +++ b/src/en/index.html @@ -30,7 +30,7 @@ eleventyNavigation: href="https://social.sp-codes.de/@sp_codes">@sp_codes@social.sp-codes.de

- {% include services-simple.html %} + {% include "services-simple.html" %}
@@ -44,4 +44,4 @@ eleventyNavigation: -{% include profiles.html %} +{% include "profiles.html" %} diff --git a/src/en/services/gitea.md b/src/en/services/gitea.md index 8ed3185..2c240cb 100644 --- a/src/en/services/gitea.md +++ b/src/en/services/gitea.md @@ -3,7 +3,7 @@ layout: base.njk key: gitea title: Gitea --- -# Gitea +# Gitea Gitea is a simple code hosting platform like GitHub or GitLab. It is open source and under continuous development. __Since the end of 2019 I have my own Gitea instance, to manage my projects.__ For example this website. Feel free to have a look at the source code and leave some feedback. diff --git a/src/en/services/jitsi.md b/src/en/services/jitsi.md index 3737603..126ecb4 100644 --- a/src/en/services/jitsi.md +++ b/src/en/services/jitsi.md @@ -3,7 +3,7 @@ layout: base.njk key: jitsi title: Jitsi Meet --- -# Jitsi Meet +# Jitsi Meet Jitsi-Meet is a platform for video conferences. You can start fully encrypted video chats without registration. Additionally, Jitsi-Meet offers the possibility to share the screen with other participants, invite new users with a simple link and send messages in the integrated chat. diff --git a/src/en/services/matrix.md b/src/en/services/matrix.md index 22eeced..9699a97 100644 --- a/src/en/services/matrix.md +++ b/src/en/services/matrix.md @@ -3,7 +3,7 @@ layout: base.njk key: matrix title: Matrix --- -# Matrix +# Matrix Matrix is a modern, open source software for decentralized communication (like e-mail). Matrix offers end-to-end encryption, voice and video calls and much more. However, the most important thing is that there is not one Matrix server that all users have to use, like WhatsApp, Telegram and many other popular messengers. diff --git a/src/img/bg-light.png b/src/img/bg-light.png deleted file mode 100644 index 190b85acf2c2f010e61c2ab90cede33c53d00bd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66117 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 KdkbyP-1t9YFil1P diff --git a/src/img/gitea.svg b/src/img/gitea.svg deleted file mode 100644 index 6ff0f33..0000000 --- a/src/img/gitea.svg +++ /dev/null @@ -1 +0,0 @@ -Gitea icon diff --git a/src/img/gitea-white.svg b/src/img/icon/gitea.svg similarity index 100% rename from src/img/gitea-white.svg rename to src/img/icon/gitea.svg diff --git a/src/img/icon/jitsi.svg b/src/img/icon/jitsi.svg new file mode 100644 index 0000000..f4b23b5 --- /dev/null +++ b/src/img/icon/jitsi.svg @@ -0,0 +1 @@ +Jitsi diff --git a/src/img/icon/mastodon.svg b/src/img/icon/mastodon.svg new file mode 100644 index 0000000..388ee96 --- /dev/null +++ b/src/img/icon/mastodon.svg @@ -0,0 +1 @@ +Mastodon diff --git a/src/img/matrix-white.svg b/src/img/icon/matrix.svg similarity index 100% rename from src/img/matrix-white.svg rename to src/img/icon/matrix.svg diff --git a/src/img/opencollective-white.svg b/src/img/icon/opencollective.svg similarity index 100% rename from src/img/opencollective-white.svg rename to src/img/icon/opencollective.svg diff --git a/src/img/threema-white.svg b/src/img/icon/threema.svg similarity index 100% rename from src/img/threema-white.svg rename to src/img/icon/threema.svg diff --git a/src/img/xmpp-white.svg b/src/img/icon/xmpp.svg similarity index 100% rename from src/img/xmpp-white.svg rename to src/img/icon/xmpp.svg diff --git a/src/img/matrix.svg b/src/img/matrix.svg deleted file mode 100644 index 1dcf4b6..0000000 --- a/src/img/matrix.svg +++ /dev/null @@ -1 +0,0 @@ -Matrix icon diff --git a/src/img/opencollective.svg b/src/img/opencollective.svg deleted file mode 100644 index eea0b36..0000000 --- a/src/img/opencollective.svg +++ /dev/null @@ -1 +0,0 @@ -Open Collective icon diff --git a/src/img/threema.svg b/src/img/threema.svg deleted file mode 100644 index a2e3619..0000000 --- a/src/img/threema.svg +++ /dev/null @@ -1 +0,0 @@ -Threema icon diff --git a/src/img/xmpp.svg b/src/img/xmpp.svg deleted file mode 100644 index 1b5e5b1..0000000 --- a/src/img/xmpp.svg +++ /dev/null @@ -1 +0,0 @@ -XMPP icon diff --git a/src/scss/icons.scss b/src/scss/icons.scss index 82fed8a..306e856 100644 --- a/src/scss/icons.scss +++ b/src/scss/icons.scss @@ -1,37 +1,38 @@ .si, .si::before { display: inline-block; - margin: 0 8px; - width: 4em; - height: 4em; + width: 1.25em; line-height: 1; box-sizing: border-box; } -@media (max-width: 767.98px) { - .si, .si::before { - margin: 0 4px; - width: 2em; - height: 2em; - } +.si-2x { + font-size: 2em; } -.h2si, .h2si::before { - margin: 0; - width: 30px; - height: 24px; +.si-3x { + font-size: 3em; +} + +.si-4x { + font-size: 4em; +} + +.si::before { + content: '\200b'; + background-repeat: no-repeat; + background-position: center; } @mixin svg-icon($name) { .si-#{$name}::before { - content: '\200b'; - background-image: url("../img/#{$name}-white.svg"); - background-repeat: no-repeat; - background-position: center; + background-image: url("../img/icon/#{$name}.svg"); } } -@include svg-icon('matrix'); @include svg-icon('gitea'); -@include svg-icon('xmpp'); -@include svg-icon('threema'); +@include svg-icon('jitsi'); +@include svg-icon('mastodon'); +@include svg-icon('matrix'); @include svg-icon('opencollective'); +@include svg-icon('threema'); +@include svg-icon('xmpp'); diff --git a/src/scss/main.scss b/src/scss/main.scss index 1aa1db9..07512ef 100644 --- a/src/scss/main.scss +++ b/src/scss/main.scss @@ -228,12 +228,6 @@ a { } &.flat { - color: $primary !important; - - &:hover { - color: $primary_dark !important; - } - .inner { flex-direction: row; text-decoration: none; @@ -241,10 +235,6 @@ a { h2 { margin-left: 0.5rem; } - - a { - color: #fff; - } } } } @@ -278,7 +268,19 @@ pre { max-width: 96px; max-height: 96px; } - .fa-4x { - font-size: 2em; +} + +table.table { + width: 100%; + margin-bottom: 16px; + background-color: #111; + + tr:nth-child(2n) { + background-color: #ffffff0b; + } + + td, th { + padding: 6px 13px; + border: 1px solid #444; } } -- 2.43.0 From 18fed7eb15bf8b7aa2a8db1b88db9b6ec893447b Mon Sep 17 00:00:00 2001 From: samuel-p Date: Tue, 8 Jun 2021 09:22:38 +0200 Subject: [PATCH 2/6] updated icons added some licenses --- src/_data/services.json | 4 ++-- src/_includes/licenses.html | 8 ++++++++ src/de/imprint.html | 5 +++++ src/de/services/jitsi.md | 2 +- src/de/services/matrix.md | 2 +- src/en/imprint.html | 5 +++++ src/en/services/jitsi.md | 2 +- src/en/services/matrix.md | 2 +- src/img/icon/comments.svg | 1 + src/img/icon/users.svg | 1 + src/scss/icons.scss | 7 ++++++- 11 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 src/_includes/licenses.html create mode 100644 src/img/icon/comments.svg create mode 100644 src/img/icon/users.svg diff --git a/src/_data/services.json b/src/_data/services.json index cb03dbe..f441329 100644 --- a/src/_data/services.json +++ b/src/_data/services.json @@ -13,7 +13,7 @@ { "id": "matrix", "name": "Matrix", - "si": "matrix", + "si": "comments", "url": "https://chat.sp-codes.de", "status": "https://matrix.sp-codes.de/_matrix/static/", "summary": { @@ -24,7 +24,7 @@ { "id": "jitsi", "name": "Jitsi Meet", - "si": "jitsi", + "si": "users", "url": "https://jitsi.sp-codes.de", "status": "https://jitsi.sp-codes.de", "summary": { diff --git a/src/_includes/licenses.html b/src/_includes/licenses.html new file mode 100644 index 0000000..80c8a1e --- /dev/null +++ b/src/_includes/licenses.html @@ -0,0 +1,8 @@ + diff --git a/src/de/imprint.html b/src/de/imprint.html index a2fc900..57c01fd 100644 --- a/src/de/imprint.html +++ b/src/de/imprint.html @@ -25,3 +25,8 @@ title: Impressum
  • sp-magic.de
  • +
    +

    Lizenzen

    +

    Diese Webseite nutzt die folgenden Bibliotheken mit ihren entsprechenden Lizenzen:

    + {% include "licenses.html" %} +
    diff --git a/src/de/services/jitsi.md b/src/de/services/jitsi.md index d0171eb..80a6643 100644 --- a/src/de/services/jitsi.md +++ b/src/de/services/jitsi.md @@ -3,7 +3,7 @@ layout: base.njk key: jitsi title: Jitsi Meet --- -# Jitsi Meet +# Jitsi Meet Jitsi-Meet ist eine Plattform für Videokonferenzen. Ohne Anmeldung können vollständig verschlüsselte Video-Chats gestartet werden. Zusätzlich bietet Jitsi-Meet die Möglichkeit den Bildschirm für die anderen Teilnehmer:innen freizugeben, neue Benutzer:innen einfach per Link einzuladen und Nachrichten im integrierten Chat zu verschicken. diff --git a/src/de/services/matrix.md b/src/de/services/matrix.md index 3fb46bd..66bab50 100644 --- a/src/de/services/matrix.md +++ b/src/de/services/matrix.md @@ -4,7 +4,7 @@ key: matrix title: Matrix --- -# Matrix +# Matrix [Matrix](https://matrix.org) ist eine moderne, quelloffene Software für dezentrale Kommunikation (wie E-Mail). Matrix bietet von Haus aus Sprach- und Videoanrufe, inklusive Ende-zu-Ende Verschlüsselung und vieles mehr. Das Entscheidende diff --git a/src/en/imprint.html b/src/en/imprint.html index 3e0e9e5..dad79ec 100644 --- a/src/en/imprint.html +++ b/src/en/imprint.html @@ -25,3 +25,8 @@ title: sp-codes
  • sp-magic.de
  • +
    +

    Licenses

    +

    This Website uses the following libraries with their respective licenses:

    + {% include "licenses.html" %} +
    diff --git a/src/en/services/jitsi.md b/src/en/services/jitsi.md index 126ecb4..9185af4 100644 --- a/src/en/services/jitsi.md +++ b/src/en/services/jitsi.md @@ -3,7 +3,7 @@ layout: base.njk key: jitsi title: Jitsi Meet --- -# Jitsi Meet +# Jitsi Meet Jitsi-Meet is a platform for video conferences. You can start fully encrypted video chats without registration. Additionally, Jitsi-Meet offers the possibility to share the screen with other participants, invite new users with a simple link and send messages in the integrated chat. diff --git a/src/en/services/matrix.md b/src/en/services/matrix.md index 9699a97..d035256 100644 --- a/src/en/services/matrix.md +++ b/src/en/services/matrix.md @@ -3,7 +3,7 @@ layout: base.njk key: matrix title: Matrix --- -# Matrix +# Matrix Matrix is a modern, open source software for decentralized communication (like e-mail). Matrix offers end-to-end encryption, voice and video calls and much more. However, the most important thing is that there is not one Matrix server that all users have to use, like WhatsApp, Telegram and many other popular messengers. diff --git a/src/img/icon/comments.svg b/src/img/icon/comments.svg new file mode 100644 index 0000000..7446b65 --- /dev/null +++ b/src/img/icon/comments.svg @@ -0,0 +1 @@ + diff --git a/src/img/icon/users.svg b/src/img/icon/users.svg new file mode 100644 index 0000000..10b64b5 --- /dev/null +++ b/src/img/icon/users.svg @@ -0,0 +1 @@ + diff --git a/src/scss/icons.scss b/src/scss/icons.scss index 306e856..4896a79 100644 --- a/src/scss/icons.scss +++ b/src/scss/icons.scss @@ -29,10 +29,15 @@ } } +@include svg-icon('comments'); @include svg-icon('gitea'); -@include svg-icon('jitsi'); @include svg-icon('mastodon'); @include svg-icon('matrix'); @include svg-icon('opencollective'); @include svg-icon('threema'); +@include svg-icon('users'); @include svg-icon('xmpp'); + +:root { + --currentColor: #fff; +} -- 2.43.0 From d3ec7b98524f6033b61ab96b00c9059a8cf85875 Mon Sep 17 00:00:00 2001 From: samuel-p Date: Tue, 8 Jun 2021 23:14:41 +0200 Subject: [PATCH 3/6] replaced some more icons with svg --- src/_data/services.json | 14 +++++++------- src/_includes/profiles.html | 12 ++++++------ src/de/contact.html | 2 +- src/de/services/connectivitycheck.md | 2 +- src/de/services/firefox-sync.md | 2 +- src/de/services/invidious.md | 2 +- src/de/services/nitter.md | 2 +- src/de/services/searx.md | 2 +- src/de/services/shields.md | 2 +- src/en/contact.html | 2 +- src/en/services/connectivitycheck.md | 2 +- src/en/services/firefox-sync.md | 2 +- src/en/services/invidious.md | 2 +- src/en/services/nitter.md | 2 +- src/en/services/searx.md | 2 +- src/en/services/shields.md | 2 +- src/img/icon/envelope.svg | 1 + src/img/icon/firefox-browser.svg | 1 + src/img/icon/github.svg | 1 + src/img/icon/jitsi.svg | 1 - src/img/icon/language.svg | 1 + src/img/icon/search.svg | 1 + src/img/icon/stackoverflow.svg | 1 + src/img/icon/tags.svg | 1 + src/img/icon/twitter.svg | 1 + src/img/icon/wifi.svg | 1 + src/img/icon/youtube.svg | 1 + src/scss/icons.scss | 14 ++++++++++---- 28 files changed, 47 insertions(+), 32 deletions(-) create mode 100644 src/img/icon/envelope.svg create mode 100644 src/img/icon/firefox-browser.svg create mode 100644 src/img/icon/github.svg delete mode 100644 src/img/icon/jitsi.svg create mode 100644 src/img/icon/language.svg create mode 100644 src/img/icon/search.svg create mode 100644 src/img/icon/stackoverflow.svg create mode 100644 src/img/icon/tags.svg create mode 100644 src/img/icon/twitter.svg create mode 100644 src/img/icon/wifi.svg create mode 100644 src/img/icon/youtube.svg diff --git a/src/_data/services.json b/src/_data/services.json index f441329..937cae3 100644 --- a/src/_data/services.json +++ b/src/_data/services.json @@ -2,7 +2,7 @@ { "id": "searx", "name": "Searx", - "icon": "fas fa-search", + "si": "search", "url": "https://searx.sp-codes.de", "status": "https://searx.sp-codes.de", "summary": { @@ -58,7 +58,7 @@ { "id": "connectivitycheck", "name": "Captive Portal Check", - "icon": "fas fa-wifi", + "si": "wifi", "status": "https://connectivitycheck.sp-codes.de/generate204", "summary": { "de": "Eine datenschutzfreundliches Tool, um Anmeldeseiten in WLAN-Netzwerken zu erkennen.", @@ -68,7 +68,7 @@ { "id": "firefox-sync", "name": "Firefox Sync", - "icon": "fab fa-firefox-browser", + "si": "firefox-browser", "status": "https://sync.firefox.sp-codes.de/token/", "summary": { "de": "Ein Service um Firefox Einstellungen, Lesezeichen, offene Tabs und vieles mehr über verschiedene Geräte zu synchronisieren.", @@ -78,7 +78,7 @@ { "id": "shields", "name": "Shields", - "icon": "fas fa-tags", + "si": "tags", "url": "https://shields.sp-codes.de", "status": "https://shields.sp-codes.de", "summary": { @@ -89,7 +89,7 @@ { "id": "translate", "name": "LibreTranslate", - "icon": "fas fa-language", + "si": "language", "url": "https://translate.sp-codes.de", "status": "https://translate.sp-codes.de", "beta": true, @@ -101,7 +101,7 @@ { "id": "invidious", "name": "Invidious", - "icon": "fab fa-youtube", + "si": "youtube", "url": "https://invidious.sp-codes.de", "status": "https://invidious.sp-codes.de", "summary": { @@ -112,7 +112,7 @@ { "id": "nitter", "name": "Nitter", - "icon": "fab fa-twitter", + "si": "twitter", "url": "https://nitter.sp-codes.de", "status": "https://nitter.sp-codes.de", "summary": { diff --git a/src/_includes/profiles.html b/src/_includes/profiles.html index dba4605..b065b4d 100644 --- a/src/_includes/profiles.html +++ b/src/_includes/profiles.html @@ -1,7 +1,7 @@
    diff --git a/src/de/contact.html b/src/de/contact.html index 80879f4..28d7be3 100644 --- a/src/de/contact.html +++ b/src/de/contact.html @@ -15,7 +15,7 @@ eleventyNavigation:
    -
    +
    Schicke mir eine E-Mail an mail@sp-codes.de
    Captive Portal Check +# Captive Portal Check Ein Captive Portal ist eine Anmeldeseite in öffentlichen WLAN-Netzwerken, um den Internet-Zugriff an die Zustimmung bestimmter Nutzungsregeln zu binden. Wenn du in einem öffentlichen Netzwerk eine Anmeldeseite angezeigt bekommst, nutzt dein Gerät dafür einen Captive Portal Check. Dieser ermöglicht es dem Gerät, herauszufinden, ob du einen direkten Internetzugang hast oder nicht. Unter Android wird hierfür beispielsweise eine Anfrage an einen Google-Server gestellt. diff --git a/src/de/services/firefox-sync.md b/src/de/services/firefox-sync.md index 7efa089..9a3601b 100644 --- a/src/de/services/firefox-sync.md +++ b/src/de/services/firefox-sync.md @@ -3,7 +3,7 @@ layout: base.njk key: firefox-sync title: Firefox Sync --- -# Firefox Sync +# Firefox Sync Nutzt du Firefox auf mehreren Geräten zum Surfen? Dann kannst du mit Firefox Sync deine Browserdaten (Lesezeichen, offene Tabs, die Suchhistorie, uvm.) zwischen all deinen Geräten synchronisieren. diff --git a/src/de/services/invidious.md b/src/de/services/invidious.md index 25f5c94..fc2e52c 100644 --- a/src/de/services/invidious.md +++ b/src/de/services/invidious.md @@ -3,7 +3,7 @@ layout: base.njk key: invidious title: Invidious --- -# Invidious +# Invidious Invidious ist ein alternatives Frontend für YouTube. Da nur die nötigsten Verbindungen zu YouTube aufgebaut werden und viele sogar vom Server selber übernommen werden, erhöht Invidious die Privatsphäre der Nutzer:innen. diff --git a/src/de/services/nitter.md b/src/de/services/nitter.md index a0c7e6c..202afbd 100644 --- a/src/de/services/nitter.md +++ b/src/de/services/nitter.md @@ -3,7 +3,7 @@ layout: base.njk key: nitter title: Nitter --- -# Nitter +# Nitter Eine freies und quelloffenes Twitter-Frontend, das auf Privatsphäre der Nutzer ausgerichtet ist. Die Verbindungen zu Twitter werden vom Server selber übernommen, um Tracking über IP oder JavaScript zu verhindern. diff --git a/src/de/services/searx.md b/src/de/services/searx.md index 789b21e..13e2a32 100644 --- a/src/de/services/searx.md +++ b/src/de/services/searx.md @@ -3,7 +3,7 @@ layout: base.njk key: searx title: Searx --- -# Searx +# Searx Searx ist eine freie Metasuchmaschine, das heißt sie nutzt für die Suche öffentliche Suchmaschinen, wie Google, DuckDuckGo, StartPage und viele andere. diff --git a/src/de/services/shields.md b/src/de/services/shields.md index d88549e..a4aaaa7 100644 --- a/src/de/services/shields.md +++ b/src/de/services/shields.md @@ -3,7 +3,7 @@ layout: base.njk key: shields title: Shields --- -# Shields +# Shields Shields ist ein Service für prägnante, konsistente und lesbare Badges im SVG- und Rasterformat. Über eine URL können sie sehr einfach in Readmes oder jede andere Webseite eingebunden werden. Außerdem werden Integrationen zu verschiedenen Diensten oder Netzwerken bereitgestellt. diff --git a/src/en/contact.html b/src/en/contact.html index b48b357..52dbb3e 100644 --- a/src/en/contact.html +++ b/src/en/contact.html @@ -14,7 +14,7 @@ eleventyNavigation:
    -
    +
    Send me an email to mail@sp-codes.de
    Captive Portal Check +# Captive Portal Check A captive portal is a login page in public WLAN networks to restrict Internet access to the approval of certain terms of use. When you see a login page on a public network, your device uses a captive portal check. This allows the device to find out whether you have direct Internet access or not. In Android, for example, your device sends a request to a Google server. diff --git a/src/en/services/firefox-sync.md b/src/en/services/firefox-sync.md index a39c7b6..7866066 100644 --- a/src/en/services/firefox-sync.md +++ b/src/en/services/firefox-sync.md @@ -3,7 +3,7 @@ layout: base.njk key: firefox-sync title: Firefox Sync --- -# Firefox Sync +# Firefox Sync Do you use Firefox on more than one device for surfing? Then Firefox Sync lets you synchronize your browser data (bookmarks, open tabs, search history, and more) between all your devices. diff --git a/src/en/services/invidious.md b/src/en/services/invidious.md index 3012741..1dd21a4 100644 --- a/src/en/services/invidious.md +++ b/src/en/services/invidious.md @@ -3,7 +3,7 @@ layout: base.njk key: invidious title: Invidious --- -# Invidious +# Invidious Invidious is an alternative YouTube-Frontend. It establishes only the most necessary connections to YouTube and many of them are even made by the server itself. So Invidious increases the privacy of the users. diff --git a/src/en/services/nitter.md b/src/en/services/nitter.md index b911927..d826f4e 100644 --- a/src/en/services/nitter.md +++ b/src/en/services/nitter.md @@ -3,7 +3,7 @@ layout: base.njk key: nitter title: Nitter --- -# Nitter +# Nitter A free and open source Twitter frontend that is focussed on user privacy. Connections to Twitter are handled by the server itself to prevent tracking by IP or JavaScript. diff --git a/src/en/services/searx.md b/src/en/services/searx.md index 30d7926..3c08d3a 100644 --- a/src/en/services/searx.md +++ b/src/en/services/searx.md @@ -3,7 +3,7 @@ layout: base.njk key: searx title: Searx --- -# Searx +# Searx Searx is a free meta search engine, which uses other public search engines like Google, DuckDuckGo, StartPage and many others. diff --git a/src/en/services/shields.md b/src/en/services/shields.md index a39ee29..d00a30f 100644 --- a/src/en/services/shields.md +++ b/src/en/services/shields.md @@ -3,7 +3,7 @@ layout: base.njk key: shields title: Shields --- -# Shields +# Shields Shields is a service for concise, consistent and legible badges in SVG and raster format. Via a URL they can be easily embedded in readmes or any other website. In addition, integrations to various services or networks are provided. diff --git a/src/img/icon/envelope.svg b/src/img/icon/envelope.svg new file mode 100644 index 0000000..3400159 --- /dev/null +++ b/src/img/icon/envelope.svg @@ -0,0 +1 @@ + diff --git a/src/img/icon/firefox-browser.svg b/src/img/icon/firefox-browser.svg new file mode 100644 index 0000000..f11b3b1 --- /dev/null +++ b/src/img/icon/firefox-browser.svg @@ -0,0 +1 @@ +Firefox Browser diff --git a/src/img/icon/github.svg b/src/img/icon/github.svg new file mode 100644 index 0000000..8949c5a --- /dev/null +++ b/src/img/icon/github.svg @@ -0,0 +1 @@ +GitHub diff --git a/src/img/icon/jitsi.svg b/src/img/icon/jitsi.svg deleted file mode 100644 index f4b23b5..0000000 --- a/src/img/icon/jitsi.svg +++ /dev/null @@ -1 +0,0 @@ -Jitsi diff --git a/src/img/icon/language.svg b/src/img/icon/language.svg new file mode 100644 index 0000000..b1b3f1d --- /dev/null +++ b/src/img/icon/language.svg @@ -0,0 +1 @@ + diff --git a/src/img/icon/search.svg b/src/img/icon/search.svg new file mode 100644 index 0000000..494940d --- /dev/null +++ b/src/img/icon/search.svg @@ -0,0 +1 @@ + diff --git a/src/img/icon/stackoverflow.svg b/src/img/icon/stackoverflow.svg new file mode 100644 index 0000000..fd0a699 --- /dev/null +++ b/src/img/icon/stackoverflow.svg @@ -0,0 +1 @@ +Stack Overflow diff --git a/src/img/icon/tags.svg b/src/img/icon/tags.svg new file mode 100644 index 0000000..295aa1c --- /dev/null +++ b/src/img/icon/tags.svg @@ -0,0 +1 @@ + diff --git a/src/img/icon/twitter.svg b/src/img/icon/twitter.svg new file mode 100644 index 0000000..70967cd --- /dev/null +++ b/src/img/icon/twitter.svg @@ -0,0 +1 @@ +Twitter diff --git a/src/img/icon/wifi.svg b/src/img/icon/wifi.svg new file mode 100644 index 0000000..27af0a5 --- /dev/null +++ b/src/img/icon/wifi.svg @@ -0,0 +1 @@ + diff --git a/src/img/icon/youtube.svg b/src/img/icon/youtube.svg new file mode 100644 index 0000000..8fca435 --- /dev/null +++ b/src/img/icon/youtube.svg @@ -0,0 +1 @@ +YouTube diff --git a/src/scss/icons.scss b/src/scss/icons.scss index 4896a79..ce0dfcc 100644 --- a/src/scss/icons.scss +++ b/src/scss/icons.scss @@ -30,14 +30,20 @@ } @include svg-icon('comments'); +@include svg-icon('envelope'); +@include svg-icon('firefox-browser'); @include svg-icon('gitea'); +@include svg-icon('github'); +@include svg-icon('language'); @include svg-icon('mastodon'); @include svg-icon('matrix'); @include svg-icon('opencollective'); +@include svg-icon('search'); +@include svg-icon('stackoverflow'); +@include svg-icon('tags'); @include svg-icon('threema'); +@include svg-icon('twitter'); @include svg-icon('users'); +@include svg-icon('wifi'); @include svg-icon('xmpp'); - -:root { - --currentColor: #fff; -} +@include svg-icon('youtube'); -- 2.43.0 From 848289cdc0a7e65cdd5cfecda9e680c9d721ccc2 Mon Sep 17 00:00:00 2001 From: samuel-p Date: Wed, 9 Jun 2021 00:58:35 +0200 Subject: [PATCH 4/6] replaced some more icons with svg some more improvements --- src/_data/services.json | 22 +++++++++++----------- src/_includes/layouts/base.njk | 4 ++-- src/_includes/services-extended.html | 6 +----- src/_includes/services-simple.html | 6 +----- src/de/all-donations.html | 2 +- src/de/blog.md | 2 +- src/de/contact.html | 4 ++-- src/de/donate.html | 6 +++--- src/de/index.html | 2 +- src/de/services.html | 4 ++-- src/en/all-donations.html | 2 +- src/en/blog.md | 2 +- src/en/contact.html | 4 ++-- src/en/donate.html | 6 +++--- src/en/index.html | 2 +- src/en/services.html | 4 ++-- src/img/icon/bars.svg | 1 + src/img/icon/book.svg | 1 + src/img/icon/comment-dots.svg | 1 + src/img/icon/hand-holding-heart.svg | 1 + src/img/icon/home.svg | 1 + src/img/icon/server.svg | 1 + src/scss/icons.scss | 6 ++++++ 23 files changed, 47 insertions(+), 43 deletions(-) create mode 100644 src/img/icon/bars.svg create mode 100644 src/img/icon/book.svg create mode 100644 src/img/icon/comment-dots.svg create mode 100644 src/img/icon/hand-holding-heart.svg create mode 100644 src/img/icon/home.svg create mode 100644 src/img/icon/server.svg diff --git a/src/_data/services.json b/src/_data/services.json index 937cae3..4021de7 100644 --- a/src/_data/services.json +++ b/src/_data/services.json @@ -2,7 +2,7 @@ { "id": "searx", "name": "Searx", - "si": "search", + "icon": "si si-search", "url": "https://searx.sp-codes.de", "status": "https://searx.sp-codes.de", "summary": { @@ -13,7 +13,7 @@ { "id": "matrix", "name": "Matrix", - "si": "comments", + "icon": "si si-comments", "url": "https://chat.sp-codes.de", "status": "https://matrix.sp-codes.de/_matrix/static/", "summary": { @@ -24,7 +24,7 @@ { "id": "jitsi", "name": "Jitsi Meet", - "si": "users", + "icon": "si si-users", "url": "https://jitsi.sp-codes.de", "status": "https://jitsi.sp-codes.de", "summary": { @@ -35,7 +35,7 @@ { "id": "mastodon", "name": "Mastodon", - "si": "mastodon", + "icon": "si si-mastodon", "url": "https://social.sp-codes.de", "status": "https://social.sp-codes.de/health", "beta": true, @@ -47,7 +47,7 @@ { "id": "gitea", "name": "Gitea", - "si": "gitea", + "icon": "si si-gitea", "url": "https://git.sp-codes.de", "status": "https://git.sp-codes.de", "summary": { @@ -58,7 +58,7 @@ { "id": "connectivitycheck", "name": "Captive Portal Check", - "si": "wifi", + "icon": "si si-wifi", "status": "https://connectivitycheck.sp-codes.de/generate204", "summary": { "de": "Eine datenschutzfreundliches Tool, um Anmeldeseiten in WLAN-Netzwerken zu erkennen.", @@ -68,7 +68,7 @@ { "id": "firefox-sync", "name": "Firefox Sync", - "si": "firefox-browser", + "icon": "si si-firefox-browser", "status": "https://sync.firefox.sp-codes.de/token/", "summary": { "de": "Ein Service um Firefox Einstellungen, Lesezeichen, offene Tabs und vieles mehr über verschiedene Geräte zu synchronisieren.", @@ -78,7 +78,7 @@ { "id": "shields", "name": "Shields", - "si": "tags", + "icon": "si si-tags", "url": "https://shields.sp-codes.de", "status": "https://shields.sp-codes.de", "summary": { @@ -89,7 +89,7 @@ { "id": "translate", "name": "LibreTranslate", - "si": "language", + "icon": "si si-language", "url": "https://translate.sp-codes.de", "status": "https://translate.sp-codes.de", "beta": true, @@ -101,7 +101,7 @@ { "id": "invidious", "name": "Invidious", - "si": "youtube", + "icon": "si si-youtube", "url": "https://invidious.sp-codes.de", "status": "https://invidious.sp-codes.de", "summary": { @@ -112,7 +112,7 @@ { "id": "nitter", "name": "Nitter", - "si": "twitter", + "icon": "si si-twitter", "url": "https://nitter.sp-codes.de", "status": "https://nitter.sp-codes.de", "summary": { diff --git a/src/_includes/layouts/base.njk b/src/_includes/layouts/base.njk index 4d3ad77..fc410de 100644 --- a/src/_includes/layouts/base.njk +++ b/src/_includes/layouts/base.njk @@ -40,7 +40,7 @@ title: sp-codes