Skip to content

Commit 0458871

Browse files
authored
Merge branch 'ep2025' into ep2025-unconference
2 parents 1ae6cdf + 964f028 commit 0458871

30 files changed

+139
-34
lines changed

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ check:
4444

4545
build:
4646
pnpm run astro build --mode $(MODE)
47+
pnpm pagefind
4748

4849
preview: RELEASES_DIR = $(VPS_PREVIEW_PATH)/$(SAFE_BRANCH)/releases
4950
preview: TARGET = $(RELEASES_DIR)/$(TIMESTAMP)

astro.config.mjs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import remarkToc from "remark-toc";
66
import rehypeSlug from "rehype-slug";
77
import rehypeAutolinkHeadings from "rehype-autolink-headings";
88
import metaTags from "astro-meta-tags";
9-
import pagefind from "astro-pagefind";
109
import deleteUnusedImages from "astro-delete-unused-images";
1110
import { execSync } from "node:child_process";
1211
import svelte from "@astrojs/svelte";
@@ -116,7 +115,6 @@ export default defineConfig({
116115
mdx(),
117116
sitemap(),
118117
metaTags(),
119-
pagefind(),
120118
deleteUnusedImages(),
121119
svelte(),
122120
compress({

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"scripts": {
66
"dev": "astro dev",
77
"start": "astro dev",
8-
"build": "astro check && astro build && pnpm pagefind --site dist",
8+
"build": "astro check && astro build && pnpm pagefind",
99
"preview": "astro preview",
1010
"astro": "astro",
1111
"format": "prettier --write --plugin=prettier-plugin-astro ."

pagefind.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
site: dist
22
glob: "**/*.{html}"
3+
root_selector: "main"

src/components/SponsorLogo.astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const logo = sponsorLogos[sponsor.id];
2828
{
2929
website ? (
3030

31-
<a href={website} aria-label={`Link to ${title}`}
31+
<a href={website} target="_blank" aria-label={`Link to ${title}`}
3232
>
3333
<Image
3434
src={logo}

src/components/schedule/session.astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ const hasFooter = true;
8080
codeId={session.code}
8181
title={session.title}
8282
/>
83-
<h2>
83+
<h2 id=`session-${session.slug}`>
8484
{session.title}
8585
</h2>
8686

src/components/sections/keynoters/keynoter.astro

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
---
22
import type { ImageMetadata } from "astro";
3-
import { getCollection } from "astro:content";
43
import { Image } from "astro:assets";
54
import Person1 from "./placeholders/person-1.astro";
65
import Person2 from "./placeholders/person-2.astro";
@@ -10,7 +9,7 @@ import Person5 from "./placeholders/person-5.astro";
109
1110
export interface Props {
1211
name: string;
13-
slug: string;
12+
url: string;
1413
tagline?: string | undefined;
1514
image?: ImageMetadata;
1615
placeholder?: boolean | undefined;
@@ -20,7 +19,7 @@ export interface Props {
2019
2120
const {
2221
name,
23-
slug,
22+
url,
2423
tagline,
2524
image,
2625
placeholder,
@@ -31,9 +30,6 @@ const placeholders = [Person1, Person2, Person3, Person4, Person5];
3130
3231
const Placeholder =
3332
placeholders[Math.floor(Math.random() * placeholders.length)];
34-
35-
const entries = await getCollection("speakers");
36-
const isSpeaker = entries.some((entry) => entry.id === slug);
3733
---
3834

3935
<li class:list={["list-none rounded-2xl overflow-clip flex group", className]}>
@@ -61,10 +57,10 @@ const isSpeaker = entries.some((entry) => entry.id === slug);
6157
<p class="text-body-inverted">More keynoters coming soon</p>
6258
) : (
6359
<>
64-
{isSpeaker ? (
60+
{url ? (
6561
<h2 class="text-[#17223A] font-bold">
6662
<a
67-
href={`/speaker/${slug}`}
63+
href={url}
6864
class="text-2xl font-bold hover:underline"
6965
>
7066
{name}

src/components/sections/keynoters/keynoters.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const placeholders = Math.max(0, 5 - keynoters.length);
1919
.map((keynoter, _index) => (
2020
<Keynoter
2121
name={keynoter.data.name}
22-
slug={keynoter.slug}
22+
url={keynoter.data.url || ""}
2323
tagline={keynoter.data.tagline}
2424
image={keynoter.data.image}
2525
placeholder={false}
@@ -36,7 +36,7 @@ const placeholders = Math.max(0, 5 - keynoters.length);
3636
.map((_, _index) => (
3737
<Keynoter
3838
name=""
39-
slug=""
39+
url=""
4040
tagline=""
4141
placeholder={true}
4242
class:list={["w-full sm:w-[calc(50%-1rem)] md:w-[calc(30%-1rem)]"]}

src/components/sponsors/sponsor-tier.astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ const { tier, top } = Astro.props;
2929
"grid ml-12 items-center justify-items-center",
3030
{
3131
"grid-cols-1 md:grid-cols-2 lg:grid-cols-3": !top,
32-
"grid-cols-1 md:grid-cols-1": top,
32+
"grid-cols-1 md:grid-cols-2": top,
3333
},
3434
]}
3535
>

src/content/config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ const keynoters = defineCollection({
3030
schema: ({ image }) =>
3131
z.object({
3232
name: z.string(),
33+
url: z.string().optional(),
3334
tagline: z.string().optional(),
3435
image: image(),
3536
order: z.number(),

src/content/keynoters/brett.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: Brett Cannon
33
image: ./brett.jpg
4-
slug: brett-cannon
4+
url: /speaker/brett-cannon
55
tagline: CPython Core Developer & the 5th most prolific PEP (co-)author
66
order: 1
77
---

src/content/keynoters/cultrepo.png

26 KB
Loading

src/content/keynoters/documentary.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
name: '"Python: the Documentary" screening and Q&A'
3-
image: ./cultrepo.svg
3+
image: ./cultrepo.png
4+
url: /session/python-the-documentary-screening-and-q-a
45
tagline: 'Keynote panel and screening of "Python: the Documentary" by CultRepo (formerly Honeypot)'
56
order: 6
67
---

src/content/keynoters/nerea.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: Nerea Luis
33
image: ./nerea.jpeg
4-
slug: nerea-luis
4+
url: /speaker/nerea-luis
55
tagline: Award-winning AI Consultant & Cofounder of Lumi Labs
66

77
order: 5

src/content/keynoters/petr.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: Petr Baudiš
33
image: ./petr.jpg
4-
slug: petr-baudis
4+
url: /speaker/petr-baudis
55
tagline: CTO & Co-founder of an AI SaaS deep tech scale-up
66
order: 5
77
---

src/content/keynoters/savannah.mdx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
---
22
name: Savannah Bailey
33
image: ./savannah.png
4-
slug: savannah-bailey
54
tagline: CPython Core Developer & JIT Maintainer
65
order: 3
76
---

src/content/keynoters/sebastian.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: Sebastián Ramírez (tiangolo)
33
image: ./sebastian.jpg
4-
slug: sebastian-ramirez
4+
url: /speaker/sebastian-ramirez
55
tagline: Creator of FastAPI, Typer, and other open source tools
66
order: 2
77
---

src/content/pages/sponsorship/sponsor.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ toc: false
2222
Join **EuroPython 2025 from 14 – 20 July** at the Prague Congress Centre (PCC) to connect, showcase your company, and shape the future of Python!
2323

2424
<YouTube id="oW8FHL4PiuI" alt="Hear from our sponsors at EuroPython 2023" />
25+
https://www.youtube.com/watch?v=oW8FHL4PiuI
2526
<figcaption>Hear from our sponsors at EuroPython 2023</figcaption>
2627

2728
Explore the benefits of sponsoring EuroPython:

src/content/pages/venue.mdx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ subtitle: EuroPython 2025 will be back in Prague!
55

66
## Main Conference Venue (Monday–Friday) – Prague Congress Centre
77
### Where
8-
[The Prague Congress Centre](https://www.praguecc.cz/en/homepage) will host EuroPython 2025 from **July 14th to July 20th** (Monday–Friday).
8+
[The Prague Congress Centre](https://www.praguecc.cz/en/homepage) will host EuroPython 2025 from **14–18 July** (Monday–Friday).
99

1010
Address: 5. května 1640/65, 140 21 Praha 4, Nusle
1111

@@ -23,13 +23,16 @@ Address: 5. května 1640/65, 140 21 Praha 4, Nusle
2323
- **Vyšehrad:** A historic castle complex with parks and beautiful views of Prague. A must-visit.
2424
- **Náplavka from Vyšehrad:** A lively riverside area with pubs and spots to relax.
2525
- **I.P. Pavlova:** One metro stop away — great for food, with plenty of restaurants and fast-food options.
26-
- **City center:** Take the metro two stops to **Muzeum** (line C), then exit onto Wenceslas Square. To explore further, transfer to the green line at **Muzeum** and go to **Staroměstská** (Old Town Square) or **Malostranská** (across the river).
26+
- **City Centre:** Take the metro two stops to **Muzeum** (line C), then exit onto Wenceslas Square. To explore further, transfer to the green line at **Muzeum** and go to **Staroměstská** (Old Town Square) or **Malostranská** (across the river).
2727

2828
---
2929

3030
## Sprints Venue – Saturday & Sunday
3131
### Where
32-
The EuroPython sprints, along with the Unconference day, Humble Data, and Django Girls, will take place at Italská Budova Building, Prague University of Economics and Business, Žižkov Campus on Saturday & Sunday **July 21st to July 22nd**.
32+
The EuroPython sprints, along with the Unconference day, Humble Data, and Django Girls, will be held at a **different venue**.
33+
Details of the location will be announced soon, so stay tuned!
34+
{/*
35+
Italská Budova Building, Prague University of Economics and Business, Žižkov Campus on Saturday & Sunday **19–20 July**.
3336
3437
Address: Vysoká škola ekonomická v Praze - Italská budova, náměstí Winstona Churchilla 1938, 130 00 Praha 3, Žižkov
3538
@@ -50,4 +53,5 @@ Refer to the [Žižkov Campus Map (PDF)](https://www.vse.cz/english/wp-content/u
5053
- **Růžová zahrada:** A quiet rose garden located inside Riegrovy Sady, a few minutes from the venue.
5154
[Entrance location](https://www.google.com/maps/@50.0817811,14.4428445,110m/data=!3m1!1e3)
5255
- **Žižkov TV Tower:** A 15-minute (uphill) walk away. Offers a panoramic view of Prague (entry is a bit pricey) and features David Černý’s iconic crawling baby sculptures.
53-
- **City center:** You can walk to the main train station, go through it, and reach Wenceslas Square. It’s about a 15-minute walk.
56+
- **City Centre:** You can walk to the main train station, go through it, and reach Wenceslas Square. It’s about a 15-minute walk.
57+
*/}
Lines changed: 19 additions & 0 deletions
Loading
948 KB
Loading
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
name: Ataccama
3+
url: https://jobs.ataccama.com/
4+
location: "Czechia"
5+
description:
6+
"Ataccama is an international software company full of data experts and
7+
enthusiasts developing Ataccama ONE—a unified Data Management platform that
8+
helps customers use the power of automated data governance and visualization
9+
to do exceptional things with their data."
10+
socials:
11+
linkedin: "https://www.linkedin.com/company/ataccama"
12+
twitter: "https://x.com/ataccama?lang=en"
13+
facebook: "https://www.facebook.com/Ataccama/"
14+
tier: Silver
15+
draft: true
16+
---
17+
18+
## About Ataccama
19+
20+
Ataccama ONE is a unified data trust platform for enterprise data leaders that
21+
combines data quality, observability, lineage, governance and master data
22+
management in ONE solution to accelerate business growth, reduce cost, and
23+
mitigate risk.
461 KB
Loading
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
name: "Microsoft"
3+
url: "https://www.microsoft.com"
4+
location: "USA"
5+
description:
6+
"Open Source enables Microsoft products and services to bring choice,
7+
technology and community to our customers. "
8+
socials:
9+
linkedin: "https://www.linkedin.com/showcase/vs-code/"
10+
twitter: "https://x.com/code"
11+
bluesky: "https://bsky.app/profile/visualstudio.com"
12+
tier: Platinum
13+
logo_padding: 10px 0px
14+
15+
draft: true
16+
---
17+
18+
## About Microsoft
19+
20+
Open Source enables Microsoft products and services to bring choice, technology
21+
and community to our customers.
Lines changed: 35 additions & 0 deletions
Loading

src/layouts/ScheduleLayout.astro

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22
import Layout from "@layouts/Layout.astro";
33
import Section from "@ui/Section.astro";
44
import Note from "@ui/Note.astro";
5+
import Headline from "@ui/Headline.astro"
6+
import { slugify } from '@utils/content';
57
68
export interface Props {
79
title?: string;
810
description: string;
11+
headline: string;
912
}
1013
11-
const { title, description } = Astro.props;
14+
const { title, description, headline } = Astro.props;
1215
---
1316
<Layout title={title || "Schedule for 2025"} description={description} >
1417
<Fragment slot="head">
@@ -17,8 +20,10 @@ const { title, description } = Astro.props;
1720
</Fragment>
1821
<Section>
1922

20-
<Note type="warning">This is an early version of the schedule and may still change. If you're planning travel around specific sessions, please keep that in mind.</Note>
21-
<Note type="info" >Mark talks as favorites by opening their details and tapping the ❤️ icon. Your selections are saved locally and will only be visible on this device.</Note>
23+
<Headline as="h1"id={slugify(headline)} title={headline} />
24+
25+
<Note type="warning">This is an early version of the schedule and may still change. If you're planning travel around specific sessions, please keep that in mind.</Note>
26+
<Note type="info" >Mark talks as favorites by opening their details and tapping the ❤️ icon. Your selections are saved locally and will only be visible on this device.</Note>
2227

2328
<div class="layout-wrapper2">
2429
<slot />

src/pages/schedule.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,13 @@ const days = await getCollection("days");
1919
2020
---
2121

22-
<Layout description="Browse all scheduled events.">
22+
<Layout description="Browse all scheduled events." headline="Schedule">
2323

2424
{
2525
days.map((day) => (
2626
<ScheduleDay day={day} />
2727
))
2828
}
29-
</Layout>
3029
<script>
3130
window.addEventListener('load', function() {
3231
function checkForAnchorAndHighlight() {
@@ -88,3 +87,4 @@ window.addEventListener('load', function() {
8887
window.addEventListener('hashchange', checkForAnchorAndHighlight);
8988
});
9089
</script>
90+
</Layout>

src/pages/schedule/day/[day].astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ if (!dayEntry) {
2222
const day: Day = dayEntry;
2323
---
2424

25-
<Layout description=`Schedule for the day: ${day.id}`>
25+
<Layout description=`Schedule for the day: ${day.id}` headline=`Schedule for the day: ${day.id}`>
2626
<ScheduleDay day={day} />
2727
</Layout>

0 commit comments

Comments
 (0)