commit a486b7bbb7197815816fa8992cbab89fa2fd9941 Author: kleines Filmröllchen Date: Mon Nov 18 12:31:22 2024 +0100 initial diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d70ebaa --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +public \ No newline at end of file diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..786244a --- /dev/null +++ b/config.toml @@ -0,0 +1,14 @@ +base_url = "https://chaostreff-backnang.de" +author = "Chaostreff Backnang e.V." +compile_sass = false +minify_html = true +hard_link_static = true +title = "Chaostreff Backnang" +default_language = "de" + +[markdown] +external_links_target_blank = true +smart_punctuation = true + +[languages.en] +title = "Chaostreff Backnang" diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..1b2c570 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,46 @@ ++++ +title = "Chaostreff Backnang" +template = "page.html" +page_template = "page.html" +description = "jasdfjlajsdfjkaf" ++++ + +# Chaostreff Backnang e.V. + +Der Chaostreff Backnang e.V. ist ein Anlaufpunkt und Austauschort für Technik-Interessierte, Bastler\*innen, Datenreisende und Wesen mit "Spaß am Gerät". Gemeinsam werden meist technisch angehauchte Projekte wie freie Software und Hardware, 3D-Druck oder Smart Home diskutiert und umgesetzt. Wir befassen uns aber auch mit gesellschaftlichen Themen wie Datenschutz, Informationssicherheit und digitaler Selbstbestimmung. + +Der Chaostreff Backnang ist ein seit 2019 bestehender und seit 2023 eingetragener Verein in Backnang, der sich dem [Chaos Computer Club](https://www.ccc.de/) verbunden fühlt. Bei uns sind Wesen aller Herkunft und aller Lebenssituationen willkommen, nicht nur aus Backnang und Umgebung. + +![Bild aus dasWohnzimmer](/wozi.jpg) + +## Termine + +Wir treffen uns regelmäßig am **1. Dienstag im Monat zum Stammtisch** und am **3. Sonntag im Monat ab 15:00 Uhr als Popup-Hackspace** im [dasWohnzimmer](https://map.freifunk-stuttgart.de/#!/de/map/3ec806d9cc8c) (Willy-Brandt-Platz 2) in [Backnang bei Stuttgart](https://www.openstreetmap.org/relation/165637). Der Zugang zu unseren Treffen ist unverbindlich und frei – wir freuen uns immer auf neue Gesichter! Wir sind auch gerne bei Fragen behilflich. + +Weitere Treffen finden nach Bedarf meist sonntags statt. Tagesordnungen, Protokolle, Informationen, Links und vieles mehr findest du in der [Pad-Übersicht](https://pad.hacknang.de/dbk-meta). + +
+ +- Mehr Termine anzeigen +- Kalender abonnieren + +## Ausstattung + +- Freifunk durch unsere Partnercommunity Freifunk Backnang + (Logo von Freifunk Backnang) +- Getränke und Snacks der Bar (auch Mate!) +- Sofas +- 3D-Drucker, diverses Werkzeug + +## Kontakt + +In unseren [Matrix](https://matrix.org/ecosystem/clients/)-Gruppen findet der alltägliche Austausch statt, außerdem werden hier zeitnah kurzfristige Änderungen und Terminerinnerungen verschickt. +- Matrix-Space: [#chaostreff-backnang:hacknang.de](matrix:r/chaostreff-backnang:hacknang.de?action=join) +- Haupt-Raum: [#chaostreff-bk:hacknang.de](matrix:r/chaostreff-bk:hacknang.de?action=join) +- Freifunk Backnang-Raum: [#freifunk-bk:hacknang.de](matrix:r/freifunk-bk:hacknang.de?action=join) (auch auf [Signal](https://signal.group/#CjQKILQW0-zHTyBMIiCubKPh-RmSayhOMyP9DtGa_I7_eX7kEhBaV21xphwxFoeaG2rsNU9n)) + +Weitere Kontaktmöglichkeiten: +- per Mail [info@chaostreff-backnang.de](mailto:info@chaostreff-backnang.de) +- Folge [@ctbk im Fediverse](https://chaos.social/@ctbk) +- Erreiche uns auf Chaos-Events per EPVPN unter der Durchwahl: [1002](tel:+49221596191002) + diff --git a/static/dbkcalendar.js b/static/dbkcalendar.js new file mode 100644 index 0000000..401fab6 --- /dev/null +++ b/static/dbkcalendar.js @@ -0,0 +1,65 @@ +/* + Include calendar | Chaostreff Backnang | @paddy +*/ + +export default function hackcal(e, p = 1) { + // var cal_uri = "https://chaostreff-backnang.de/hackcal/?period=" + p; + var cal_uri = "/hackcal"; + var uri_regex = + /(https?:\/\/([-\w\.]+)+(:\d+)?(\/([\w\/\-_\.\:]*(\?\S+)?)?)?)/gi; + + fetch(cal_uri) + .then((res) => res.json()) + .then((data) => { + var items = []; + Object.keys(data).forEach(function (date) { + var day = new Date(date); + items.push( + "" + + day.toLocaleDateString(true, { + weekday: "short", + day: "numeric", + month: "long", + year: "numeric", + }) + + "" + ); + Object.keys(data[date]).forEach(function (uid) { + var event = data[date][uid]; + var location = event.location + ? event.location + .replace(/\n/g, "
") + .replace(uri_regex, "$1") + : ""; + var description = event.description + ? event.description + .replace(/\n/g, "
") + .replace(uri_regex, (url) => { + event.summary = `${event.summary}`; + return ""; + }) + : ""; + var categories = event.categories + ? "" + event.categories.replace(",", " ") + "" + : ""; + items.push( + "" + + event.datestr + + "" + + event.summary + + " | " + + location + + "
" + + description + + categories + + "
" + ); + }); + }); + document.querySelector("#dbkcalendar").innerHTML = items.join(""); + }); +} diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000..a52531e Binary files /dev/null and b/static/favicon.png differ diff --git a/static/hackcal b/static/hackcal new file mode 100644 index 0000000..0b59d17 --- /dev/null +++ b/static/hackcal @@ -0,0 +1 @@ +{"2024-11-17":{"3ab15365-b4e3-4558-9c30-0930983f9ee8":{"dtstart":"2024-11-17T15:00:00+01:00","dtend":"2024-11-17T20:00:00+01:00","datestr":"15:00","summary":"Chaostreff Backnang","location":"dasWohnzimmer, Backnang","description":"https://pad.hacknang.de/dbk-meta","categories":"CTBK"}},"2024-11-23":{"3e3c9b04-77d7-441e-a1ec-acaca4e9e708":{"dtstart":"2024-11-23T14:30:00+01:00","dtend":"2024-11-23T19:00:00+01:00","datestr":"14:30","summary":"Besuch bei Swabian Instruments","location":"Swabian Instruments GmbH, Zuffenhausen","description":"https://tickets.ctbk.de/ctbk/swins/","categories":"CTBK"}},"2024-11-27":{"52d6cb7c-8d2d-4c3c-91df-7035613c3fe1":{"dtstart":"2024-11-27T19:00:00+01:00","dtend":"2024-11-27T22:00:00+01:00","datestr":"19:00","summary":"FFS Technik-Treffen","location":"https://meet.mars-services.de/ffs","description":"https://wiki.freifunk-stuttgart.net/technik:themenspeicher","categories":"FFS"}},"2024-12-03":{"c8d1b002-69c1-41c7-a621-d81d18182553":{"dtstart":"2024-12-03T18:00:00+01:00","dtend":"2024-12-03T22:00:00+01:00","datestr":"18:00","summary":"Chaos-Stammtisch","location":"dasWohnzimmer, Backnang","description":"Unser zweiter Termin im Monat. Es gibt keine Tagesordnung, dasWohnzimmer hat regul\u00e4r ge\u00f6ffnet.","categories":"CTBK"}},"2024-12-05":{"a6a0848c-f829-4bed-9749-87c81856b083":{"dtstart":"2024-12-05T19:00:00+01:00","dtend":"2024-12-05T21:00:00+01:00","datestr":"19:00","summary":"Freifunk Backnang","location":"online","description":"https://pad.hacknang.de/dbk-meta","categories":"FFBK"}},"2024-12-09":{"345e3e05-382c-4da4-85d5-941bfc1dd30d":{"dtstart":"2024-12-09T19:00:00+01:00","dtend":"2024-12-09T21:00:00+01:00","datestr":"19:00","summary":"Freifunk Stuttgart","location":"shackspace, Stuttgart","description":"https://pad.freifunk-stuttgart.de/p/ffs-metapad","categories":"FFS"}},"2024-12-15":{"3ab15365-b4e3-4558-9c30-0930983f9ee8":{"dtstart":"2024-12-15T15:00:00+01:00","dtend":"2024-12-15T20:00:00+01:00","datestr":"15:00","summary":"Chaostreff Backnang","location":"dasWohnzimmer, Backnang","description":"https://pad.hacknang.de/dbk-meta","categories":"CTBK"}}} \ No newline at end of file diff --git a/static/logo.svg b/static/logo.svg new file mode 100644 index 0000000..536b45c --- /dev/null +++ b/static/logo.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/static/main.css b/static/main.css new file mode 100644 index 0000000..6782d21 --- /dev/null +++ b/static/main.css @@ -0,0 +1,155 @@ +:root { + --main-bg-color: #020404; + --main-text-color: #efe3e3; + --main-accent-color: #f9c827; + --secondary-accent-color: #ff925f; +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", + "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + overflow-x: hidden; + + background-color: var(--main-bg-color); + color: var(--main-text-color); + + margin: 1.5rem; + margin-top: 0; +} + +a { + color: var(--main-accent-color); + + &:hover, + &:focus { + color: var(--secondary-accent-color); + } +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", + monospace; +} + +img { + display: block; +} + +#space-image { + height: 12vh; + transition: + height 0.2s, + transform 0.2s; + + &:hover { + height: 14vh; + } +} + +header { + display: flex; + flex-direction: row; + align-items: flex-start; + justify-content: space-between; + overflow: hidden; +} + +#header-image { + height: 20vh; + max-width: 40vw; +} + +#skip-header { + background: var(--main-bg-color); + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + white-space: nowrap; + width: 1px; + + &:active, + &:focus { + clip: auto; + height: auto; + margin: 1em; + overflow: visible; + white-space: inherit; + width: auto; + } +} + +nav { + display: flex; + flex-wrap: wrap; + margin: 1em; + + a { + height: min-content; + font-size: 1.2em; + font-weight: bold; + color: var(--main-text-color); + margin-left: 1em; + margin-bottom: 0.4em; + text-transform: uppercase; + text-decoration: underline 0.15em var(--main-text-color); + transition: + text-decoration-color 0.3s, + color 0.25s; + + &:focus, + &:hover { + text-decoration-color: var(--main-accent-color); + color: var(--main-accent-color); + } + } +} + +main { + display: grid; + grid-template: ". content ." auto / 1fr minmax(min-content, 45rem) 1fr; + + section { + grid-area: content; + } + + img { + height: auto; + max-width: 100%; + border-radius: 1em; + } +} + +h1 { + font-weight: 700; + margin-bottom: 0.5em; + color: var(--main-accent-color); +} + +footer { + background-color: var(--main-bg-color); + text-align: center; + padding-top: 1.5em; + margin-top: 1.5em; + font-weight: bold; + border-top: 2px solid transparent; + border-image: linear-gradient( + 90deg, + transparent, + var(--secondary-accent-color), + transparent + ); + border-image-slice: 1; +} diff --git a/static/main.js b/static/main.js new file mode 100644 index 0000000..c253faf --- /dev/null +++ b/static/main.js @@ -0,0 +1,31 @@ +import hackcal from "./dbkcalendar.js"; + +const refreshRate = 60 * 1000; + +function checkSpace() { + const icon = document.getElementById("space-image"); + let openText = ""; + fetch("https://spaceapi.ctbk.de/") + .then((response) => response.json()) + .then((data) => { + if (data.state.open) { + openText = "Offen"; + icon.src = data.state.icon.open; + } else { + openText = "Geschlossen"; + icon.src = data.state.icon.closed; + } + icon.alt = "Der Space ist " + openText; + console.log("Icon: " + icon.src); + }) + .catch((error) => { + console.error(error); + }); +} + +const interval = setInterval(() => { + checkSpace(); +}, refreshRate); + +document.addEventListener("DOMContentLoaded", checkSpace); +document.addEventListener("DOMContentLoaded", hackcal); diff --git a/static/wozi.jpg b/static/wozi.jpg new file mode 100644 index 0000000..787cbef Binary files /dev/null and b/static/wozi.jpg differ diff --git a/templates/page.html b/templates/page.html new file mode 100644 index 0000000..813e150 --- /dev/null +++ b/templates/page.html @@ -0,0 +1,93 @@ + + +{% if page.title %} {% set title = page.title %} {% elif section.title %} {% set +title = section.title %} {% elif config.title %} {% set title = config.title %} +{% endif %} {% if page.description %} {% set description = page.description | +truncate(length=150) %} {% elif section.description %} {% set description = +section.description | truncate(length=150) %} {% elif config.description %} {% +set description = config.description | truncate(length=150) %} {% endif %} + + + + + + + + + + + + + + + + + + + + + + + + + {{ title }} + + +
+ Skip to main content + Chaostreff Backnang Logo + +
+
+
+ {% if section %} {{ section.content | safe }} {% else %} {{ page.content + | safe }} {% endif %} +
+
+ + + + + +