diff --git a/docs/blog/.pages b/docs/blog/.pages
new file mode 100644
index 0000000..d3fdf61
--- /dev/null
+++ b/docs/blog/.pages
@@ -0,0 +1,4 @@
+title: Blog
+nav:
+ - index.md
+ - PyconLatam2025.md
diff --git a/docs/blog/PyconLatam2025.md b/docs/blog/PyconLatam2025.md
new file mode 100644
index 0000000..5872248
--- /dev/null
+++ b/docs/blog/PyconLatam2025.md
@@ -0,0 +1,207 @@
+---
+title: "Crónica de un fuego llamado PyCon Latam 2025"
+---
+
+**![][image1]**
+
+Existen momentos que marcan un antes y un después, instantes en que la vida misma se convierte en un relato que pide ser contado. **PyCon Latam 2025** fue uno de ellos. Entre el 21 y el 24 de agosto, la brújula nos llevó a **Puntarenas, Costa Rica**, un lugar donde el mar Pacífico acaricia la arena como un viejo amigo, y donde la hospitalidad se respira en cada gesto, en cada sonrisa, en cada sorbo de café que sabe a raíces y a hogar.
+
+Por primera vez, la conferencia cruzó las fronteras mexicanas para instalarse en la tierra del *pura vida*, con sus bosques vigilados por perezosos y su espíritu sereno que invita a vivir más despacio, más profundo, más humano.
+
+La **sede del Pacífico de la Universidad de Costa Rica (UCR)** fue el corazón que latió durante esos días. Allí, bajo el liderazgo generoso de *Roland Pérez* y *Luis Zárate*, convergieron voces de toda América Latina: profesionales, estudiantes, entusiastas y soñadores que viajaron con un mismo deseo —compartir lo aprendido, descubrir lo nuevo y estrechar lazos que trascienden la tecnología. Lo que allí ocurrió fue más que un congreso: fue una fiesta del conocimiento, un carnaval de ideas y amistades que quedarán grabadas en la memoria de todos los presentes.
+
+Y como un faro que nunca se apaga, la comunidad de **Python CDMX** se levantó una vez más. Con la pasión que la caracteriza, se hizo presente entre el sol, las olas y la calidez de Costa Rica, llevando consigo esa chispa encendida que transforma las reuniones en hogueras de inspiración, donde cada palabra y cada encuentro se convierten en combustible para seguir soñando y creando.
+
+## **Canciones bajo las estrellas**
+
+Desde el jueves, cuando aún todo era bienvenida, se sintió la magia. Una cena compartida, el tintinear de los vasos alzados, las primeras risas que tejieron complicidad entre desconocidos. Y luego, como si el universo quisiera acompañarnos, vinieron las canciones: un coro espontáneo, voces que en la penumbra se unieron para hacer de la música el lenguaje universal de quienes saben que un encuentro no empieza con charlas, sino con el gozo de estar juntos.
+
+## **Brújulas, nubes y futuro**
+
+El viernes amaneció con un aire solemne. El vicerrector de la Universidad de Costa Rica pronunció un discurso humano y cálido, recordándonos que el conocimiento es un acto de generosidad.
+
+Entonces subió al escenario **Hugo Ramírez**, acompañado por Ashley Rojas, con la charla *«Python como brújula y sustento: del código al propósito»*. Sus palabras fueron un faro: nos hablaron de Python no como un lenguaje de programación, sino como un camino, un aliado que se transforma en propósito y comunidad. Escucharlos fue descubrir que el código también late y que detrás de cada línea existe un ser humano que busca sentido.
+
+![][image2]
+
+![][image3]
+
+Más tarde, entre el aroma de una comida que parecía abrazar a todos los asistentes, llegó el turno de **David Sol**. Primero nos guió con maestría por las aguas técnicas de *AWS y Boto3*, mostrando cómo Python se alza como puente hacia las nubes. Pero fue en la **Keynote** de cierre donde su voz resonó como trueno. Allí habló de lo que viene: la irrupción de la *Inteligencia Artificial Generativa*, los retos y la responsabilidad de abrazar lo nuevo sin miedo. Nos invitó a dar un paso al frente, a no ser meros espectadores, sino arquitectos de un futuro donde la humanidad avance con ayuda de la máquina y nunca sometida a ella.
+
+![][image4]
+
+
+
+
+
+
+
+## Parte 2: AWS y Boto3 - Continuación
+
+
+
+## Parte 3: AWS y Boto3 - Final
+
+
+
+## Keynote: PyCon Latam 2025
+
+
+
+## **Relámpagos de cinco minutos**
+
+Cuando cayó la tarde, las **Lightning Talks** nos recordaron que a veces cinco minutos bastan para encender una chispa eterna.
+
+### Lightning Talks - PyToNotion – Iván Castañeda
+
+
+
+### Lightning Talks - Aprender con lo nuestro – Hugo Ramírez
+
+
+
+### Lightning Talks - UV y Rich – David Sol
+
+
+
+![][image7]
+
+Cada charla fue un destello, un fogonazo de ingenio y pasión que dejó en claro que la comunidad se nutre no sólo de grandes conferencias, sino también de esos instantes breves donde se comparte lo más íntimo y personal.
+
+## **El sábado: batallas técnicas y cuentos fantásticos**
+
+El sábado trajo consigo la resiliencia de **Gustavo Vera**, que luchó contra la adversidad técnica y triunfó. Su charla sobre servidores MCP listos para producción fue sólida, impecable, y reflejo de su experiencia. No hubo apagón que apagara su talento ni problema que lograra robarle la voz.
+
+![Pycon Latam 2025 | Costa Rica | Gustavo Vera][image8]
+
+Y cuando el evento pedía su cierre, apareció nuevamente **Iván Castañeda** para contar su propia historia, *El trainee que pintó con datos y soño con código: El viaje de quien se atrevió a soñar con máquinas*. No fue una charla más, fue un cuento fantástico. Narró su experiencia como si abriera un libro encantado, donde cada capítulo estaba tejido con aprendizajes, caídas, victorias y magia. La comunidad escuchaba en silencio, como quien se sumerge en un relato del que no quiere escapar.
+
+![Pycon Latam 2025 | Costa Rica | Ivan Castañeda][image9]
+
+## **Más allá de las charlas, la vida que nos rodea**
+
+Las fotografías de **Mónica Ortega**, tomadas en los momentos más intensos y más sencillos, son ahora ventanas hacia la memoria. Con su apoyo y su sonrisa se convirtió en parte del alma del evento, recordándonos que la vida no se mide en diapositivas, sino en instantes capturados para siempre.
+
+Y como colofón, Costa Rica nos regaló su tradición: una **cimarrona** que llenó el aire de música popular, y una **mascarada** que danzó entre los asistentes como un carnaval íntimo. El cierre no fue un adiós, fue una celebración: bailamos, reímos y abrazamos la certeza de que los días compartidos habían sembrado amistades que durarán más que cualquier congreso.
+
+![Pycon Latam 2025 | Costa Rica | Cimarrona][image10]![Pycon Latam 2025 | Costa Rica | Mascarada][image11]
+
+## **La promesa de volver**
+
+El eco de Puntarenas aún resuena. PyCon Latam 2025 no fue sólo un evento: fue un poema escrito entre charlas, comidas, risas y música. Fue una comunidad latiendo como un solo corazón.
+
+El próximo año, en **2026**, regresaremos a Costa Rica. Volveremos a sus playas, a su hospitalidad, a ese mar que nos mira como espejo. Y a los que este año no pudieron estar, les decimos: los extrañamos. La mesa tiene un lugar reservado para ustedes.
+
+Y como dicen en Costa Rica, con el alma llena y los ojos brillando:
+
+***¡Pura Vida\!***
+
+***![Pycon Latam 2025 | Costa Rica | Comunidad PythonCDMX][image12]***
+
+[image1]: media/PyconLatam2025/image1.png
+
+[image2]: media/PyconLatam2025/image2.png
+
+[image3]: media/PyconLatam2025/image3.png
+
+[image4]: media/PyconLatam2025/image4.png
+
+[image5]: media/PyconLatam2025/image5.png
+
+[image6]: media/PyconLatam2025/image6.png
+
+[image7]: media/PyconLatam2025/image7.png
+
+[image8]: media/PyconLatam2025/image8.png
+
+[image9]: media/PyconLatam2025/image9.png
+
+[image10]: media/PyconLatam2025/image10.png
+
+[image11]: media/PyconLatam2025/image11.png
+
+[image12]: media/PyconLatam2025/image12.png
diff --git a/docs/blog/index.md b/docs/blog/index.md
new file mode 100644
index 0000000..474d615
--- /dev/null
+++ b/docs/blog/index.md
@@ -0,0 +1,11 @@
+# Blog Python CDMX
+
+Bienvenido al blog de la comunidad Python CDMX. Aquí encontrarás artículos, tutoriales y reflexiones sobre Python y la comunidad.
+
+## Artículos Recientes
+
+Los artículos se muestran automáticamente en el menú de navegación. ¡Explora la sección Blog para ver todos nuestros contenidos!
+
+---
+
+¿Te gustaría contribuir con un artículo? ¡Contáctanos en [info@pythoncdmx.org](mailto:info@pythoncdmx.org)!
diff --git a/docs/blog/media/PyconLatam2025/image1.png b/docs/blog/media/PyconLatam2025/image1.png
new file mode 100644
index 0000000..e77f51c
Binary files /dev/null and b/docs/blog/media/PyconLatam2025/image1.png differ
diff --git a/docs/blog/media/PyconLatam2025/image10.png b/docs/blog/media/PyconLatam2025/image10.png
new file mode 100644
index 0000000..bc38c7b
Binary files /dev/null and b/docs/blog/media/PyconLatam2025/image10.png differ
diff --git a/docs/blog/media/PyconLatam2025/image11.png b/docs/blog/media/PyconLatam2025/image11.png
new file mode 100644
index 0000000..16468fd
Binary files /dev/null and b/docs/blog/media/PyconLatam2025/image11.png differ
diff --git a/docs/blog/media/PyconLatam2025/image12.png b/docs/blog/media/PyconLatam2025/image12.png
new file mode 100644
index 0000000..59de661
Binary files /dev/null and b/docs/blog/media/PyconLatam2025/image12.png differ
diff --git a/docs/blog/media/PyconLatam2025/image2.png b/docs/blog/media/PyconLatam2025/image2.png
new file mode 100644
index 0000000..93c04c0
Binary files /dev/null and b/docs/blog/media/PyconLatam2025/image2.png differ
diff --git a/docs/blog/media/PyconLatam2025/image3.png b/docs/blog/media/PyconLatam2025/image3.png
new file mode 100644
index 0000000..a13e3da
Binary files /dev/null and b/docs/blog/media/PyconLatam2025/image3.png differ
diff --git a/docs/blog/media/PyconLatam2025/image4.png b/docs/blog/media/PyconLatam2025/image4.png
new file mode 100644
index 0000000..7c81327
Binary files /dev/null and b/docs/blog/media/PyconLatam2025/image4.png differ
diff --git a/docs/blog/media/PyconLatam2025/image5.png b/docs/blog/media/PyconLatam2025/image5.png
new file mode 100644
index 0000000..ac5d5f2
Binary files /dev/null and b/docs/blog/media/PyconLatam2025/image5.png differ
diff --git a/docs/blog/media/PyconLatam2025/image6.png b/docs/blog/media/PyconLatam2025/image6.png
new file mode 100644
index 0000000..69a7e69
Binary files /dev/null and b/docs/blog/media/PyconLatam2025/image6.png differ
diff --git a/docs/blog/media/PyconLatam2025/image7.png b/docs/blog/media/PyconLatam2025/image7.png
new file mode 100644
index 0000000..cbba3ed
Binary files /dev/null and b/docs/blog/media/PyconLatam2025/image7.png differ
diff --git a/docs/blog/media/PyconLatam2025/image8.png b/docs/blog/media/PyconLatam2025/image8.png
new file mode 100644
index 0000000..2b1c6bb
Binary files /dev/null and b/docs/blog/media/PyconLatam2025/image8.png differ
diff --git a/docs/blog/media/PyconLatam2025/image9.png b/docs/blog/media/PyconLatam2025/image9.png
new file mode 100644
index 0000000..3fc2eeb
Binary files /dev/null and b/docs/blog/media/PyconLatam2025/image9.png differ
diff --git a/docs/blog/media/README.md b/docs/blog/media/README.md
new file mode 100644
index 0000000..178aa5e
--- /dev/null
+++ b/docs/blog/media/README.md
@@ -0,0 +1,67 @@
+# Blog Media
+
+Esta carpeta contiene las imágenes utilizadas en los artículos del blog, organizadas por artículo.
+
+## Estructura
+
+```
+media/
+├── README.md
+└── PyconLatam2025/
+ ├── image1.png
+ ├── image2.png
+ ├── ...
+ └── image12.png
+```
+
+## Organización por artículo
+
+Cada artículo del blog tiene su propia carpeta dentro de `media/` con el mismo nombre que el archivo `.md`:
+
+- `PyconLatam2025/` - Imágenes del artículo PyCon Latam 2025
+- `futuro-articulo/` - Imágenes de futuros artículos
+
+## Proceso de extracción
+
+Las imágenes fueron extraídas automáticamente desde el archivo `PyconLatam2025.md` y organizadas en su carpeta correspondiente.
+
+## Agregar nuevos artículos
+
+Para crear un nuevo artículo del blog, usa el script de configuración:
+
+```bash
+python scripts/setup_blog_article.py nombre-del-articulo
+```
+
+Este script:
+- Crea el archivo `docs/blog/nombre-del-articulo.md`
+- Crea la carpeta `docs/blog/media/nombre-del-articulo/`
+- Agrega el artículo a la navegación en `.pages`
+- Incluye plantilla básica con ejemplos
+
+## Agregar nuevas imágenes
+
+Para agregar nuevas imágenes al blog:
+
+1. **Crear carpeta del artículo** (si no existe):
+ ```bash
+ mkdir docs/blog/media/nombre-del-articulo
+ ```
+
+2. **Colocar las imágenes** en la carpeta del artículo
+
+3. **Referenciar en el markdown**:
+ ```markdown
+ 
+ ```
+
+ O usar definiciones:
+ ```markdown
+ [nombre]: media/nombre-del-articulo/imagen.png
+ ```
+
+## Convenciones de nombres
+
+- **Carpetas**: Mismo nombre que el archivo `.md` (sin extensión)
+- **Imágenes**: Nombres descriptivos y únicos dentro de cada carpeta
+- **Formatos**: PNG, JPG, GIF, SVG (preferir PNG para capturas de pantalla)
diff --git a/mkdocs.yml b/mkdocs.yml
index a9c2c01..7feacf5 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -81,6 +81,9 @@ nav:
- Comunidades: comunidad/comunidades.md
- Código de Conducta: codigo-de-conducta.md
- Aviso de Privacidad: aviso-de-privacidad.md
+ - Blog:
+ - Inicio: blog/index.md
+ - PyCon Latam 2025: blog/PyconLatam2025.md
- Acerca de: about.md
# Plugins
@@ -98,6 +101,10 @@ plugins:
minify_js: true
htmlmin_opts:
remove_comments: true
+ - awesome-pages:
+ filename: .pages
+ collapse_single_pages: false
+ strict: false
# Social links
extra:
diff --git a/requirements.txt b/requirements.txt
index 3a56169..7bfb1d6 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,5 +2,6 @@ mkdocs>=1.5.0
mkdocs-material>=9.5.0
mkdocs-git-revision-date-localized-plugin>=1.2.0
mkdocs-minify-plugin>=0.7.0
+mkdocs-awesome-pages-plugin>=2.10.1
pymdown-extensions>=10.0.0
Jinja2>=3.0