Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ wheels/
.venv

tmp
site

# OpenClaw agent files
.openclaw/
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
build:
lektor build -O tmp
lektor build -O site
run:
lektor server -O tmp -p 5001
lektor server -O site -p 5001
Binary file added assets/board/DanielSzoska.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/board/kristian_rother.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 40 additions & 0 deletions assets/membership/audit.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<!doctype html><html><head><style>
body{font-family:sans-serif;background:#888;margin:0;padding:10px}
.row{display:grid;grid-template-columns:160px 1fr 1fr;gap:8px;margin-bottom:6px;align-items:center}
.cell{padding:10px;display:flex;align-items:center;justify-content:center;height:90px}
.white{background:#fff}.dark{background:#1f2937}
img{max-width:100%;max-height:80px;object-fit:contain}
.name{color:#fff;font-size:11px;font-family:monospace}
</style></head><body>
<div class=row><div class=name>10_prontologo.png</div><div class='cell white'><img src="10_prontologo.png"></div><div class='cell dark'><img src="10_prontologo.png"></div></div>
<div class=row><div class=name>12_logo-novareto.png</div><div class='cell white'><img src="12_logo-novareto.png"></div><div class='cell dark'><img src="12_logo-novareto.png"></div></div>
<div class=row><div class=name>13_werkbank.png</div><div class='cell white'><img src="13_werkbank.png"></div><div class='cell dark'><img src="13_werkbank.png"></div></div>
<div class=row><div class=name>14_tum.png</div><div class='cell white'><img src="14_tum.png"></div><div class='cell dark'><img src="14_tum.png"></div></div>
<div class=row><div class=name>16_derico_logo-02_302x100.png</div><div class='cell white'><img src="16_derico_logo-02_302x100.png"></div><div class='cell dark'><img src="16_derico_logo-02_302x100.png"></div></div>
<div class=row><div class=name>17_inquant.png</div><div class='cell white'><img src="17_inquant.png"></div><div class='cell dark'><img src="17_inquant.png"></div></div>
<div class=row><div class=name>18_logo-3.png</div><div class='cell white'><img src="18_logo-3.png"></div><div class='cell dark'><img src="18_logo-3.png"></div></div>
<div class=row><div class=name>20_lugensa.png</div><div class='cell white'><img src="20_lugensa.png"></div><div class='cell dark'><img src="20_lugensa.png"></div></div>
<div class=row><div class=name>21_ccr_logo.png</div><div class='cell white'><img src="21_ccr_logo.png"></div><div class='cell dark'><img src="21_ccr_logo.png"></div></div>
<div class=row><div class=name>26_logo-4.png</div><div class='cell white'><img src="26_logo-4.png"></div><div class='cell dark'><img src="26_logo-4.png"></div></div>
<div class=row><div class=name>27_tohatec-logo-mobile.png</div><div class='cell white'><img src="27_tohatec-logo-mobile.png"></div><div class='cell dark'><img src="27_tohatec-logo-mobile.png"></div></div>
<div class=row><div class=name>28_redO2oo KLG.png</div><div class='cell white'><img src="28_redO2oo%20KLG.png"></div><div class='cell dark'><img src="28_redO2oo%20KLG.png"></div></div>
<div class=row><div class=name>2_gocept_logo_outline_neg.png</div><div class='cell white'><img src="2_gocept_logo_outline_neg.png"></div><div class='cell dark'><img src="2_gocept_logo_outline_neg.png"></div></div>
<div class=row><div class=name>30_logo-5.png</div><div class='cell white'><img src="30_logo-5.png"></div><div class='cell dark'><img src="30_logo-5.png"></div></div>
<div class=row><div class=name>3_zetwork.png</div><div class='cell white'><img src="3_zetwork.png"></div><div class='cell dark'><img src="3_zetwork.png"></div></div>
<div class=row><div class=name>4_cropped-Logo_COMlounge.png</div><div class='cell white'><img src="4_cropped-Logo_COMlounge.png"></div><div class='cell dark'><img src="4_cropped-Logo_COMlounge.png"></div></div>
<div class=row><div class=name>5_cyberconcepts.png</div><div class='cell white'><img src="5_cyberconcepts.png"></div><div class='cell dark'><img src="5_cyberconcepts.png"></div></div>
<div class=row><div class=name>8_ityou-logo.png</div><div class='cell white'><img src="8_ityou-logo.png"></div><div class='cell dark'><img src="8_ityou-logo.png"></div></div>
<div class=row><div class=name>9_togis.png</div><div class='cell white'><img src="9_togis.png"></div><div class='cell dark'><img src="9_togis.png"></div></div>
<div class=row><div class=name>11_591e6251f13786217f2e2062_16132_LO_Haufe_Group_RGB_pos_en.svg</div><div class='cell white'><img src="11_591e6251f13786217f2e2062_16132_LO_Haufe_Group_RGB_pos_en.svg"></div><div class='cell dark'><img src="11_591e6251f13786217f2e2062_16132_LO_Haufe_Group_RGB_pos_en.svg"></div></div>
<div class=row><div class=name>15_4TW_Logo_Blau_RGB.svg</div><div class='cell white'><img src="15_4TW_Logo_Blau_RGB.svg"></div><div class='cell dark'><img src="15_4TW_Logo_Blau_RGB.svg"></div></div>
<div class=row><div class=name>19_logo_w_noborder.svg</div><div class='cell white'><img src="19_logo_w_noborder.svg"></div><div class='cell dark'><img src="19_logo_w_noborder.svg"></div></div>
<div class=row><div class=name>22_logo-white.svg</div><div class='cell white'><img src="22_logo-white.svg"></div><div class='cell dark'><img src="22_logo-white.svg"></div></div>
<div class=row><div class=name>24_c19-logo-white.svg</div><div class='cell white'><img src="24_c19-logo-white.svg"></div><div class='cell dark'><img src="24_c19-logo-white.svg"></div></div>
<div class=row><div class=name>25_bda-logo.svg</div><div class='cell white'><img src="25_bda-logo.svg"></div><div class='cell dark'><img src="25_bda-logo.svg"></div></div>
<div class=row><div class=name>31_pi-lar-logo_2020.svg</div><div class='cell white'><img src="31_pi-lar-logo_2020.svg"></div><div class='cell dark'><img src="31_pi-lar-logo_2020.svg"></div></div>
<div class=row><div class=name>32_university-applied-sciences-arts-northwestern-switzerland-fhnw-logo.svg</div><div class='cell white'><img src="32_university-applied-sciences-arts-northwestern-switzerland-fhnw-logo.svg"></div><div class='cell dark'><img src="32_university-applied-sciences-arts-northwestern-switzerland-fhnw-logo.svg"></div></div>
<div class=row><div class=name>33_perfact-logo.svg</div><div class='cell white'><img src="33_perfact-logo.svg"></div><div class='cell dark'><img src="33_perfact-logo.svg"></div></div>
<div class=row><div class=name>6_kup-logo.svg</div><div class='cell white'><img src="6_kup-logo.svg"></div><div class='cell dark'><img src="6_kup-logo.svg"></div></div>
<div class=row><div class=name>1_logo_pythonacademy.gif</div><div class='cell white'><img src="1_logo_pythonacademy.gif"></div><div class='cell dark'><img src="1_logo_pythonacademy.gif"></div></div>
<div class=row><div class=name>29_lshs_logo.jpg</div><div class='cell white'><img src="29_lshs_logo.jpg"></div><div class='cell dark'><img src="29_lshs_logo.jpg"></div></div>
</body></html>
212 changes: 207 additions & 5 deletions assets/stylesheets/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,13 @@ h4,
font-style: normal;
}

h1,
h2,
h3,
h4 {
line-height: 1.2;
}

.main-navigation a,
.dropdown--button {
font-size: 1.2em;
Expand Down Expand Up @@ -525,13 +532,31 @@ p {
color: var(--toggled-color);
}

.usp {
position: relative;
}

.usp a {
/* padding: var(--rythm-unit); */
text-decoration: none;
display: block;
color: var(--primary-color);
}

/* Stretched-link pattern: ensures the whole card is clickable in Firefox,
where nested block elements inside <a> can otherwise leave dead zones. */
.usp > a::after {
content: "";
position: absolute;
inset: 0;
z-index: 1;
}

.usp > a > * {
position: relative;
z-index: 2;
}

.usp .cta {
text-transform: uppercase;
background-color: var(--highlight-color-pale);
Expand Down Expand Up @@ -639,18 +664,195 @@ ol.content-list {
padding: calc(var(--rythm-unit)/2) 0;
}

/* Fix white-on-white logos: dark background for member logo container */
/* ===== Member logos =====
Default to a clean white card. Per-logo overrides switch in a dark
background for the handful of logos that were designed as "negative"
(white/light) artwork and would otherwise disappear on white. */
.company-member .image {
background: #2b2b2b;
border-radius: 6px;
background: #ffffff;
border: 1px solid #e6e6e6;
border-radius: 8px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
display: flex;
align-items: center;
justify-content: center;
padding: 0.5rem;
padding: 14px 18px;
min-height: 120px;
transition: box-shadow 0.25s ease, transform 0.25s ease;
}

.company-member .image img {
max-width: 100%;
max-height: 80px;
max-height: 88px;
width: auto;
height: auto;
object-fit: contain;
}

.company-member:hover .image {
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.10);
transform: translateY(-1px);
}

/* Members whose logo is designed for a dark background ("negative"/white
artwork) opt in via "dark_bg: true" in databags/membership.yaml. */
.company-member .image--dark {
background: #1f2937;
border-color: #1f2937;
}

/* Placeholder card for members without a logo: show their initial. */
.company-member .image--placeholder {
background: #f3f4f6;
border-color: #e6e6e6;
color: #9ca3af;
font-family: var(--font-headings, inherit);
font-weight: 700;
font-size: 2.4em;
letter-spacing: 0;
}

/* Tidy up the details column next to the logo. */
.company-member .details {
display: flex;
flex-direction: column;
justify-content: center;
}

.company-member .details .name {
font-weight: 700;
line-height: 1.25;
}

.company-member .details .website {
font-size: 0.85em;
opacity: 0.75;
word-break: break-all;
}

/* On wide screens give logos a bit more breathing room and equal heights. */
@media (min-width: 800px) {
.company-members {
gap: calc(var(--rythm-unit) * 1.2);
}
}

/* ===== Homepage v2 — stiftungs-/verbandsklassik ===== */

/* Hero text rhythm */
.hero h1 {
margin-bottom: calc(var(--rythm-unit) / 2);
}

.hero p {
line-height: 1.7em;
}

/* Conferences & barcamps */
.conferences-block > h2,
.grants-section > h2,
.ecosystem-section > h2,
.culture-section > h2,
.cta-section > h2,
.volunteers-accent > h2 {
margin-bottom: calc(var(--rythm-unit) / 2);
}

.conf-block {
border-top: 1px solid var(--primary-color);
padding: var(--rythm-unit) 0;
}

.conf-block:last-child {
border-bottom: 1px solid var(--primary-color);
}

.conf-block h3 {
font-size: 1.25em;
margin-bottom: calc(var(--rythm-unit) / 2);
}

.conf-block p {
line-height: 1.65em;
}

/* Volunteers accent — single editorial pull-quote block (kept by request) */
.volunteers-accent {
background-color: var(--primary-color);
color: var(--toggled-color);
padding: calc(var(--rythm-unit) * 1.5) var(--rythm-unit);
margin: var(--rythm-unit) 0;
}

.volunteers-accent h2 {
color: var(--toggled-color);
}

.volunteers-statement .big-quote {
font-family: "Montserrat", sans-serif;
font-weight: 700;
font-size: 1.25em;
line-height: 1.4;
margin-bottom: var(--rythm-unit);
color: var(--toggled-color);
}

.volunteers-statement p {
color: var(--toggled-color);
line-height: 1.7em;
}

.volunteers-accent a {
color: var(--highlight-color);
}

/* Grants / ecosystem / culture — plain prose sections, no grids */
.grants-section p,
.ecosystem-section p,
.culture-section p {
line-height: 1.7em;
}

/* CTA — single button, anchored at the end */
.cta {
display: inline-block;
padding: 0.55em 1.2em;
font-family: "Montserrat", sans-serif;
font-weight: 900;
text-decoration: none;
text-transform: uppercase;
letter-spacing: 0.04em;
font-size: 0.95em;
border: 2px solid var(--primary-color);
color: var(--primary-color) !important;
background-color: transparent;
transition: background-color 0.2s ease, color 0.2s ease;
}

.cta--primary {
background-color: var(--primary-color);
color: var(--toggled-color) !important;
border-color: var(--primary-color);
}

.cta--primary:hover {
background-color: var(--highlight-color);
border-color: var(--highlight-color);
}

.single-cta {
margin-top: var(--rythm-unit);
}

.cta-section p {
line-height: 1.7em;
}

/* Spacing between top-level sections on the homepage */
.content > section {
margin-bottom: calc(var(--rythm-unit) * 2);
}

.content > section:last-child {
margin-bottom: 0;
}
4 changes: 1 addition & 3 deletions content/blog/2021-mv/contents.lr
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@ teaser_text:
Unsere diesjährige Mitgliederversammlung findet am 13. November 2021 statt. Die Versammlung findet online statt.
Neben dem Geschäftsbericht steht auch die Wahl zum Vorstand an.
---
show_on_homepage: True
---
highlighted: True
highlighted: yes
---
body:

Expand Down
2 changes: 0 additions & 2 deletions content/blog/2022-grants-pydatasw/contents.lr
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ teaser_text:
PyData Südwest ist das lokale Meetup für Python & Data im Raum Heidelberg, Mannheim und Karlsruhe.
Das alljährlich stattfindende "Big PyData BBQ" fand dieses Jahr in Kooperation mit PyLadies statt.
---
show_on_homepage: True
---
body:

Wer coole Vorträge über Data Science, Künstliche Intelligenz, Coding oder Community mag,
Expand Down
4 changes: 1 addition & 3 deletions content/blog/2022-mv/contents.lr
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@ Der Vorstand wird den Geschäftsbericht 2021 vorstellen und einen Ausblick auf 2
Vorstands-Wahlen stehen dieses Jahr keine an, da seit 2021 der Vorstand nun auf 2 Jahr gewählt wird.
Die Rechnungsprüfer müssen neu bzw. wieder gewählt werden.
---
show_on_homepage: True
---
highlighted: True
highlighted: yes
---
body:

Expand Down
2 changes: 0 additions & 2 deletions content/blog/2023-beethoven-sprint/contents.lr
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ teaser_image: beethoven-sprint-850x532.jpg
---
teaser_text: Der Beethoven Sprint 2023 fand vom 15. bis 19. Mai in den Büros der kitconcept GmbH in Bonn statt. Dabei stand die Arbeit an Plone 6.1 im Vordergrund sowie langfristig die Aussicht auf Plone 7.
---
show_on_homepage: True
---
body:

<small class="opacity-8">Die Teilnehmer des fünften Beethoven-Sprints in Bonn (© kitconcept GmbH)</small>
Expand Down
2 changes: 1 addition & 1 deletion content/blog/2023-djangogirls-berlin/contents.lr
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ pub_date: 2023-11-01
---
teaser_text: Discover the transformative journey of Django Girls Berlin 2023, where 75 women transformed from coding novices to empowered web developers, celebrating diversity, mentorship, and the breaking of barriers in the tech world.
---
show_on_homepage: False
show_on_homepage: no
---
body:

Expand Down
4 changes: 1 addition & 3 deletions content/blog/2023-mv/contents.lr
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@ teaser_text:
Die Mitgliederversammlung des PySV fand am 26. November 2023 statt. Der Vorstand gab den Mitgliedern ein
umfangreiches Update über die Community Aktivitäten des Vereins und den Plänen für die Zukunft.
---
show_on_homepage: True
---
highlighted: True
highlighted: yes
---
body:

Expand Down
2 changes: 0 additions & 2 deletions content/blog/2023-python-pizza-hamburg/contents.lr
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ teaser_text: Held at New Work SE, Strandkai (Hamburg), the event marked a deligh
---
cta: A Delicious Blend of Tech and Community!
---
show_on_homepage: True
---
body:

#### Savouring Python in the Heart of Hamburg!
Expand Down
2 changes: 0 additions & 2 deletions content/blog/2023-pythoncamp-an-meer-und-bodden/contents.lr
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ teaser_text:

Direkt ein zweifaches Novum war das PythonCamp auf Rügen: nach Corona wieder ein BarCamp als "in person"-Veranstaltung und zudem erstmalig im Nordosten Deutschlands.
---
show_on_homepage: True
---
body:

<small class="opacity-8">Der Veranstaltungsort: Project Bay Workation (Gebäude links) in Lietzow auf Rügen (© Toni Gurski, Project Bay).</small>
Expand Down
Loading
Loading