Skip to content

Commit 76a0467

Browse files
committed
Update talks by city
1 parent 0dea9a3 commit 76a0467

2 files changed

Lines changed: 75 additions & 152 deletions

File tree

src/app/[city]/page.js

Lines changed: 56 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,58 @@ export default async function CityPage({ params }) {
104104
{/* Agenda */}
105105
<section className="container-py">
106106
<h2 className="section-title">Agenda</h2>
107-
108-
<div className="space-y-4 md:space-y-6 mt-6 md:mt-8 max-w-4xl mx-auto">
109-
{data.schedule.map((talk, index) => (
110-
<TalkCard key={talk.id} talk={talk} />
111-
))}
112-
</div>
107+
{data.length > 0 ? (
108+
<div className="space-y-4 md:space-y-6 mt-6 md:mt-8 max-w-4xl mx-auto">
109+
{data.schedule.map((talk, index) => (
110+
<TalkCard key={talk.id} talk={talk} />
111+
))}
112+
</div>
113+
) : (
114+
<div className="backdrop-blur-sm rounded-lg p-6 md:p-8 text-center">
115+
<div className="w-16 h-16 md:w-20 md:h-20 bg-py-red/30 rounded-full flex items-center justify-center mx-auto mb-4">
116+
<svg
117+
xmlns="http://www.w3.org/2000/svg"
118+
className="h-8 w-8 md:h-10 md:w-10"
119+
fill="none"
120+
viewBox="0 0 24 24"
121+
stroke="currentColor"
122+
>
123+
<path
124+
strokeLinecap="round"
125+
strokeLinejoin="round"
126+
strokeWidth={2}
127+
d="M19 11a7 7 0 01-7 7m0 0a7 7 0 01-7-7m7 7v4m0 0H8m4 0h4m-4-8a3 3 0 01-3-3V5a3 3 0 116 0v6a3 3 0 01-3 3z"
128+
/>
129+
</svg>
130+
</div>
131+
<h3 className="text-lg md:text-xl font-bold mb-2 text-py-text">
132+
No hay charlas disponibles aún
133+
</h3>
134+
<p className="text-py-text/80 mb-6">
135+
Estamos finalizando el programa. ¡Vuelve pronto para ver las
136+
charlas confirmadas!
137+
</p>
138+
<Link
139+
href="https://sessionize.com/pyday-valparaiso-2025/"
140+
target="_blank"
141+
className="btn-secondary inline-flex items-center"
142+
>
143+
<span>Proponer una charla</span>
144+
<svg
145+
xmlns="http://www.w3.org/2000/svg"
146+
className="h-5 w-5 ml-2"
147+
viewBox="0 0 20 20"
148+
fill="currentColor"
149+
>
150+
<path
151+
fillRule="evenodd"
152+
d="M10.293 5.293a1 1 0 011.414 0l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414-1.414L12.586 11H5a1 1 0 110-2h7.586l-2.293-2.293a1 1 0 010-1.414z"
153+
clipRule="evenodd"
154+
/>
155+
</svg>
156+
</Link>
157+
</div>
158+
)}
113159

114160
<div className="mt-8 md:mt-12 text-center">
115161
<Link
@@ -162,7 +208,10 @@ export default async function CityPage({ params }) {
162208
<p>PyDay {data.name} es organizado por la comunidad Python Chile.</p>
163209
<p className="mt-2">
164210
Si quieres ser patrocinador o colaborador,{" "}
165-
<Link href="/sponsors#contacto" className="underline hover:text-white">
211+
<Link
212+
href="/sponsors#contacto"
213+
className="underline hover:text-white"
214+
>
166215
contáctanos
167216
</Link>
168217
.

src/data/talks.js

Lines changed: 19 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -30,151 +30,25 @@
3030
//TODO: Simulación de datos - Estos vendrían de una base de datos o API
3131
//FIXME:Actualizar con los datos de los oradores y las charlas.
3232
const allTalks = [
33-
{
34-
id: 101,
35-
type: "charla",
36-
city: "valparaiso",
37-
title: "Keynote: El futuro de Python en América Latina",
38-
description: "Visión estratégica del crecimiento de Python en la región con casos de éxito regionales",
39-
time: "09:00 - 09:45",
40-
speaker: {
41-
name: "Roberto Gutiérrez",
42-
image: "/images/speakers/roberto-gutierrez.webp"
43-
},
44-
category: "keynote",
45-
level: "intermedio",
46-
tags: ["Python", "Comunidad", "Educación"],
47-
resources: {
48-
slides: "https://slides.com/rgutierrez/keynote-pyday"
49-
}
50-
},
51-
{
52-
id: 201,
53-
type: "taller",
54-
city: "valparaiso",
55-
title: "Django desde Cero: Construye un E-commerce",
56-
description: "Taller práctico de 3 horas para crear una tienda online completa",
57-
time: "10:00 - 13:00",
58-
duration: 180,
59-
speaker: {
60-
name: "Laura Pérez",
61-
image: "/images/speakers/laura-perez.webp"
62-
},
63-
category: "proyecto-practico",
64-
level: "introductorio",
65-
tags: ["Python", "Web", "Django"],
66-
requirements: ["Laptop con Python 3.11+", "Conocimientos básicos de Python"],
67-
resources: {
68-
repo: "https://github.com/lperez/django-ecommerce-workshop"
69-
}
70-
},
71-
{
72-
id: 301,
73-
type: "charla",
74-
city: "santiago",
75-
title: "Python en Sistemas Embebidos",
76-
description: "Implementación de Python en dispositivos IoT y sistemas de bajo consumo",
77-
time: "14:30 - 15:15",
78-
speaker: {
79-
name: "Ana González",
80-
image: "/images/speakers/ana-gonzalez.webp"
81-
},
82-
category: "tecnica",
83-
level: "avanzado",
84-
tags: ["Python", "IoT", "Hardware"],
85-
resources: {
86-
repo: "https://github.com/agonzalez/embedded-python-demo"
87-
}
88-
},
89-
{
90-
id: 401,
91-
type: "taller",
92-
city: "copiapo",
93-
title: "Análisis de Datos Mineros con Pandas",
94-
description: "Taller intensivo de procesamiento de datos de sensores mineros",
95-
time: "16:00 - 18:00",
96-
duration: 120,
97-
speaker: {
98-
name: "Felipe Rojas",
99-
image: "/images/speakers/felipe-rojas.webp"
100-
},
101-
category: "herramientas",
102-
level: "intermedio",
103-
tags: ["Python", "Data Science", "Pandas"],
104-
requirements: ["Laptop con Jupyter instalado"],
105-
resources: {
106-
dataset: "https://github.com/frojas/mining-dataset-sample"
107-
}
108-
},
109-
{
110-
id: 501,
111-
type: "charla",
112-
city: "santiago",
113-
title: "Type Hints en Python a Escala Empresarial",
114-
description: "Implementación de tipado estático en grandes codebases",
115-
time: "11:30 - 12:15",
116-
speaker: {
117-
name: "Daniel Castro",
118-
image: "/images/speakers/daniel-castro.webp"
119-
},
120-
category: "tecnica",
121-
level: "avanzado",
122-
tags: ["Python", "Best Practices", "Testing"],
123-
resources: {
124-
slides: "https://slides.com/dcastro/typehints-enterprise"
125-
}
126-
},
127-
{
128-
id: 601,
129-
type: "taller",
130-
city: "valparaiso",
131-
title: "DevOps con Python: De Cero a CI/CD",
132-
description: "Implementación de pipelines de despliegue automático",
133-
time: "15:30 - 17:30",
134-
duration: 120,
135-
speaker: {
136-
name: "Carlos Rojas",
137-
image: "/images/speakers/carlos-rojas.webp"
138-
},
139-
category: "herramientas",
140-
level: "intermedio",
141-
tags: ["Python", "DevOps", "Cloud"],
142-
requirements: ["Cuenta gratuita en AWS", "Docker Desktop instalado"]
143-
},
144-
{
145-
id: 701,
146-
type: "charla",
147-
city: "copiapo",
148-
title: "Python en la Automatización Minera",
149-
description: "Casos reales de implementación en la industria extractiva",
150-
time: "10:45 - 11:30",
151-
speaker: {
152-
name: "Carla Herrera",
153-
image: "/images/speakers/carla-herrera.webp"
154-
},
155-
category: "caso-de-exito",
156-
level: "intermedio",
157-
tags: ["Python", "Industria", "Automatización"]
158-
},
159-
{
160-
id: 801,
161-
type: "taller",
162-
city: "santiago",
163-
title: "Machine Learning para Videojuegos",
164-
description: "Implementación de IA en desarrollo de juegos con Python",
165-
time: "16:00 - 18:30",
166-
duration: 150,
167-
speaker: {
168-
name: "Jorge Méndez",
169-
image: "/images/speakers/jorge-mendez.webp"
170-
},
171-
category: "proyecto-practico",
172-
level: "avanzado",
173-
tags: ["Python", "IA", "Machine Learning"],
174-
resources: {
175-
repo: "https://github.com/jmendez/game-ai-workshop"
176-
}
177-
}
33+
// {
34+
// id: 101,
35+
// type: "charla",
36+
// city: "valparaiso",
37+
// title: "Keynote: El futuro de Python en América Latina",
38+
// description: "Visión estratégica del crecimiento de Python en la región con casos de éxito regionales",
39+
// time: "09:00 - 09:45",
40+
// speaker: {
41+
// name: "Roberto Gutiérrez",
42+
// image: "/images/speakers/roberto-gutierrez.webp"
43+
// },
44+
// category: "keynote",
45+
// level: "intermedio",
46+
// tags: ["Python", "Comunidad", "Educación"],
47+
// resources: {
48+
// slides: "https://slides.com/rgutierrez/keynote-pyday"
49+
// }
50+
// },
51+
17852
];
17953

18054
export default allTalks;

0 commit comments

Comments
 (0)