first draft
All checks were successful
/ build (pull_request) Successful in 53s

This commit is contained in:
kritzl 2026-10-04 14:19:19 +02:00
commit 975f2cd9bc
Signed by: kritzl
SSH key fingerprint: SHA256:5BmINP9VjZWaUk5Z+2CTut1KFhwLtd0ZynMekKbtViM
26 changed files with 1303 additions and 993 deletions

View file

@ -0,0 +1,193 @@
---
import Footer from "../../../components/Footer.astro"
import Layout from "../../../layouts/Layout.astro"
import {File} from "@lucide/astro"
import path from "../../../utils/path.ts"
import {Picture} from "astro:assets"
import traumweh_1 from "../../../assets/media/hamburg/2026/traumweh_1.png"
const impressions = [
{
image: traumweh_1,
alt: "Ein Foto der Veranstaltung. Eine Speakerin steht auf einer Bühe. Auf einer Leinwand ist eine Präsentation zu sehen. Auf Bannern steht DIDAYS 2026 Hamburg.",
attribution: "CC-4.0 BY-SA traumweh",
},
{
image: traumweh_1,
alt: "Ein Foto der Veranstaltung. Eine Speakerin steht auf einer Bühe. Auf einer Leinwand ist eine Präsentation zu sehen. Auf Bannern steht DIDAYS 2026 Hamburg.",
attribution: "CC-4.0 BY-SA traumweh",
},
{
image: traumweh_1,
alt: "Ein Foto der Veranstaltung. Eine Speakerin steht auf einer Bühe. Auf einer Leinwand ist eine Präsentation zu sehen. Auf Bannern steht DIDAYS 2026 Hamburg.",
attribution: "CC-4.0 BY-SA traumweh",
},
{
image: traumweh_1,
alt: "Ein Foto der Veranstaltung. Eine Speakerin steht auf einer Bühe. Auf einer Leinwand ist eine Präsentation zu sehen. Auf Bannern steht DIDAYS 2026 Hamburg.",
attribution: "CC-4.0 BY-SA traumweh",
},
{
image: traumweh_1,
alt: "Ein Foto der Veranstaltung. Eine Speakerin steht auf einer Bühe. Auf einer Leinwand ist eine Präsentation zu sehen. Auf Bannern steht DIDAYS 2026 Hamburg.",
attribution: "CC-4.0 BY-SA traumweh",
},
]
const slides = [
{
name: "Vortragstitel",
path: "/hamburg/2026/slides/vortrag.pdf",
},
{
name: "Vortragstitel",
path: "/hamburg/2026/slides/vortrag.pdf",
},
{
name: "Vortragstitel",
path: "/hamburg/2026/slides/vortrag.pdf",
},
{
name: "Vortragstitel",
path: "/hamburg/2026/slides/vortrag.pdf",
},
]
---
<Layout>
<div class="flex flex-col">
<h1 class="text-6xl font-bold mt-8 mb-4 flex justify-center">
<img src={path(import.meta.env.BASE_URL, "/hamburg/2026/logo.svg")} alt="Logo von den DiDays 2026 in Hamburg"
class="h-full"/>
</h1>
<div class="mask-[url(/transitions/big.svg)] bg-base-200 h-30 mask-repeat-x mask-[auto_100%]"/>
</div>
<div class="bg-base-200 pt-8 pb-16">
<div class="container p-8 max-w-5xl mx-auto flex flex-col md:flex-row gap-10 items-center md:items-start">
<p class="text-xl/8 text-center">
[Platzhaltertext Rückblick Event]
</p>
</div>
</div>
<div class="bg-white relative">
<div
class="mask-[url(/transitions/small.svg)] bg-base-200 h-10 mask-repeat-x mask-[auto_100%] absolute top-0 w-full"/>
<Picture
formats={["avif", "webp", "jpg"]}
widths={[540, 720, traumweh_1.width]}
src={traumweh_1}
class="w-full"
alt="Ein Foto der Veranstaltung. Eine Speakerin steht auf einer Bühe. Auf einer Leinwand ist eine Präsentation zu sehen. Auf Bannern steht DIDAYS 2026 Hamburg."
/>
<span class="absolute px-3 text-xs py-1 bg-white/50 bottom-11 right-0 rounded-l text-black">
CC-4.0 BY-SA traumweh
</span>
<div
class="mask-[url(/transitions/small.svg)] bg-base-200 h-10 mask-repeat-x mask-[auto_100%] rotate-180 absolute bottom-0 w-full"/>
</div>
<div class="bg-base-200 pb-20 w-screen overflow-x-hidden">
<div class="container p-8 max-w-2xl mx-auto">
<h2 class="text-4xl font-semibold mb-8">
[Platzhaltertext Titel]
</h2>
<p>
[Platzhaltertext Inhalt]
</p>
</div>
</div>
<div class="bg-base-100 pb-20 w-screen overflow-x-hidden">
<div class="mask-[url(/transitions/small.svg)] bg-base-200 h-10 mask-repeat-x mask-[auto_100%]"/>
<div class="container p-8 max-w-2xl mx-auto">
<h2 class="text-4xl font-semibold mb-8">
[Platzhaltertext Titel]
</h2>
<p>
[Platzhaltertext Inhalt]
</p>
</div>
</div>
<div class="bg-base-200 pb-20 w-screen overflow-x-hidden">
<div class="mask-[url(/transitions/small.svg)] bg-base-100 h-10 mask-repeat-x mask-[auto_100%]"/>
<div class="container p-8 mx-auto">
<h2 class="text-4xl font-semibold my-8 mx-auto text-center">
Eindrücke vom Event
</h2>
<div class="flex gap-4 overflow-x-auto w-full justify-start py-4">
{impressions.map((impression, index) =>
<button command="show-modal" commandfor={`impression-${index}`}
class="mx-auto shrink-0 w-lg overflow-hidden shadow-lg rounded-xl relative">
<Picture
formats={["avif", "webp", "jpg"]}
widths={[540, 720, impression.image.width]}
src={impression.image}
alt={impression.alt}
layout="full-width"
/>
{impression.attribution &&
<span class="absolute px-3 text-xs py-1 bg-white/50 bottom-0 right-0 rounded-tl text-black">
{impression.attribution}
</span>}
</button>
<dialog id={`impression-${index}`}
class="mx-auto my-auto rounded-xl max-w-6xl bg-base-100 backdrop:bg-black/50"
closedby="any">
<Picture
src={impression.image}
alt={impression.alt}
/>
<div class="p-2 flex justify-between items-center">
{
impression.attribution &&
<span class="px-3 text-xs py-1">
{impression.attribution}
</span>
}
<button commandfor={`impression-${index}`} command="close" class="btn btn-base-200 ml-auto">
Schließen
</button>
</div>
</dialog>
,
)}
</div>
</div>
</div>
<div class="bg-base-100 pb-20 w-screen overflow-x-hidden">
<div class="mask-[url(/transitions/small.svg)] bg-base-200 h-10 mask-repeat-x mask-[auto_100%]"/>
<div class="container p-8 max-w-4xl mx-auto">
<h2 class="text-4xl font-semibold mb-8">
[Platzhaltertitel Vortragsfolien]
</h2>
<p>
[Platzhaltertext Inhalt]
</p>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4 w-full py-6">
{slides.map(slide =>
<a href={path(import.meta.env.BASE_URL, slide.path)}
class="card shrink-0 bg-base-100 card-md shadow-lg border-base-200 border-2">
<div class="card-body">
<h2 class="card-title">{slide.name}</h2>
<div class="justify-end card-actions">
<button class="btn btn-base-200">
<File/>
Folien Ansehen
</button>
</div>
</div>
</a>,
)}
</div>
</div>
</div>
<Footer/>
</Layout>

