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: 0 additions & 1 deletion astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ export default defineConfig({
"/compact": "/compact-schedule",
"/program": "/#schedule",
"/organizers": "/#organizers",
"/cfp": "/#cfp",
"/venue": "/#venue",
"/coc": "/#coc",
"/terms": "/terms-of-service",
Expand Down
1 change: 1 addition & 0 deletions src/components/EventJsonLd.astro
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const schema = {
"@context": "https://schema.org",
"@type": "ConferenceEvent",
name: event.name,
startDate: event.startDate,
url: Astro.site?.href,
offers: {
"@type": "Offer",
Expand Down
74 changes: 74 additions & 0 deletions src/content/prose/cfp-details.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import { event } from "@data/event";

<div class="prose-banner">
<p class="m-0">Submissions close {event.cfp.deadlineDisplay}.</p>
<p class="m-0"><a class="text-white" href={event.cfp.url} target="_blank" rel="noopener noreferrer">Submit your talk →</a></p>
</div>

## Everyone is welcome here

This is a community-made, volunteer-led event, and we want the stage to look like the community: all levels, all backgrounds, all kinds of Python.

- Never spoken before? Good - we're actively looking for first-time speakers, and the form even asks so we can make sure there's room for you.
- Not sure you're "technical enough"? A fresh perspective is exactly what makes a talk worth watching.
- Making art, music, or games with Python instead of shipping production code? That counts too - bring it.
- Feel like an imposter? So does most of the room, including some of us organizing this.

If any of that sounds like you, that's your sign to submit.

## What we're looking for

Each talk is **10 minutes long**, with no time set aside for questions. We love practical, experience-driven sessions - the kind where you share what you actually built, broke, or learned.

## Topics

Bring whatever you're excited about. The form groups submissions into:

- Python Core, Internals & Extensions
- Web Development & APIs
- Data Science, ML & Analytics
- Cloud, DevOps & Infrastructure
- Developer Tooling, Testing & Productivity
- Community, Education & Career Growth
- Ethics, Sustainability & Social Impact
- Python for Fun: Games, Art & Creative Coding
- Other Topics

## Language

We'll run the event mainly in **English**. As a small experiment for this first edition, we're also opening a limited number of slots for talks in **Turkish** - if that's your preference, give it a shot too.

## Writing a good 10-minute proposal

Ten minutes isn't a lot of runway, so the proposals that land best are the ones built around one clear idea rather than a whole topic. A structure that works:

- **The problem.** What were you actually stuck on, curious about, or trying to fix? Start here, not with the solution - it's what makes people want to know what happens next.
- **Why it matters.** Is this something a lot of Python developers hit, or a strange corner most people never see? Either is a great hook, as long as you tell us why you cared.
- **Your take.** What did you find, build, or figure out? This is the actual content of your talk.
- **What people leave with.** One thing the audience should remember or go try tomorrow. If you can name that thing, your talk has a spine.

You don't need slides or a finished project to submit - just a clear sense of what you'd say in ten minutes.

## What you'll need

- A title (10-75 characters) and an abstract (250-3000 characters)
- Your topic and language of choice
- Co-speaker details, if any - one submission covers your whole team, no need for them to submit separately
- Whether you're okay with your talk being recorded
- Any special AV or accessibility needs

## About AI-assisted proposals

Used an LLM to help polish your abstract? Just note it in the additional info field. Fully AI-generated proposals tend to read as generic, so we'd rather see your own voice come through.

## The honest bits

This is our first edition, so we're not able to cover **travel, accommodation, or visa costs** this time around. Please keep that in mind before submitting. We're also expecting speakers to attend in person, so the form asks about that too.

## Before you submit

Please make sure you're comfortable with our <a href="/#coc">Code of Conduct</a> and <a href="/privacy-policy/">Privacy Policy</a>. Your submission is collected via Google Forms and processed via Google Drive, hosted outside Turkey.

## Questions?

Write to us at <a href={`mailto:${event.contactEmail}?subject=%5BCFP%5D`}>{event.contactEmail}</a> - we can't wait to hear what you're bringing.
6 changes: 5 additions & 1 deletion src/content/prose/cfp.mdx
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
The Call for Proposals isn't open yet. Stay tuned - we'll share how and when to submit a talk here.
import { event } from "@data/event";

The CFP is open! Got a Python project, story, or hard-won lesson to share? We want to hear it - all experience levels welcome, first-time speakers especially.

Talks are 10 minutes, mostly in English, with a few Turkish slots for this first edition. Submissions close **{event.cfp.deadlineDisplay}**.
22 changes: 14 additions & 8 deletions src/data/event.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
const ticketsUrl = "#";

// Single source of truth for this edition's facts.
// Update this file (and the other ones in this directory)
// to stand up a new edition.

const cfpUrl = "https://forms.gle/41Zpwh2N2uS4P1RB8";

export const event = {
name: "Python Pizza Istanbul",
city: "Istanbul",
description: "Python Pizza Istanbul - date and venue to be announced",
subHeading: "Venue to be announced",
whenDisplay: "November 2026",
description:
"Python Pizza Istanbul - a one-day Python micro-conference on Saturday, 14 November 2026",
subHeading: "Venue announcement coming soon 👀",
whenDisplay: "Saturday, 14 November 2026",
startDate: "2026-11-14",
contactEmail: "organizers@pythonturkiye.org",
ticketSeller: "TBA",
ticketsUrl,
ticketsUrl: "#",
cfp: {
url: cfpUrl,
deadlineDisplay: "Tuesday, 25 August 2026, 23:59 AoE",
},
// whatever is most important right now
cta: { label: "Help us find a venue! 📍", href: "/help-us/" },
cta: { label: "Submit a talk! 🎤", href: cfpUrl },
};
2 changes: 1 addition & 1 deletion src/data/navigation.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
export const menuItems = [
{ href: "/#about", label: "About 🍕" },
{ href: "/#cfp", label: "CFP 🙋🏻‍♀️" },
{ href: "/#sponsors", label: "Sponsors 💛" },
// { href: "/#schedule", label: "Program 📅" },
// { href: "/compact-agenda/", label: "Compact agenda 🔗" },
{ href: "/#organizers", label: "Organizers 👩🏻" },
{ href: "/#cfp", label: "CFP 🙋🏻‍♀️" },
// { href: "/#venue", label: "Venue 🏰" },
{ href: "/#coc", label: "CoC 💂" },
];
26 changes: 26 additions & 0 deletions src/pages/cfp.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
import Base from "@layouts/Base.astro";
import Header from "@components/Header.astro";
import Footer from "@components/Footer.astro";
import Prose from "@components/Prose.astro";
import CtaButton from "@components/CtaButton.astro";
import { event } from "@data/event";
import Content from "@prose/cfp-details.mdx";
---

<Base
title={`Call for Proposals | ${event.name}`}
description={`Submit a talk for ${event.name}, ${event.whenDisplay}. All experience levels welcome.`}
>
<Header />
<main class="section-sm text-left pt-32">
<h1 class="section-heading">Call for Proposals</h1>
<Prose class="[&_p]:mb-4 [&_h2]:mt-10 [&_strong]:font-medium">
<Content />
</Prose>
<div class="text-center mt-8">
<CtaButton href={event.cfp.url}>Submit your talk</CtaButton>
</div>
</main>
<Footer />
</Base>
22 changes: 0 additions & 22 deletions src/pages/help-us.astro

This file was deleted.

7 changes: 4 additions & 3 deletions src/pages/index.astro
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,13 @@ const twitter = socials.find((s) => s.handle);
<Section id="about" title={`Python Pizza is Coming to ${event.city}!`}>
<Prose><AboutContent /></Prose>
</Section>
<Section id="cfp" title="Call for Proposals is Open! 🎤">
<Prose><CfpContent /></Prose>
<CtaButton href="/cfp/" class="mt-8">Read the full CFP →</CtaButton>
</Section>
<Sponsors />
{/* <Schedule /> */}
<Organizers />
<Section id="cfp" title="Call for Proposals - opening soon">
<Prose><CfpContent /></Prose>
</Section>
{/* <Venue /> */}
<Section id="coc" title="Code of Conduct">
<Prose class="text-left [&_ul]:list-none [&_ul]:pl-0"><CocContent /></Prose>
Expand Down