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
55 changes: 33 additions & 22 deletions pwa/app/(con)/[locale]/con/2026/components/HomePage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,25 @@ import SpeakerList from "components/con/speakers/SpeakerList";
import SectionTitle from "components/con/common/typography/SectionTitle";
import SectionSubTitle from "components/con/common/typography/SectionSubtitle";
import Venue from "components/con/home/Venue";
import Image from "next/image";
import Wave from "components/con/common/Wave";
import Partners from "components/con/home/Partners";
import LookingSponsorCard from "components/con/home/LookingSponsorCard";
import { Partner, Speaker } from "types/con";
import { useContext } from "react";
import { LanguageContext } from "contexts/con/LanguageContext";
import Section from "components/con/home/Section";
import PictureGallery from "components/con/common/PictureGallery";
import AfterMovie from "../../2025/components/AfterMovie";
import BuyButton from "components/con/common/BuyButton";
import { currentEdition } from "data/con/editions";
import prices from "data/con/2026/prices";
import PricingCard from "components/con/home/Pricing/PricingCard";
import LogoTilleuls from "components/con/common/LogoTilleuls";

type HomePageProps = {
speakers: Speaker[];
partners: Partner[];
images: string[];
};

const HomePage = ({ speakers, partners, images }: HomePageProps) => {
const HomePage = ({ speakers, partners }: HomePageProps) => {
const { t, Translate, locale } = useContext(LanguageContext);
return (
<>
Expand All @@ -45,7 +42,18 @@ const HomePage = ({ speakers, partners, images }: HomePageProps) => {
<p className="flex-1 text-lg md:text-xl font-extrabold pb-6 lg:text-3xl md:text-left">
{t("2026.baseline")}
</p>
<div className="flex gap-2">
<div className="flex gap-2 flex-col">
<div className="flex items-center justify-center flex-row gap-2 mb-2">
<span className="text-sm whitespace-nowrap">{t("an_event_by_short")}</span>
<a
className="text-center w-52 -mr-16"
href={`https://les-tilleuls.coop/${locale}`}
target="_blank"
rel="noreferrer noopener"
>
<LogoTilleuls secondColor="#fff" width="60%" />
</a>
</div>
{currentEdition === "2026" && (
<BuyButton className="mr-2" id="cover">
{t("buy_tickets")}
Expand Down Expand Up @@ -129,22 +137,25 @@ const HomePage = ({ speakers, partners, images }: HomePageProps) => {
),
})}
/>
<Section section="sponsorship" className="py-8">
<div className="container text-center">
<SectionTitle dark>
<Translate translationKey="sponsorship.title" />
</SectionTitle>
<LookingSponsorCard />
</div>
<div className="bg-white text-center relative z-10 pt-40 pb-40">
<div className="container text-center">
<div className="lined-center lined-blue font-bold uppercase text-2xl text-blue font-title">
{t("sponsorship.they_trust_us", { year: "2025" })}
</div>
<Partners data={partners} edition="2025" />
</div>
</div>
</Section>
<Section section="sponsorship" className="py-8">
<div className="container text-center">
<SectionTitle dark>
<Translate translationKey="sponsorship.title" />
</SectionTitle>
<LookingSponsorCard />
</div>
<div
id="partners"
className="bg-white text-center relative z-10 pt-40 pb-40"
>
<div className="container text-center">
<div className="lined-center lined-blue font-bold uppercase text-2xl text-blue font-title">
<Translate translationKey="partners.title" />
</div>
<Partners data={partners} edition="2026" />
</div>
</div>
</Section>
</>
);
};
Expand Down
6 changes: 2 additions & 4 deletions pwa/app/(con)/[locale]/con/2026/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { getAllSpeakers } from "api/con/speakers";
import { getAllEditionPictures } from "api/con/editions";
import partners from "data/con/2025/partners";
import partners from "data/con/2026/partners";
import HomePage from "./components/HomePage";
import { Locale, i18n } from "i18n/i18n-config";
import { Metadata } from "next";
Expand Down Expand Up @@ -28,7 +27,6 @@ export async function generateMetadata({ params }: Props): Promise<Metadata> {

export default async function Page({ params }: { params: { locale: Locale } }) {
const speakers = await getAllSpeakers("2026", params.locale);
const images = (await getAllEditionPictures("2025")).slice(0, 6);

return <HomePage speakers={speakers} partners={partners} images={images} />;
return <HomePage speakers={speakers} partners={partners} />;
}
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ export default function SpeakerPageListTemplate({
/>
</div>
</div>
<div className="flex flex-col gap-2 flex-1">
<div className="flex flex-col gap-2 flex-1 items-center md:items-start">
<div className="flex flex-row gap-1">
{conference.tag
? conference.tag.split(",").map((t) => <TagLabel key={t} small tag={t} />)
Expand Down
25 changes: 13 additions & 12 deletions pwa/components/con/common/LogoTilleuls.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@ import React from "react";

interface LogoProps {
width: string;
secondColor?: string;
}

export default function Logo({ width }: LogoProps) {
export default function Logo({ width, secondColor = "#ee4322" }: LogoProps) {
return (
<svg
xmlns="http://www.w3.org/2000/svg"
Expand All @@ -25,15 +26,15 @@ export default function Logo({ width }: LogoProps) {
/>
<path
d="M1054.11,136.58a33.66,33.66,0,0,1-13.62-13.07,38.72,38.72,0,0,1-5-19.86,38.34,38.34,0,0,1,5-19.79,33.94,33.94,0,0,1,13.74-13.14,44.17,44.17,0,0,1,39.13,0,33.9,33.9,0,0,1,13.75,13.14,38.33,38.33,0,0,1,5,19.79,38,38,0,0,1-5.09,19.8,34.27,34.27,0,0,1-13.88,13.13,41.86,41.86,0,0,1-19.63,4.57A41.06,41.06,0,0,1,1054.11,136.58Zm30.53-19.47q4.56-4.69,4.56-13.46t-4.43-13.46a15.14,15.14,0,0,0-21.87-.06q-4.37,4.64-4.37,13.52t4.3,13.46a13.94,13.94,0,0,0,10.77,4.7A14.79,14.79,0,0,0,1084.64,117.11Z"
fill="#ee4322"
fill={secondColor}
/>
<path
d="M969.11,136.58a33.66,33.66,0,0,1-13.62-13.07,38.72,38.72,0,0,1-5-19.86,38.34,38.34,0,0,1,5-19.79A33.94,33.94,0,0,1,969.3,70.72a44.17,44.17,0,0,1,39.13,0,33.9,33.9,0,0,1,13.75,13.14,38.33,38.33,0,0,1,5,19.79,38,38,0,0,1-5.09,19.8,34.27,34.27,0,0,1-13.88,13.13,41.86,41.86,0,0,1-19.63,4.57A41.06,41.06,0,0,1,969.11,136.58Zm30.53-19.47q4.56-4.69,4.56-13.46t-4.43-13.46a15.14,15.14,0,0,0-21.87-.06q-4.36,4.64-4.37,13.52t4.3,13.46a13.94,13.94,0,0,0,10.77,4.7A14.79,14.79,0,0,0,999.64,117.11Z"
fill="#ee4322"
fill={secondColor}
/>
<path
d="M945.13,129.56A46.79,46.79,0,0,1,940.36,118a14.7,14.7,0,0,1-10.09,3.8,13.94,13.94,0,0,1-10.77-4.7q-4.31-4.69-4.3-13.46t4.36-13.52a15.17,15.17,0,0,1,20.87-.92,47,47,0,0,1,4.78-11.43,47.81,47.81,0,0,1,5-7,.57.57,0,0,1-.13-.08,44.17,44.17,0,0,0-39.13,0,33.88,33.88,0,0,0-13.74,13.14,38.24,38.24,0,0,0-5,19.79,38.62,38.62,0,0,0,5,19.86,33.64,33.64,0,0,0,13.61,13.07,41.08,41.08,0,0,0,19.5,4.57,41.89,41.89,0,0,0,19.63-4.57l.17-.1A47.31,47.31,0,0,1,945.13,129.56Z"
fill="#ee4322"
fill={secondColor}
/>
<path
fill="currentcolor"
Expand Down Expand Up @@ -69,39 +70,39 @@ export default function Logo({ width }: LogoProps) {
/>
<path
d="M507.2,72.82q0,5.7-3.57,8.68a12.48,12.48,0,0,1-16.19,0q-3.57-3-3.57-8.68t3.57-8.69a12.48,12.48,0,0,1,16.19,0Q507.2,67.12,507.2,72.82Z"
fill="#ee4322"
fill={secondColor}
/>
<path
d="M887.2,129.48q0,5.72-3.57,8.69a12.48,12.48,0,0,1-16.19,0q-3.57-3-3.57-8.69t3.57-8.68a12.48,12.48,0,0,1,16.19,0Q887.2,123.77,887.2,129.48Z"
fill="#ee4322"
fill={secondColor}
/>
<path
d="M1192.18,83.86a33.9,33.9,0,0,0-13.75-13.14,44.17,44.17,0,0,0-39.13,0,33.94,33.94,0,0,0-13.74,13.14,38,38,0,0,0-5,19h0v66.66h20v-32.2a44.29,44.29,0,0,0,37.7-.7,34.27,34.27,0,0,0,13.88-13.13,38,38,0,0,0,5.09-19.8A38.33,38.33,0,0,0,1192.18,83.86Zm-22.54,33.25a14.79,14.79,0,0,1-11,4.7,13.94,13.94,0,0,1-10.77-4.7q-4.29-4.69-4.3-13.46t4.37-13.52a15.14,15.14,0,0,1,21.87.06q4.43,4.71,4.43,13.46T1169.64,117.11Z"
fill="#ee4322"
fill={secondColor}
/>
<path
fill="currentcolor"
d="M307.26,136.87a28,28,0,0,1-4.33,1.62,53.57,53.57,0,0,1-6,1.42q-3.32.61-7.1,1a71.44,71.44,0,0,1-7.58.41,44.69,44.69,0,0,1-16.71-2.85,32.46,32.46,0,0,1-11.78-7.78,30.89,30.89,0,0,1-6.9-11.7,46.32,46.32,0,0,1-2.23-14.62,43.48,43.48,0,0,1,2.91-16.57A35.64,35.64,0,0,1,255.16,76a31.71,31.71,0,0,1,10.9-7.17,34,34,0,0,1,12.65-2.44q15.15,0,24,9.27t8.79,27.27c0,1.17,0,2.46-.13,3.85s-.18,2.64-.27,3.72H265.31a13.38,13.38,0,0,0,5.82,9.88q5.14,3.66,13.8,3.66a58.1,58.1,0,0,0,10.9-1c1.11-.21,2.16-.44,3.15-.68ZM292,96.48a20.56,20.56,0,0,0-.88-5A12.17,12.17,0,0,0,284.87,84,12.85,12.85,0,0,0,279,82.82,13.49,13.49,0,0,0,273.16,84a12,12,0,0,0-4.06,3,13.62,13.62,0,0,0-2.5,4.4,28.57,28.57,0,0,0-1.29,5.07Z"
/>
<path
d="M84.52,75.41A29.6,29.6,0,0,1,56.34,51.8a14.7,14.7,0,0,1-2.67-1.06A12.22,12.22,0,0,1,48.78,46,13.93,13.93,0,0,1,47,38.89a13.88,13.88,0,0,1,1.81-7.12,12.22,12.22,0,0,1,5-4.72,15.91,15.91,0,0,1,14.07,0,12.2,12.2,0,0,1,4.94,4.72,13.78,13.78,0,0,1,1.81,7.12A13.65,13.65,0,0,1,72.74,46a12.28,12.28,0,0,1-5,4.73,14.93,14.93,0,0,1-3.07,1.16A21.53,21.53,0,0,0,84.52,67.34V36.49c-.35-.15-.71-.31-1-.49a12.11,12.11,0,0,1-4.9-4.7,14,14,0,0,1-1.78-7.14A13.73,13.73,0,0,1,78.6,17a12.16,12.16,0,0,1,4.94-4.73,15.91,15.91,0,0,1,14.07,0,12.18,12.18,0,0,1,5,4.73,13.83,13.83,0,0,1,1.81,7.12,13.7,13.7,0,0,1-1.83,7.12,12.35,12.35,0,0,1-5,4.72c-.29.15-.6.3-.91.43v45a31,31,0,0,0,19.24-23.68,13.72,13.72,0,0,1-2.31-1,12,12,0,0,1-4.89-4.7A13.89,13.89,0,0,1,106.88,45a13.73,13.73,0,0,1,1.81-7.12,12.13,12.13,0,0,1,4.94-4.72,15.84,15.84,0,0,1,14.08,0,12.13,12.13,0,0,1,4.94,4.72A13.73,13.73,0,0,1,134.46,45a13.67,13.67,0,0,1-1.83,7.12,12.32,12.32,0,0,1-5,4.72A14,14,0,0,1,124,58.08,39.15,39.15,0,0,1,96.63,90v11.74A55.14,55.14,0,0,0,140,71.26V33.7A33.69,33.69,0,0,0,106.26,0H62.06a55,55,0,0,0,10.5,99v13.52A67.87,67.87,0,0,1,41.63,0H33.7A33.7,33.7,0,0,0,0,33.7v72.56A33.69,33.69,0,0,0,33.7,140H84.52Z"
fill="#ee4322"
fill={secondColor}
/>
<path
d="M126.19,45a6.81,6.81,0,0,0-1.6-4.84,5.46,5.46,0,0,0-7.87,0A6.9,6.9,0,0,0,115.16,45a6.93,6.93,0,0,0,1.54,4.84,5,5,0,0,0,3.88,1.69,5.33,5.33,0,0,0,4-1.69A6.69,6.69,0,0,0,126.19,45Z"
fill="#ee4322"
fill={secondColor}
/>
<path
d="M96.63,114.69V140h9.63A33.69,33.69,0,0,0,140,106.26V93.61A67.78,67.78,0,0,1,96.63,114.69Z"
fill="#ee4322"
fill={secondColor}
/>
<path
d="M60.78,32.36A5.18,5.18,0,0,0,56.84,34a6.81,6.81,0,0,0-1.57,4.86,6.91,6.91,0,0,0,1.54,4.84,5,5,0,0,0,3.88,1.7,5.34,5.34,0,0,0,4-1.7,6.67,6.67,0,0,0,1.64-4.84,6.8,6.8,0,0,0-1.59-4.84A5.18,5.18,0,0,0,60.78,32.36Z"
fill="#ee4322"
fill={secondColor}
/>
<path
d="M90.58,17.62a5.2,5.2,0,0,0-4,1.67,6.89,6.89,0,0,0-1.57,4.87A6.93,6.93,0,0,0,86.61,29a5,5,0,0,0,3.87,1.69,5.3,5.3,0,0,0,4-1.69,6.65,6.65,0,0,0,1.64-4.84,6.83,6.83,0,0,0-1.59-4.85A5.2,5.2,0,0,0,90.58,17.62Z"
fill="#ee4322"
fill={secondColor}
/>
</g>
</svg>
Expand Down
2 changes: 1 addition & 1 deletion pwa/components/con/layout/Footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ export default function Footer({
<hr className="border-1 border-blue w-full" />

<span className="text-sm font-light text-center my-5">
Copyright © 2024{" "}
Copyright © {new Date().getFullYear()}{" "}
<a
href={`https://les-tilleuls.coop/${locale}`}
target="_blank"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ short: Comment API Platform occupe une place centrale dans la nouvelle architect
tag: archi
---

# API Platform, opendata et schemaless API (🇫🇷)
# API Platform, opendata et schemaless API 🇫🇷

Dans ce talk vous apprendrez ce que les élections françaises, les résultats du bac ou encore les ventes de médicaments ont en commun.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ short: Créer un projet full-stack avec Svelte et Symfony
tag: feedback
---

# API Platform, Svelte et un max de buzz-words (🇫🇷)
# API Platform, Svelte et un max de buzz-words 🇫🇷

Aujourd'hui, les stacks de développement web sont devenues de plus en plus complexes. Nous allons donc voir pas-à-pas, pendant quarante minutes, comment **créer un projet full-stack** avec Svelte, OpenAPI, API Platform, Symfony, et un peu de DDD.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ short: We can save the web with decentralization
tag: good-practices
---

# The bright and exciting future of the decentralized web (🇺🇸)
# The bright and exciting future of the decentralized web 🇺🇸

Reader, be aware: **this is not a blockchain talk**! The web we knew and loved has become a massive machine led by a small number of tech giants, controlling your data, hogging money, and burning the planet. Tech thought leaders and pioneers recognize the state of the current web for what it is: unsustainable.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ short: La clé d'une mise en cache réussie pour vos API REST
tag: performance
---

# Cache HTTP pour les API REST (🇫🇷)
# Cache HTTP pour les API REST 🇫🇷

L'utilisation d'un reverse proxy de mise en cache permet de “scaler” vos API tout en améliorant leur temps de réponse. La clé d'une mise en cache réussie est de faire en sorte que votre API REST utilise correctement HTTP et emploie les bonnes instructions de cache.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ short: Feedbacks about migrating legacy code
tag: feedback
---

# Converting a legacy app to API Platform (🇺🇸)
# Converting a legacy app to API Platform 🇺🇸

In this session, we are going to share our experiences and learnings migrating the backend part of a legacy Single Page Application to Symfony and API Platform. We'll share the why and how of this journey and highlight how we turned the resulting application into an installable executable for easier distribution.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ short: Let's explore a new feature of API Platform
tag: good-practices
---

# Create the DTO System of your Dreams: stateOptions + entityClass (🇺🇸)
# Create the DTO System of your Dreams: stateOptions + entityClass 🇺🇸

One of the best features of API Platform is the ability to add #[ApiResource] above an entity and... bam! You have a fully-functional API! Though, if you want to have full control and peak clarity, nothing beats creating a dedicated DTO class.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ short: Discover the time-saving benefits of API Platform for your web projects
tag: good-practices
---

# Developing an API without API Platform (🇺🇸)
# Developing an API without API Platform 🇺🇸

Sure, API Platform is great, but have you ever tried developing an API without it? In this conference, I will show you how you can start from a Symfony application and, with a few dozen lines, mimic the top features of API Platform. I will show you how to start with a simple solution for your API needings.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ short: Get practical knowledge and insights to build cutting-edge Symfony apps
tag: good-practices
---

# Developing APIs with Symfony in 2023 (🇺🇸)
# Developing APIs with Symfony in 2023 🇺🇸

In this talk, we will delve into **the current state of Symfony development in 2023**, exploring the latest features, tools, and best practices that have come to define the landscape of this robust PHP framework. We will take a deep dive into the innovative strategies for building scalable, secure, and highly performant APIs, with a focus on leveraging Symfony's latest updates and enhancements.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ short: Comment implémenter une gestion de webhooks respectueuse des standards d
tag: archi
---

# Gestion de webhooks standardisés avec API Platform, OpenAPI et Symfony Webhook (🇫🇷)
# Gestion de webhooks standardisés avec API Platform, OpenAPI et Symfony Webhook 🇫🇷

Les webhooks offrent une approche simple, flexible et élégante de répondre à un enjeu métier commun à bon nombre d'entreprises : celui d’informer un tiers qu'un événement s'est produit en lui transmettant les informations qui en découlent, de sorte à ce qu'il puisse en tirer parti de manière automatisée et sans avoir besoin de venir les chercher par lui-même.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ short: Comment le framework API Platform sert de socle pour de nombreux projets
tag: archi
---

# L'impact d'API Platform sur l'Open Source (🇫🇷)
# L'impact d'API Platform sur l'Open Source 🇫🇷

Avec sa version 3, API Platform est encore plus souple et toujours aussi facile d’utilisation pour vos API. Vitesse, respect des standards, documentation automatique, pourquoi s’en passer ? À travers cette conférence, nous verrons quelques cas d'usage de ce framework :

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ short: Comment les coopératives luttent contre les inégalités
tag: society
---

# Le modèle coopératif, un puissant outil de lutte pour l’égalité en entreprise (🇫🇷)
# Le modèle coopératif, un puissant outil de lutte pour l’égalité en entreprise 🇫🇷

Parler d’égalité et de mixité au travail c’est bien, mais **agir concrètement est plus que nécessaire**. La parité dans les équipes tech suffit-elle vraiment à effacer les inégalités ? La formation des managers sur le sujet permet-elle réellement de donner une vraie place aux femmes dans les équipes ? Est-il normal de brandir sa politique de non-discrimination comme un argument marketing alors qu’il s’agit simplement d’appliquer le cadre légal ?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ short: Let's identify and address typical pitfalls in API projects to improve re
tag: performance
---

# Need for Speed: Removing speed bumps in API Projects (🇺🇸)
# Need for Speed: Removing speed bumps in API Projects 🇺🇸

No one wants their app to be slow! Yet, we all may end up with not optimal solutions that may slow down responses of API Platform-based applications. During this speech, together, we will discover **typical pitfalls and how to spot them** and address them.

Expand Down
2 changes: 1 addition & 1 deletion pwa/data/con/2023/conferences/opening-keynote.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ end: '09:50'
short: Let’s start the API Platform Conference 2023!
---

# Opening keynote (🇺🇸)
# Opening keynote 🇺🇸


The API Platform community is constantly working to improve the framework's performance, developer experience, and ease of deployment in production.
Expand Down
2 changes: 1 addition & 1 deletion pwa/data/con/2023/conferences/php-kitchen-nightmares.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ short: Several lessons about “keeping our kitchen clean".
tag: good-practices
---

# PHP’s Kitchen Nightmares (🇺🇸)
# PHP’s Kitchen Nightmares 🇺🇸

Remember the Kitchen Nightmares TV show? Chef Ramsay visiting restaurants that are struggling, and telling them how to improve, but in the process you see all the bad things happening?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ short: Partez à la découverte du Fediverse !
tag: archi
---

# Rejoignez le Fediverse avec API Platform ! (🇫🇷)
# Rejoignez le Fediverse avec API Platform ! 🇫🇷

En 2022, Elon Musk rachète Twitter. S'ensuit une série de décisions désastreuses amenant de nombreux internautes à se réfugier sur Mastodon, un réseau social qui revendique ne pas être à vendre, et qui a la particularité d'être décentralisé : le logiciel, publié sous licence libre, est installé sur des serveurs administrés par des volontaires, capables de communiquer entre eux grâce à un protocole nommé ActivityPub.

Expand Down
Loading
Loading