View file

@ -12,7 +12,7 @@ import Layout from "../../../layouts/Layout.astro"
</div>
<div class="bg-white">
<pretalx-schedule event-url="https://pretalx.hamburg.ccc.de/didays-hamburg-2026/" locale="de" format="grid"
style="--pretalx-clr-primary: #ffad12; --pretalx-sticky-top-offset: 68px;">
style="--pretalx-clr-primary: #ffad12; --pretalx-sticky-top-offset: 80px;">
</pretalx-schedule>
<noscript>
<div class="pretalx-widget">

View file

@ -7,7 +7,7 @@ import path from "../../../utils/path.ts"
const orgs = [
{
url: "https://hamburg.ccc.de",
image: "/ccchh.svg",
image: "/hamburg/2026/ccchh.svg",
alt: "Logo des Chaos Computer Club Hamburg e.V.",
name: "Chaos Computer Club Hamburg",
info: "Wir sind die lokale Gruppe des Chaos Computer Club in Hamburg: Eine Gruppe von Menschen, die ein Interesse am kreativen Umgang mit Technik teilen. Unsere Gesprächsthemen und Projekte reichen von Soft- und Hardware zu Datenschutz und Netzpolitik.",
@ -17,7 +17,7 @@ const orgs = [
const support = [
{
url: "https://www.wauland.de",
image: "/wauland.svg",
image: "/hamburg/2026/wauland.svg",
alt: "Logo der Wau-Holland-Stiftung",
name: "Wau-Holland-Stiftung",
info: "Unser Anliegen ist es, die freidenkerischen Ansätze Wau Hollands zu bewahren und weiterzuführen.",
@ -27,77 +27,77 @@ const support = [
const partners = [
{
url: "https://digitalcourage.de/treffen-vor-ort/hamburg",
image: "/digitalcourage.svg",
image: "/hamburg/2026/digitalcourage.svg",
alt: "Logo der Digitalcourage e.V. Ortsgruppe Hamburg",
name: "Digitalcourage e.V. Ortsgruppe Hamburg",
info: "Wir engagieren uns in Hamburg gegen Digitalzwang und für digitale Souveränität.",
},
{
url: "https://wiki.openstreetmap.org/w/index.php?title=Hamburg",
image: "/osm.svg",
image: "/hamburg/2026/osm.svg",
alt: "Logo der Hamburger OpenStreetMap Community",
name: "Hamburger OpenStreetMap Community",
info: "Wir sind keine feste Organisation aber eine Gruppe von Menschen, die gemeinsam in Hamburg und Umgebung Daten zum OpenStreetMap Projekt beitragen.",
},
{
url: "https://mastodon.online/@citydata",
image: "/citydataexplosion.svg",
image: "/hamburg/2026/citydataexplosion.svg",
alt: "Logo von city/data/explosion",
name: "city/data/explosion",
info: "Projekte und Veranstaltungen zu Stadt, Öffentlichkeit und Digitalisierung",
},
{
url: "https://ogrbund.de/",
image: "/ogr.svg",
image: "/hamburg/2026/ogr.svg",
alt: "Logo der OMAS GEGEN RECHTS",
name: "OMAS GEGEN RECHTS",
info: "Zivilgesellschaftliche Initiative zum Schutz der Demokratie",
},
{
url: "https://endof10hh.de/",
image: "/endof10.svg",
image: "/hamburg/2026/endof10.svg",
alt: "Logo von End of 10",
name: "End of 10 Hamburg",
info: "Wir veranstalten regelmäßig an unterschiedlichen Orten in Hamburg Linux-Workshops, wo wir Interessierte beim Umstieg von Windows zu Linux unterstützen.",
},
{
url: "https://www.vhs-hamburg.de/",
image: "/vhs.svg",
image: "/hamburg/2026/vhs.svg",
alt: "Logo der Hamburger Volkshochschule",
name: "Hamburger Volkshochschule",
info: "Hamburgs größter Weiterbildungsanbieter mit über 9000 Kursen im Jahr - darunter ein breites digitales Angebot von der Computer-Einführung bis Programmieren.",
},
{
url: "https://www.bezahlkarte-nein.de/",
image: "/bezahlkarte.png",
image: "/hamburg/2026/bezahlkarte.png",
alt: "Logo von NEIN zur Bezahlkarte",
name: "NEIN zur Bezahlkarte",
info: "",
},
{
url: "https://www.vzhh.de/",
image: "vzhh.png",
image: "/hamburg/2026/vzhh.png",
alt: "Logo der Verbraucherzentrale Hamburg",
name: "Verbraucherzentrale Hamburg",
info: "",
},
{
url: "https://annaelbe.net/",
image: "annaelbe.svg",
image: "/hamburg/2026/annaelbe.svg",
alt: "Logo von anna elbe",
name: "anna elbe",
info: "Wir sagen NEIN zum Ausverkauf von öffentlichen Räumen",
},
{
url: "https://repaircafe-eidelstedt.de/",
image: "repaircafe.svg",
image: "/hamburg/2026/repaircafe.svg",
alt: "Logo vom Repair Café Eidelstedt",
name: "Repair Café Eidelstedt",
info: "Wegwerfen? Denkste! Wir haben die Nachhaltigkeit im Blick.",
},
{
url: "https://www.instagram.com/teeplushamburg/",
image: "teeplus.png",
image: "/hamburg/2026/teeplus.png",
alt: "Logo von Tee& Hamburg",
name: "Tee& Hamburg",
info: "Ein Blick unter die Oberfläche, Tee im Dialog mit Kunst, Kultur und Philosophie. Von Mai bis September im japanischen Teehaus Planten un Blomen",
@ -109,17 +109,13 @@ const partners = [
<div class="bg-base-100">
<div class="container p-8 max-w-2xl mx-auto">
<h2 class="text-4xl text-center font-semibold">Veranstaltet von</h2>
</div>
</div>
<div class="bg-base-200 pb-20 w-screen overflow-x-hidden">
<div class="mask-[url(/transitions/small.svg)] bg-base-100 h-10 mask-repeat-x mask-[auto_100%]"/>
<div class="container p-8 mx-auto">
<h2 class="text-4xl text-center font-semibold mb-6">Veranstaltet von</h2>
<div class="grid grid-cols-1 place-content-center place-items-center">
{orgs.map(org => (
<a href={org.url} class="flex flex-col items-center text-center h-full transition-colors max-w-md hover:bg-white/20 p-4 rounded-xl">
<a href={org.url}
class="flex flex-col items-center text-center h-full transition-colors max-w-md hover:bg-white/20 p-4 rounded-xl">
<img alt={org.alt} src={path(import.meta.env.BASE_URL, org.image)}
class="max-w-60 h-40 mb-4 invert"/>
class="max-w-60 h-20 mb-4 invert"/>
<h3 class="font-bold link">{org.name}</h3>
<p>
{org.info}
@ -130,18 +126,14 @@ const partners = [
</div>
</div>
<div class="bg-base-100">
<div class="mask-[url(/transitions/small.svg)] bg-base-200 h-10 mask-repeat-x mask-[auto_100%]"/>
<div class="container p-8 max-w-2xl mx-auto">
<h2 class="text-4xl text-center font-semibold">In Zusammenarbeit mit</h2>
</div>
</div>
<div class="bg-base-200 pb-20 w-screen overflow-x-hidden">
<div class="bg-base-200">
<div class="mask-[url(/transitions/small.svg)] bg-base-100 h-10 mask-repeat-x mask-[auto_100%]"/>
<div class="container p-8 mx-auto">
<div class="container p-8 max-w-2xl mx-auto">
<h2 class="text-4xl text-center font-semibold mb-6">In Zusammenarbeit mit</h2>
<div class="grid grid-cols-1 place-content-center place-items-center">
{support.map(org => (
<a href={org.url} class="flex flex-col items-center text-center h-full transition-colors max-w-md hover:bg-white/20 p-4 rounded-xl">
<a href={org.url}
class="flex flex-col items-center text-center h-full transition-colors max-w-md hover:bg-white/20 p-4 rounded-xl">
<img alt={org.alt} src={path(import.meta.env.BASE_URL, org.image)}
class="max-w-60 h-40 mb-4 invert"/>
<h3 class="font-bold link">{org.name}</h3>

View file

@ -3,6 +3,14 @@ import Footer from "../components/Footer.astro"
import Layout from "../layouts/Layout.astro"
import {Calendar, ChevronDown} from "@lucide/astro"
import path from "../utils/path.ts"
const events = [
{
name: "DIDAYS 2026 Hamburg",
path: "/hamburg/2026/",
text: "02.-04. Oktober 2026, Kultur Palast Harburg",
},
]
---
<Layout>
@ -16,55 +24,40 @@ import path from "../utils/path.ts"
<div class="bg-base-200 pt-8 pb-16">
<div class="container p-8 max-w-5xl mx-auto flex flex-col md:flex-row gap-10 items-center md:items-start">
<div class="bg-black/20 text-white rounded-2xl min-w-fit p-4 flex flex-col items-center gap-4">
<div class="flex flex-col items-center gap-2">
<span class="text-xl leading-10 text-center font-bold">
02.-04.10.2026
</span>
<span class="text-lg leading-5 text-center">
Freitag 16-21:30 Uhr<br>
Samstag 12-21:30 Uhr<br>
Sonntag 12-17:30 Uhr<br>
</span><br>
<a class="link text-xl" href="https://www.kulturpalast-harburg.com">Kultur Palast Harburg</a><br>
<span class="text-xl">
Eintritt frei
</span>
</div>
<div class="motion-safe:aura motion-safe:aura-rainbow">
<a href={path(import.meta.env.BASE_URL, "didays2026.ics")}
class="btn btn-lg motion-reduce:btn-outline shrink-0"
target="_blank">
<Calendar/>
Im Kalender speichern
</a>
</div>
</div>
<p class="text-xl/8 text-center">
Ein Wochenende digitale Selbstbestimmung: Handy, Tablet und Laptop: längst geht ohne nichts mehr. Und die Apps
sammeln Daten und tun ihr Möglichstes, um uns nicht mehr loszulassen.
In <a class="link" href={path(import.meta.env.BASE_URL, "/hamburg/2026/programm")}>
Vorträgen und Workshops </a> erklären wir, wie man einen alternativen Messenger, ein freies Office oder eine
sichere Passwortverwaltung nutzen kann. Und wir informieren über Chancen und Gefahren der digitalen Welt. Kommt
vorbei, lernt etwas und diskutiert mit uns!
In Vorträgen und Workshops erklären wir, wie man einen alternativen Messenger, ein freies Office oder eine
sichere Passwortverwaltung nutzen kann. Und wir informieren über Chancen und Gefahren der digitalen Welt.<br>
Kommt vorbei, lernt etwas und diskutiert mit uns!
</p>
</div>
</div>
<div class="bg-base-100 pb-20 w-screen overflow-x-hidden">
<div class="mask-[url(/transitions/small.svg)] bg-base-200 h-10 mask-repeat-x mask-[auto_100%]"/>
<div class="container p-8 max-w-2xl mx-auto text-center text-xl/8">
<p>
Der <a class="link" href="https://hamburg.ccc.de">CCC Hansestadt Hamburg e.V.</a>
veranstaltet vom 2. bis 4. Oktober zusammen mit der <a class="link" href="https://www.wauland.de">Wau Holland Stiftung</a>,
Hamburger Stadtteilinitiativen,
Maker- und Hackerspaces und weiteren zivilgesellschaftlichen Organisationen aus der Region die ersten Digital
Independence Days in Hamburg.<br><br>
Euch erwartet ein Programm rund um digitale Unabhängigkeit: Messenger,
Office-Programme, Datenschutz oder die eigene Cloud.
</p>
<div class="container p-8 mx-auto text-center text-xl/8">
<h2 class="text-4xl font-semibold mb-8">
Kommende Events
</h2>
<p>Hier veröffentlichen wir, sobald weitere Events geplant sind</p>
<h2 class="text-4xl font-semibold my-8">
Vergangene Events
</h2>
<div class="flex gap-4 overflow-x-auto w-full justify-start py-6">
{events.map(event =>
<a href={path(import.meta.env.BASE_URL, event.path)}
class="card mx-auto shrink-0 w-96 bg-base-100 card-md shadow-lg border-base-200 border-2">
<div class="card-body">
<h2 class="card-title">{event.name}</h2>
<p>{event.text}</p>
<div class="justify-end card-actions">
<button class="btn btn-base-200">Ansehen</button>
</div>
</div>
</a>,
)}
</div>
</div>
</div>
@ -91,31 +84,6 @@ import path from "../utils/path.ts"
</div>
</div>
<div class="bg-base-100 pb-20">
<div class="mask-[url(/transitions/small.svg)] bg-base-200 h-10 mask-repeat-x mask-[auto_100%]"/>
<div class="container p-8 max-w-2xl mx-auto">
<h2 class="text-4xl font-semibold mb-8">
DIDAYS - Ein Wochenende digitale Selbstbestimmung
</h2>
<p>
Am Wochenende vom 2. bis 4. Oktober gibt es diese und noch mehr Themen kompakt: Vorträge, Workshops und
Austausch
zwischen Interessierten. Neben dem praktischen „Wie“ wollen wir auch über gesellschaftliche und politische
Themen
reden, wie z.B. den Einfluss von Künstlicher Intelligenz oder die Digitalisierung von Stadt und Verwaltung in
Hamburg.
Wir haben dazu den Kultur Palast Harburg (ehem. Rieckhof) als Location gewinnen können. Von Freitagnachmittag
bis
Sonntagnachmittag haben Besucher*innen die Möglichkeit, in Vorträgen und Workshops zu erfahren, wie sie sich
unabhängiger machen können. Natürlich ist der Eintritt frei.
Das Programm ist abgestimmt auf Menschen, die mehr oder minder spontan für ein paar Stunden vorbeikommen und
„mal schauen“ möchten.
</p>
</div>
</div>
<Footer/>
</Layout>