From 1cfbff22bc3b1b3251c3cf01415a3fb405b1b3de Mon Sep 17 00:00:00 2001 From: Daria Grudzien Date: Sat, 27 Jun 2026 13:37:39 -0700 Subject: [PATCH 1/6] add side events page --- src/content.config.ts | 16 ++ src/content/events/README.md | 38 ++++ src/content/events/language-summit.md | 13 ++ src/content/events/packaging-summit.md | 12 ++ src/content/events/rust-summit.md | 13 ++ src/content/events/sprints.md | 11 + src/data/nav.ts | 3 + src/pages/schedule/events.astro | 276 +++++++++++++++++++++++++ 8 files changed, 382 insertions(+) create mode 100644 src/content/events/README.md create mode 100644 src/content/events/language-summit.md create mode 100644 src/content/events/packaging-summit.md create mode 100644 src/content/events/rust-summit.md create mode 100644 src/content/events/sprints.md create mode 100644 src/pages/schedule/events.astro diff --git a/src/content.config.ts b/src/content.config.ts index 93fd268dd..a9b9f6e90 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -384,6 +384,21 @@ const jobs = defineCollection({ }), }); +const events = defineCollection({ + loader: glob({ pattern: "*.{md,mdx}", base: "./src/content/events" }), + schema: z.object({ + title: z.string(), + date: z.string(), + date_end: z.string().optional(), + time_start: z.string().optional(), + time_end: z.string().optional(), + location: z.string().optional(), + url: z.string().optional(), + description: z.string(), + draft: z.boolean().optional().default(false), + }), +}); + const sprints = defineCollection({ loader: glob({ pattern: "*.{md,mdx}", base: "./src/content/sprints" }), schema: z.object({ @@ -411,6 +426,7 @@ const sprints = defineCollection({ export const collections = { days, + events, pages, deadlines, week, diff --git a/src/content/events/README.md b/src/content/events/README.md new file mode 100644 index 000000000..a5f69d20e --- /dev/null +++ b/src/content/events/README.md @@ -0,0 +1,38 @@ +# Side Events + +Each `.md` file in this directory is one event on the `/schedule/events` page. + +## Required fields + +```yaml +title: "Event Name" +date: "2026-07-13" # ISO date — determines which day group it appears under +description: "One or two sentences shown on the card." +``` + +## Optional fields + +```yaml +date_end: "2026-07-14" # for multi-day events; shows a date range instead of a single date +time_start: "09:00" +time_end: "17:00" +location: "ICE Kraków Congress Centre, Hall B" +url: /your-page # internal path or full URL; adds a "Full details" link +draft: true # hides the event in production builds +``` + +## Example + +```yaml +--- +title: PyLadies Lunch +date: "2026-07-15" +time_start: "13:00" +time_end: "14:30" +location: "Room TBA" +url: /pyladies +description: An informal lunch for PyLadies members and allies. All welcome. +--- +``` + +Drop the file, push — done. The page re-sorts by date and time automatically. diff --git a/src/content/events/language-summit.md b/src/content/events/language-summit.md new file mode 100644 index 000000000..6ca87f817 --- /dev/null +++ b/src/content/events/language-summit.md @@ -0,0 +1,13 @@ +--- +title: Python Language Summit +date: "2026-07-14" +time_start: "09:00" +time_end: "17:00" +location: "ICE Kraków Congress Centre, room TBA" +url: /language-summit +description: + CPython and alternative implementation developers gather to share information, + discuss common problems, and solve them. Invite-only for Python core + developers. +draft: false +--- diff --git a/src/content/events/packaging-summit.md b/src/content/events/packaging-summit.md new file mode 100644 index 000000000..617985be7 --- /dev/null +++ b/src/content/events/packaging-summit.md @@ -0,0 +1,12 @@ +--- +title: Packaging Summit +date: "2026-07-13" +time_start: "09:00" +time_end: "17:00" +location: "ICE Kraków Congress Centre, room TBA" +url: /packaging-summit +description: + Maintainers of packaging tools, standards, and infrastructure discuss the + future of Python packaging. Open to all contributors. +draft: false +--- diff --git a/src/content/events/rust-summit.md b/src/content/events/rust-summit.md new file mode 100644 index 000000000..40c6d03e6 --- /dev/null +++ b/src/content/events/rust-summit.md @@ -0,0 +1,13 @@ +--- +title: Rust Summit +date: "2026-07-13" +time_start: "09:00" +time_end: "17:00" +location: "ICE Kraków Congress Centre, room TBA" +url: /rust-summit +description: + A summit for Python developers interested in Rust integrations, the PyO3 + ecosystem, and bringing Rust tooling into CPython and other Python + implementations. +draft: false +--- diff --git a/src/content/events/sprints.md b/src/content/events/sprints.md new file mode 100644 index 000000000..3ce83bb17 --- /dev/null +++ b/src/content/events/sprints.md @@ -0,0 +1,11 @@ +--- +title: Sprints Weekend +date: "2026-07-18" +date_end: "2026-07-19" +location: "Details Soon" +url: /sprints +description: + Two days of open-source contribution alongside project maintainers. Sign up + for a project or bring your own. All experience levels welcome. +draft: false +--- diff --git a/src/data/nav.ts b/src/data/nav.ts index 632252f16..22aaa42ab 100644 --- a/src/data/nav.ts +++ b/src/data/nav.ts @@ -47,6 +47,7 @@ const L = { packagingSummit: { label: "Packaging Summit", url: "/packaging-summit" }, // Events & Social + sideEvents: { label: "Side Events", url: "/schedule/events" }, sprints: { label: "Sprints Weekend", url: "/sprints" }, socialEvent: { label: "Social Event", url: "/social-event" }, beginnersDay: { label: "Beginners' Day", url: "/beginners-day" }, @@ -129,6 +130,7 @@ export const NAV_MENUS: NavMenu[] = [ label: "Talks & Schedule", items: [ L.schedule, + L.sideEvents, L.talks, L.tutorials, L.posters, @@ -257,6 +259,7 @@ export const FOOTER_COLUMNS: FooterColumn[] = [ { title: "Events", items: [ + L.sideEvents, L.sprints, L.socialEvent, L.beginnersDay, diff --git a/src/pages/schedule/events.astro b/src/pages/schedule/events.astro new file mode 100644 index 000000000..831e14edd --- /dev/null +++ b/src/pages/schedule/events.astro @@ -0,0 +1,276 @@ +--- +import { getCollection } from "astro:content"; +import Layout from "@layouts/Layout.astro"; +import Section from "@ui/Section.astro"; + +const allEvents = await getCollection("events", ({ data }) => + import.meta.env.MODE === "production" ? data.draft !== true : true +); + +// Sort by date then time_start +allEvents.sort((a, b) => { + const dateCompare = a.data.date.localeCompare(b.data.date); + if (dateCompare !== 0) return dateCompare; + const aTime = a.data.time_start ?? "00:00"; + const bTime = b.data.time_start ?? "00:00"; + return aTime.localeCompare(bTime); +}); + +// Group by date +const byDay: Map = new Map(); +for (const event of allEvents) { + const key = event.data.date; + if (!byDay.has(key)) byDay.set(key, []); + byDay.get(key)!.push(event); +} + +const formatDate = (isoDate: string) => { + const d = new Date(isoDate + "T12:00:00Z"); + return d.toLocaleDateString("en-GB", { + weekday: "long", + day: "numeric", + month: "long", + timeZone: "Europe/Warsaw", + }); +}; + +const formatTimeRange = (start?: string, end?: string, dateEnd?: string, date?: string) => { + if (dateEnd && date) { + const d1 = new Date(date + "T12:00:00Z"); + const d2 = new Date(dateEnd + "T12:00:00Z"); + const d1str = d1.toLocaleDateString("en-GB", { weekday: "short", day: "numeric", month: "short", timeZone: "Europe/Warsaw" }); + const d2str = d2.toLocaleDateString("en-GB", { weekday: "short", day: "numeric", month: "short", timeZone: "Europe/Warsaw" }); + return `${d1str} – ${d2str}`; + } + if (start && end) return `${start} – ${end}`; + if (start) return `From ${start}`; + return "All day"; +}; +--- + + +
+
+
+

Side Events

+

+ Summits, sprints, and community gatherings running alongside the main + programme. July 13–19, Kraków. +

+
+ + {Array.from(byDay.entries()).map(([date, events]) => ( +
+

{formatDate(date)}

+
+ {events.map((event) => ( +
+
+ + {formatTimeRange(event.data.time_start, event.data.time_end, event.data.date_end, event.data.date)} + + {event.data.location && ( + + + {event.data.location} + + )} +
+
+

+ {event.data.url ? ( + {event.data.title} + ) : ( + event.data.title + )} +

+

{event.data.description}

+ {event.data.url && ( + + Full details + + + )} +
+
+ ))} +
+
+ ))} +
+
+
+ + From f364637c22fdbcd0a85e83a58ccc33e0dfec2230 Mon Sep 17 00:00:00 2001 From: Daria Grudzien Date: Sat, 27 Jun 2026 13:45:16 -0700 Subject: [PATCH 2/6] change color for readability --- src/pages/schedule/events.astro | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/schedule/events.astro b/src/pages/schedule/events.astro index 831e14edd..d15f5fb2c 100644 --- a/src/pages/schedule/events.astro +++ b/src/pages/schedule/events.astro @@ -146,7 +146,7 @@ const formatTimeRange = (start?: string, end?: string, dateEnd?: string, date?: font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em; - color: var(--color-accent); + color: #350078; margin: 0 0 1.25rem; padding-bottom: 0.6rem; border-bottom: 1px solid var(--color-surface-medium); @@ -226,7 +226,7 @@ const formatTimeRange = (start?: string, end?: string, dateEnd?: string, date?: } .event-title a:hover { - color: var(--color-accent); + color: #350078; } .event-description { @@ -242,7 +242,7 @@ const formatTimeRange = (start?: string, end?: string, dateEnd?: string, date?: gap: 0.3rem; font-size: 0.85rem; font-weight: 600; - color: var(--color-accent); + color: #350078; text-decoration: none; margin-top: 0.25rem; transition: gap 0.15s ease; From e3026b15a72bfefaa4dc0148c6c9d6a90f734787 Mon Sep 17 00:00:00 2001 From: Daria Grudzien Date: Sat, 27 Jun 2026 13:48:16 -0700 Subject: [PATCH 3/6] remove readme --- src/content/events/README.md | 38 ------------------------------------ 1 file changed, 38 deletions(-) delete mode 100644 src/content/events/README.md diff --git a/src/content/events/README.md b/src/content/events/README.md deleted file mode 100644 index a5f69d20e..000000000 --- a/src/content/events/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# Side Events - -Each `.md` file in this directory is one event on the `/schedule/events` page. - -## Required fields - -```yaml -title: "Event Name" -date: "2026-07-13" # ISO date — determines which day group it appears under -description: "One or two sentences shown on the card." -``` - -## Optional fields - -```yaml -date_end: "2026-07-14" # for multi-day events; shows a date range instead of a single date -time_start: "09:00" -time_end: "17:00" -location: "ICE Kraków Congress Centre, Hall B" -url: /your-page # internal path or full URL; adds a "Full details" link -draft: true # hides the event in production builds -``` - -## Example - -```yaml ---- -title: PyLadies Lunch -date: "2026-07-15" -time_start: "13:00" -time_end: "14:30" -location: "Room TBA" -url: /pyladies -description: An informal lunch for PyLadies members and allies. All welcome. ---- -``` - -Drop the file, push — done. The page re-sorts by date and time automatically. From 3e8ad4f068817fb32ec727359e43da67ec0bd425 Mon Sep 17 00:00:00 2001 From: Daria Grudzien Date: Sat, 27 Jun 2026 13:51:18 -0700 Subject: [PATCH 4/6] Update src/content/events/language-summit.md Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> --- src/content/events/language-summit.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/content/events/language-summit.md b/src/content/events/language-summit.md index 6ca87f817..d5d778265 100644 --- a/src/content/events/language-summit.md +++ b/src/content/events/language-summit.md @@ -7,7 +7,6 @@ location: "ICE Kraków Congress Centre, room TBA" url: /language-summit description: CPython and alternative implementation developers gather to share information, - discuss common problems, and solve them. Invite-only for Python core - developers. + discuss common problems, and solve them. Invite only. draft: false --- From 6ebc4f5eac30bd7923b96431b9b2f06932bc23b3 Mon Sep 17 00:00:00 2001 From: Daria Grudzien Date: Sat, 27 Jun 2026 16:42:53 -0700 Subject: [PATCH 5/6] change highlight colors --- src/pages/schedule/events.astro | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/schedule/events.astro b/src/pages/schedule/events.astro index d15f5fb2c..d9e2ea60c 100644 --- a/src/pages/schedule/events.astro +++ b/src/pages/schedule/events.astro @@ -146,7 +146,7 @@ const formatTimeRange = (start?: string, end?: string, dateEnd?: string, date?: font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em; - color: #350078; + color: #2559e4; margin: 0 0 1.25rem; padding-bottom: 0.6rem; border-bottom: 1px solid var(--color-surface-medium); @@ -226,7 +226,7 @@ const formatTimeRange = (start?: string, end?: string, dateEnd?: string, date?: } .event-title a:hover { - color: #350078; + color: #2559e4; } .event-description { @@ -242,7 +242,7 @@ const formatTimeRange = (start?: string, end?: string, dateEnd?: string, date?: gap: 0.3rem; font-size: 0.85rem; font-weight: 600; - color: #350078; + color: #2559e4; text-decoration: none; margin-top: 0.25rem; transition: gap 0.15s ease; From 565c31290bf83564e96314415b6329735e928d3e Mon Sep 17 00:00:00 2001 From: Daria Grudzien Date: Sun, 28 Jun 2026 10:15:52 -0700 Subject: [PATCH 6/6] women in python 5k --- src/content/events/women-in-python-run.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/content/events/women-in-python-run.md diff --git a/src/content/events/women-in-python-run.md b/src/content/events/women-in-python-run.md new file mode 100644 index 000000000..2cdb75274 --- /dev/null +++ b/src/content/events/women-in-python-run.md @@ -0,0 +1,12 @@ +--- +title: "Women in Python 5K @ EuroPython 2026" +date: "2026-07-16" +time_start: "Morning" +location: "TBA (approx. 5 min walk from ICE)" +url: https://docs.google.com/forms/d/e/1FAIpQLSdLczNLEkOP2itz42KyW7kD-9TSez6H6KrMluBVdOoNE3ZgSQ/formResponse +description: + A ~5 km community run along the river before the conference day begins. + Meeting point is approximately a 5-minute walk from the conference venue. Sign + up required. +draft: false +---