From 2973aa456cb8c44bd2060e07fcbceba93b26150d Mon Sep 17 00:00:00 2001 From: "Erick G. Islas-Osuna" Date: Sun, 12 Oct 2025 13:52:42 -0600 Subject: [PATCH 1/2] fix: broken links y check script --- broken_links.json | 255 ++++++++++++++++-------------- docs/about.md | 4 +- docs/comunidad/como-contribuir.md | 10 +- docs/comunidad/ponentes.md | 60 +++---- docs/comunidad/sedes_faq.md | 2 +- docs/comunidad/voluntarios.md | 2 +- docs/index.md | 16 +- docs/meetups/2023/index.md | 12 +- docs/meetups/2024/index.md | 32 ++-- docs/meetups/2025/index.md | 28 ++-- scripts/check_links.py | 2 + 11 files changed, 217 insertions(+), 206 deletions(-) diff --git a/broken_links.json b/broken_links.json index 64bd6bb..85327b0 100644 --- a/broken_links.json +++ b/broken_links.json @@ -1,8 +1,8 @@ { "summary": { - "total_files_scanned": 45, - "working_links": 80, - "broken_links": 2, + "total_files_scanned": 44, + "working_links": 81, + "broken_links": 0, "base_url": "http://127.0.0.1:8000" }, "broken_links": [ @@ -29,8 +29,8 @@ { "file": "index.md", "text": "Explorar charlas", - "url": "/meetups/index.md", - "full_url": "http://127.0.0.1:8000/meetups/index.html", + "url": "/meetups", + "full_url": "http://127.0.0.1:8000/meetups", "status": "200 OK", "line": 8, "link_type": "html" @@ -38,8 +38,8 @@ { "file": "index.md", "text": "Participa", - "url": "/comunidad/como-contribuir/", - "full_url": "http://127.0.0.1:8000/comunidad/como-contribuir/", + "url": "/comunidad/como-contribuir", + "full_url": "http://127.0.0.1:8000/comunidad/como-contribuir", "status": "200 OK", "line": 9, "link_type": "html" @@ -47,8 +47,8 @@ { "file": "index.md", "text": "Voluntarios", - "url": "/comunidad/voluntarios/#voluntarios-de-python-cdmx", - "full_url": "http://127.0.0.1:8000/comunidad/voluntarios/#voluntarios-de-python-cdmx", + "url": "/comunidad/voluntarios#voluntarios-de-python-cdmx", + "full_url": "http://127.0.0.1:8000/comunidad/voluntarios#voluntarios-de-python-cdmx", "status": "200 OK", "line": 21, "link_type": "html" @@ -56,8 +56,8 @@ { "file": "index.md", "text": "Ponentes", - "url": "/comunidad/ponentes/#ponentes-de-python-cdmx", - "full_url": "http://127.0.0.1:8000/comunidad/ponentes/#ponentes-de-python-cdmx", + "url": "/comunidad/ponentes#ponentes-de-python-cdmx", + "full_url": "http://127.0.0.1:8000/comunidad/ponentes#ponentes-de-python-cdmx", "status": "200 OK", "line": 22, "link_type": "html" @@ -65,8 +65,8 @@ { "file": "index.md", "text": "Conoce Más", - "url": "/comunidad/ponentes/", - "full_url": "http://127.0.0.1:8000/comunidad/ponentes/", + "url": "/comunidad/ponentes", + "full_url": "http://127.0.0.1:8000/comunidad/ponentes", "status": "200 OK", "line": 39, "link_type": "html" @@ -74,8 +74,8 @@ { "file": "index.md", "text": "Únete", - "url": "/comunidad/voluntarios/", - "full_url": "http://127.0.0.1:8000/comunidad/voluntarios/", + "url": "/comunidad/voluntarios", + "full_url": "http://127.0.0.1:8000/comunidad/voluntarios", "status": "200 OK", "line": 44, "link_type": "html" @@ -83,8 +83,8 @@ { "file": "index.md", "text": "Ver Eventos", - "url": "/meetups/index.md", - "full_url": "http://127.0.0.1:8000/meetups/index.html", + "url": "/meetups", + "full_url": "http://127.0.0.1:8000/meetups", "status": "200 OK", "line": 49, "link_type": "html" @@ -92,8 +92,8 @@ { "file": "about.md", "text": "guía para ponentes", - "url": "comunidad/ponentes/", - "full_url": "http://127.0.0.1:8000/comunidad/ponentes/", + "url": "comunidad/ponentes", + "full_url": "http://127.0.0.1:8000/comunidad/ponentes", "status": "200 OK", "line": 42, "link_type": "markdown" @@ -101,8 +101,8 @@ { "file": "about.md", "text": "nuestra página de voluntarios", - "url": "comunidad/voluntarios/", - "full_url": "http://127.0.0.1:8000/comunidad/voluntarios/", + "url": "comunidad/voluntarios", + "full_url": "http://127.0.0.1:8000/comunidad/voluntarios", "status": "200 OK", "line": 46, "link_type": "markdown" @@ -110,7 +110,7 @@ { "file": "meetups/2025/index.md", "text": "Ver detalles", - "url": "202508-agosto/", + "url": "202508-agosto", "full_url": "http://127.0.0.1:8000/meetups/2025/202508-agosto", "status": "200 OK", "line": 15, @@ -119,7 +119,7 @@ { "file": "meetups/2025/index.md", "text": "Ver detalles", - "url": "202507-julio/", + "url": "202507-julio", "full_url": "http://127.0.0.1:8000/meetups/2025/202507-julio", "status": "200 OK", "line": 16, @@ -128,7 +128,7 @@ { "file": "meetups/2025/index.md", "text": "Ver detalles", - "url": "202506-junio/", + "url": "202506-junio", "full_url": "http://127.0.0.1:8000/meetups/2025/202506-junio", "status": "200 OK", "line": 17, @@ -137,7 +137,7 @@ { "file": "meetups/2025/index.md", "text": "Ver detalles", - "url": "202505-mayo/", + "url": "202505-mayo", "full_url": "http://127.0.0.1:8000/meetups/2025/202505-mayo", "status": "200 OK", "line": 18, @@ -146,7 +146,7 @@ { "file": "meetups/2025/index.md", "text": "Ver detalles", - "url": "202504-unam/", + "url": "202504-unam", "full_url": "http://127.0.0.1:8000/meetups/2025/202504-unam", "status": "200 OK", "line": 19, @@ -155,7 +155,7 @@ { "file": "meetups/2025/index.md", "text": "Ver detalles", - "url": "202504-unam/", + "url": "202504-unam", "full_url": "http://127.0.0.1:8000/meetups/2025/202504-unam", "status": "200 OK", "line": 20, @@ -164,7 +164,7 @@ { "file": "meetups/2025/index.md", "text": "Ver detalles", - "url": "202504-abril/", + "url": "202504-abril", "full_url": "http://127.0.0.1:8000/meetups/2025/202504-abril", "status": "200 OK", "line": 21, @@ -173,7 +173,7 @@ { "file": "meetups/2025/index.md", "text": "Ver detalles", - "url": "202503-marzo/", + "url": "202503-marzo", "full_url": "http://127.0.0.1:8000/meetups/2025/202503-marzo", "status": "200 OK", "line": 22, @@ -182,7 +182,7 @@ { "file": "meetups/2025/index.md", "text": "Ver detalles", - "url": "202503-marzo/", + "url": "202503-marzo", "full_url": "http://127.0.0.1:8000/meetups/2025/202503-marzo", "status": "200 OK", "line": 23, @@ -191,7 +191,7 @@ { "file": "meetups/2025/index.md", "text": "Ver detalles", - "url": "202502-febrero/", + "url": "202502-febrero", "full_url": "http://127.0.0.1:8000/meetups/2025/202502-febrero", "status": "200 OK", "line": 24, @@ -200,7 +200,7 @@ { "file": "meetups/2025/index.md", "text": "Ver detalles", - "url": "202502-febrero/", + "url": "202502-febrero", "full_url": "http://127.0.0.1:8000/meetups/2025/202502-febrero", "status": "200 OK", "line": 25, @@ -209,7 +209,7 @@ { "file": "meetups/2025/index.md", "text": "Ver detalles", - "url": "202501-enero/", + "url": "202501-enero", "full_url": "http://127.0.0.1:8000/meetups/2025/202501-enero", "status": "200 OK", "line": 26, @@ -218,7 +218,7 @@ { "file": "meetups/2025/index.md", "text": "Ver detalles", - "url": "202501-enero/", + "url": "202501-enero", "full_url": "http://127.0.0.1:8000/meetups/2025/202501-enero", "status": "200 OK", "line": 27, @@ -227,7 +227,7 @@ { "file": "meetups/2025/index.md", "text": "ponentes y voluntarios reconocidos", - "url": "../../comunidad/como-contribuir/", + "url": "../../comunidad/como-contribuir", "full_url": "http://127.0.0.1:8000/comunidad/como-contribuir", "status": "200 OK", "line": 68, @@ -236,7 +236,7 @@ { "file": "meetups/2024/index.md", "text": "Ver detalles", - "url": "202411-noviembre/", + "url": "202411-noviembre", "full_url": "http://127.0.0.1:8000/meetups/2024/202411-noviembre", "status": "200 OK", "line": 15, @@ -245,7 +245,7 @@ { "file": "meetups/2024/index.md", "text": "Ver detalles", - "url": "202411-noviembre/", + "url": "202411-noviembre", "full_url": "http://127.0.0.1:8000/meetups/2024/202411-noviembre", "status": "200 OK", "line": 16, @@ -254,7 +254,7 @@ { "file": "meetups/2024/index.md", "text": "Ver detalles", - "url": "202410-octubre/", + "url": "202410-octubre", "full_url": "http://127.0.0.1:8000/meetups/2024/202410-octubre", "status": "200 OK", "line": 17, @@ -263,7 +263,7 @@ { "file": "meetups/2024/index.md", "text": "Ver detalles", - "url": "202409-septiembre/", + "url": "202409-septiembre", "full_url": "http://127.0.0.1:8000/meetups/2024/202409-septiembre", "status": "200 OK", "line": 18, @@ -272,7 +272,7 @@ { "file": "meetups/2024/index.md", "text": "Ver detalles", - "url": "202409-septiembre/", + "url": "202409-septiembre", "full_url": "http://127.0.0.1:8000/meetups/2024/202409-septiembre", "status": "200 OK", "line": 19, @@ -281,7 +281,7 @@ { "file": "meetups/2024/index.md", "text": "Ver detalles", - "url": "202408-agosto/", + "url": "202408-agosto", "full_url": "http://127.0.0.1:8000/meetups/2024/202408-agosto", "status": "200 OK", "line": 20, @@ -290,7 +290,7 @@ { "file": "meetups/2024/index.md", "text": "Ver detalles", - "url": "202408-agosto/", + "url": "202408-agosto", "full_url": "http://127.0.0.1:8000/meetups/2024/202408-agosto", "status": "200 OK", "line": 21, @@ -299,7 +299,7 @@ { "file": "meetups/2024/index.md", "text": "Ver detalles", - "url": "202407-julio/", + "url": "202407-julio", "full_url": "http://127.0.0.1:8000/meetups/2024/202407-julio", "status": "200 OK", "line": 22, @@ -308,7 +308,7 @@ { "file": "meetups/2024/index.md", "text": "Ver detalles", - "url": "202407-julio/", + "url": "202407-julio", "full_url": "http://127.0.0.1:8000/meetups/2024/202407-julio", "status": "200 OK", "line": 23, @@ -317,7 +317,7 @@ { "file": "meetups/2024/index.md", "text": "Ver detalles", - "url": "202406-junio/", + "url": "202406-junio", "full_url": "http://127.0.0.1:8000/meetups/2024/202406-junio", "status": "200 OK", "line": 24, @@ -326,7 +326,7 @@ { "file": "meetups/2024/index.md", "text": "Ver detalles", - "url": "202405-mayo/", + "url": "202405-mayo", "full_url": "http://127.0.0.1:8000/meetups/2024/202405-mayo", "status": "200 OK", "line": 25, @@ -335,7 +335,7 @@ { "file": "meetups/2024/index.md", "text": "Ver detalles", - "url": "202404-abril/", + "url": "202404-abril", "full_url": "http://127.0.0.1:8000/meetups/2024/202404-abril", "status": "200 OK", "line": 26, @@ -344,7 +344,7 @@ { "file": "meetups/2024/index.md", "text": "Ver detalles", - "url": "202403-marzo/", + "url": "202403-marzo", "full_url": "http://127.0.0.1:8000/meetups/2024/202403-marzo", "status": "200 OK", "line": 27, @@ -353,7 +353,7 @@ { "file": "meetups/2024/index.md", "text": "Ver detalles", - "url": "202402-febrero/", + "url": "202402-febrero", "full_url": "http://127.0.0.1:8000/meetups/2024/202402-febrero", "status": "200 OK", "line": 28, @@ -362,7 +362,7 @@ { "file": "meetups/2024/index.md", "text": "Ver detalles", - "url": "202401-enero/", + "url": "202401-enero", "full_url": "http://127.0.0.1:8000/meetups/2024/202401-enero", "status": "200 OK", "line": 29, @@ -371,7 +371,7 @@ { "file": "meetups/2024/index.md", "text": "ponentes y voluntarios reconocidos", - "url": "../../comunidad/como-contribuir/", + "url": "../../comunidad/como-contribuir", "full_url": "http://127.0.0.1:8000/comunidad/como-contribuir", "status": "200 OK", "line": 69, @@ -380,7 +380,7 @@ { "file": "meetups/2023/index.md", "text": "Ver detalles", - "url": "202311-noviembre/", + "url": "202311-noviembre", "full_url": "http://127.0.0.1:8000/meetups/2023/202311-noviembre", "status": "200 OK", "line": 15, @@ -389,7 +389,7 @@ { "file": "meetups/2023/index.md", "text": "Ver detalles", - "url": "202311-noviembre/", + "url": "202311-noviembre", "full_url": "http://127.0.0.1:8000/meetups/2023/202311-noviembre", "status": "200 OK", "line": 16, @@ -398,7 +398,7 @@ { "file": "meetups/2023/index.md", "text": "Ver detalles", - "url": "202310-octubre/", + "url": "202310-octubre", "full_url": "http://127.0.0.1:8000/meetups/2023/202310-octubre", "status": "200 OK", "line": 17, @@ -407,7 +407,7 @@ { "file": "meetups/2023/index.md", "text": "Ver detalles", - "url": "202309-septiembre/", + "url": "202309-septiembre", "full_url": "http://127.0.0.1:8000/meetups/2023/202309-septiembre", "status": "200 OK", "line": 18, @@ -416,7 +416,7 @@ { "file": "meetups/2023/index.md", "text": "Ver detalles", - "url": "202309-septiembre/", + "url": "202309-septiembre", "full_url": "http://127.0.0.1:8000/meetups/2023/202309-septiembre", "status": "200 OK", "line": 19, @@ -425,7 +425,7 @@ { "file": "meetups/2023/index.md", "text": "ponentes y voluntarios reconocidos", - "url": "../../comunidad/como-contribuir/", + "url": "../../comunidad/como-contribuir", "full_url": "http://127.0.0.1:8000/comunidad/como-contribuir", "status": "200 OK", "line": 59, @@ -434,8 +434,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Mejora tu código: Evita anti-patrones en Python\" (Noviembre 2024)", - "url": "/meetups/2024/202411-noviembre/", - "full_url": "http://127.0.0.1:8000/meetups/2024/202411-noviembre/", + "url": "/meetups/2024/202411-noviembre", + "full_url": "http://127.0.0.1:8000/meetups/2024/202411-noviembre", "status": "200 OK", "line": 125, "link_type": "html" @@ -443,8 +443,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Desarrollo de APIs con Python\" (Marzo 2024)", - "url": "/meetups/2024/202403-marzo/", - "full_url": "http://127.0.0.1:8000/meetups/2024/202403-marzo/", + "url": "/meetups/2024/202403-marzo", + "full_url": "http://127.0.0.1:8000/meetups/2024/202403-marzo", "status": "200 OK", "line": 126, "link_type": "html" @@ -452,8 +452,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Una ida y una vuelta: Cómo iniciar en el opensource\" (Octubre 2024)", - "url": "/meetups/2024/202410-octubre/", - "full_url": "http://127.0.0.1:8000/meetups/2024/202410-octubre/", + "url": "/meetups/2024/202410-octubre", + "full_url": "http://127.0.0.1:8000/meetups/2024/202410-octubre", "status": "200 OK", "line": 158, "link_type": "html" @@ -461,8 +461,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Aplicaciones de IA en la nube\" (Junio 2025)", - "url": "/meetups/2025/202506-junio/", - "full_url": "http://127.0.0.1:8000/meetups/2025/202506-junio/", + "url": "/meetups/2025/202506-junio", + "full_url": "http://127.0.0.1:8000/meetups/2025/202506-junio", "status": "200 OK", "line": 190, "link_type": "html" @@ -470,8 +470,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Kubernetes y MLOps: Desplegando aplicaciones de IA\" (Abril 2025)", - "url": "/meetups/2025/202504-abril/", - "full_url": "http://127.0.0.1:8000/meetups/2025/202504-abril/", + "url": "/meetups/2025/202504-abril", + "full_url": "http://127.0.0.1:8000/meetups/2025/202504-abril", "status": "200 OK", "line": 222, "link_type": "html" @@ -479,8 +479,8 @@ { "file": "comunidad/ponentes.md", "text": "\"GitOps 101. Primeros pasos para desplegar aplicaciones en Kubernetes\" (Noviembre 2023)", - "url": "/meetups/2023/202311-noviembre/", - "full_url": "http://127.0.0.1:8000/meetups/2023/202311-noviembre/", + "url": "/meetups/2023/202311-noviembre", + "full_url": "http://127.0.0.1:8000/meetups/2023/202311-noviembre", "status": "200 OK", "line": 223, "link_type": "html" @@ -488,8 +488,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Programar en tiempos del Vibe-Coding\" (Abril 2025 - UNAM)", - "url": "/meetups/2025/202504-unam/", - "full_url": "http://127.0.0.1:8000/meetups/2025/202504-unam/", + "url": "/meetups/2025/202504-unam", + "full_url": "http://127.0.0.1:8000/meetups/2025/202504-unam", "status": "200 OK", "line": 255, "link_type": "html" @@ -497,8 +497,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Validación de datos con Python\" (Mayo 2024)", - "url": "/meetups/2024/202405-mayo/", - "full_url": "http://127.0.0.1:8000/meetups/2024/202405-mayo/", + "url": "/meetups/2024/202405-mayo", + "full_url": "http://127.0.0.1:8000/meetups/2024/202405-mayo", "status": "200 OK", "line": 256, "link_type": "html" @@ -506,8 +506,8 @@ { "file": "comunidad/ponentes.md", "text": "\"portafolio.py: Como hacer un portafolio web sin saber diseño web\" (Abril 2025 - UNAM)", - "url": "/meetups/2025/202504-unam/", - "full_url": "http://127.0.0.1:8000/meetups/2025/202504-unam/", + "url": "/meetups/2025/202504-unam", + "full_url": "http://127.0.0.1:8000/meetups/2025/202504-unam", "status": "200 OK", "line": 288, "link_type": "html" @@ -515,8 +515,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Cómo preparar una ambiente de desarrollo con Python desde zero\" (Julio 2025)", - "url": "/meetups/2025/202507-julio/", - "full_url": "http://127.0.0.1:8000/meetups/2025/202507-julio/", + "url": "/meetups/2025/202507-julio", + "full_url": "http://127.0.0.1:8000/meetups/2025/202507-julio", "status": "200 OK", "line": 320, "link_type": "html" @@ -524,8 +524,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Interfaces gráficas con PySide6\" (Marzo 2025)", - "url": "/meetups/2025/202503-marzo/", - "full_url": "http://127.0.0.1:8000/meetups/2025/202503-marzo/", + "url": "/meetups/2025/202503-marzo", + "full_url": "http://127.0.0.1:8000/meetups/2025/202503-marzo", "status": "200 OK", "line": 321, "link_type": "html" @@ -533,8 +533,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Rich y Textual: Haz tus aplicaciones en la consola visualmente atractivas\" (Septiembre 2024)", - "url": "/meetups/2024/202409-septiembre/", - "full_url": "http://127.0.0.1:8000/meetups/2024/202409-septiembre/", + "url": "/meetups/2024/202409-septiembre", + "full_url": "http://127.0.0.1:8000/meetups/2024/202409-septiembre", "status": "200 OK", "line": 322, "link_type": "html" @@ -542,8 +542,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Utilizando Servicios Administrados de AI de AWS con Python y Boto3\" (Septiembre 2023)", - "url": "/meetups/2023/202309-septiembre/", - "full_url": "http://127.0.0.1:8000/meetups/2023/202309-septiembre/", + "url": "/meetups/2023/202309-septiembre", + "full_url": "http://127.0.0.1:8000/meetups/2023/202309-septiembre", "status": "200 OK", "line": 323, "link_type": "html" @@ -551,8 +551,8 @@ { "file": "comunidad/ponentes.md", "text": "\"chit-chat: Representaciones fonéticas con python\" (Septiembre 2024)", - "url": "/meetups/2024/202409-septiembre/", - "full_url": "http://127.0.0.1:8000/meetups/2024/202409-septiembre/", + "url": "/meetups/2024/202409-septiembre", + "full_url": "http://127.0.0.1:8000/meetups/2024/202409-septiembre", "status": "200 OK", "line": 355, "link_type": "html" @@ -560,8 +560,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Mi Primer Agente de Inteligencia Artificial con Python\" (Marzo 2025)", - "url": "/meetups/2025/202503-marzo/", - "full_url": "http://127.0.0.1:8000/meetups/2025/202503-marzo/", + "url": "/meetups/2025/202503-marzo", + "full_url": "http://127.0.0.1:8000/meetups/2025/202503-marzo", "status": "200 OK", "line": 387, "link_type": "html" @@ -569,8 +569,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Guía Práctica para Convertirse en Contribuidor de Open Source en 10 Años (o más)\" (Agosto 2024)", - "url": "/meetups/2024/202408-agosto/", - "full_url": "http://127.0.0.1:8000/meetups/2024/202408-agosto/", + "url": "/meetups/2024/202408-agosto", + "full_url": "http://127.0.0.1:8000/meetups/2024/202408-agosto", "status": "200 OK", "line": 419, "link_type": "html" @@ -578,8 +578,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Matemáticas y Python: La Ciencia Detrás de la Regresión Lineal\" (Junio 2024)", - "url": "/meetups/2024/202406-junio/", - "full_url": "http://127.0.0.1:8000/meetups/2024/202406-junio/", + "url": "/meetups/2024/202406-junio", + "full_url": "http://127.0.0.1:8000/meetups/2024/202406-junio", "status": "200 OK", "line": 451, "link_type": "html" @@ -587,8 +587,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Protocolos en Python: El poder del tipado estático avanzado\" (Agosto 2024)", - "url": "/meetups/2024/202408-agosto/", - "full_url": "http://127.0.0.1:8000/meetups/2024/202408-agosto/", + "url": "/meetups/2024/202408-agosto", + "full_url": "http://127.0.0.1:8000/meetups/2024/202408-agosto", "status": "200 OK", "line": 483, "link_type": "html" @@ -596,8 +596,8 @@ { "file": "comunidad/ponentes.md", "text": "\"¡De Jupyter a Web en Minutos!\" (Octubre 2023)", - "url": "/meetups/2023/202310-octubre/", - "full_url": "http://127.0.0.1:8000/meetups/2023/202310-octubre/", + "url": "/meetups/2023/202310-octubre", + "full_url": "http://127.0.0.1:8000/meetups/2023/202310-octubre", "status": "200 OK", "line": 484, "link_type": "html" @@ -605,8 +605,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Metaprogramación en Python\" (Septiembre 2023)", - "url": "/meetups/2023/202309-septiembre/", - "full_url": "http://127.0.0.1:8000/meetups/2023/202309-septiembre/", + "url": "/meetups/2023/202309-septiembre", + "full_url": "http://127.0.0.1:8000/meetups/2023/202309-septiembre", "status": "200 OK", "line": 485, "link_type": "html" @@ -614,8 +614,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Python: La Forja de un Lenguaje\" (Noviembre 2023)", - "url": "/meetups/2023/202311-noviembre/", - "full_url": "http://127.0.0.1:8000/meetups/2023/202311-noviembre/", + "url": "/meetups/2023/202311-noviembre", + "full_url": "http://127.0.0.1:8000/meetups/2023/202311-noviembre", "status": "200 OK", "line": 486, "link_type": "html" @@ -623,8 +623,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Python y los esquemas ETLs\" (Julio 2024)", - "url": "/meetups/2024/202407-julio/", - "full_url": "http://127.0.0.1:8000/meetups/2024/202407-julio/", + "url": "/meetups/2024/202407-julio", + "full_url": "http://127.0.0.1:8000/meetups/2024/202407-julio", "status": "200 OK", "line": 518, "link_type": "html" @@ -632,8 +632,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Título de la charla\" (Noviembre 2024)", - "url": "/meetups/2024/202411-noviembre/", - "full_url": "http://127.0.0.1:8000/meetups/2024/202411-noviembre/", + "url": "/meetups/2024/202411-noviembre", + "full_url": "http://127.0.0.1:8000/meetups/2024/202411-noviembre", "status": "200 OK", "line": 519, "link_type": "html" @@ -641,8 +641,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Desarrollo de aplicaciones FinTech con Python\" (Mayo 2025)", - "url": "/meetups/2025/202505-mayo/", - "full_url": "http://127.0.0.1:8000/meetups/2025/202505-mayo/", + "url": "/meetups/2025/202505-mayo", + "full_url": "http://127.0.0.1:8000/meetups/2025/202505-mayo", "status": "200 OK", "line": 551, "link_type": "html" @@ -650,8 +650,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Embeddings - El lenguaje como las máquinas entienden el lenguaje humano\" (Febrero 2025)", - "url": "/meetups/2025/202502-febrero/", - "full_url": "http://127.0.0.1:8000/meetups/2025/202502-febrero/", + "url": "/meetups/2025/202502-febrero", + "full_url": "http://127.0.0.1:8000/meetups/2025/202502-febrero", "status": "200 OK", "line": 583, "link_type": "html" @@ -659,8 +659,8 @@ { "file": "comunidad/ponentes.md", "text": "\"El futuro de Python sin GIL\" (Julio 2024)", - "url": "/meetups/2024/202407-julio/", - "full_url": "http://127.0.0.1:8000/meetups/2024/202407-julio/", + "url": "/meetups/2024/202407-julio", + "full_url": "http://127.0.0.1:8000/meetups/2024/202407-julio", "status": "200 OK", "line": 615, "link_type": "html" @@ -668,8 +668,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Lecciones del Advent of Code 2024\" (Febrero 2025)", - "url": "/meetups/2025/202502-febrero/", - "full_url": "http://127.0.0.1:8000/meetups/2025/202502-febrero/", + "url": "/meetups/2025/202502-febrero", + "full_url": "http://127.0.0.1:8000/meetups/2025/202502-febrero", "status": "200 OK", "line": 647, "link_type": "html" @@ -677,8 +677,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Creando extensiones para LibreOffice, con Python\" (Enero 2025)", - "url": "/meetups/2025/202501-enero/", - "full_url": "http://127.0.0.1:8000/meetups/2025/202501-enero/", + "url": "/meetups/2025/202501-enero", + "full_url": "http://127.0.0.1:8000/meetups/2025/202501-enero", "status": "200 OK", "line": 679, "link_type": "html" @@ -686,8 +686,8 @@ { "file": "comunidad/ponentes.md", "text": "\"Seguridad y cumplimiento de Python: Garantizar el cumplimiento de PCI DSS en un entorno Python\" (Enero 2025)", - "url": "/meetups/2025/202501-enero/", - "full_url": "http://127.0.0.1:8000/meetups/2025/202501-enero/", + "url": "/meetups/2025/202501-enero", + "full_url": "http://127.0.0.1:8000/meetups/2025/202501-enero", "status": "200 OK", "line": 711, "link_type": "html" @@ -695,7 +695,7 @@ { "file": "comunidad/voluntarios.md", "text": "Más Información", - "url": "como-contribuir/", + "url": "como-contribuir", "full_url": "http://127.0.0.1:8000/comunidad/como-contribuir", "status": "200 OK", "line": 87, @@ -704,8 +704,8 @@ { "file": "comunidad/sedes_faq.md", "text": "Ser Ponente", - "url": "ponentes/#por-que-ser-ponente", - "full_url": "http://127.0.0.1:8000/comunidad/ponentes/#por-que-ser-ponente", + "url": "ponentes#por-que-ser-ponente", + "full_url": "http://127.0.0.1:8000/comunidad/ponentes#por-que-ser-ponente", "status": "200 OK", "line": 109, "link_type": "markdown" @@ -713,7 +713,7 @@ { "file": "comunidad/como-contribuir.md", "text": "Ser Ponente", - "url": "ponentes/", + "url": "ponentes", "full_url": "http://127.0.0.1:8000/comunidad/ponentes", "status": "200 OK", "line": 31, @@ -722,7 +722,7 @@ { "file": "comunidad/como-contribuir.md", "text": "Ser Voluntario", - "url": "voluntarios/", + "url": "voluntarios", "full_url": "http://127.0.0.1:8000/comunidad/voluntarios", "status": "200 OK", "line": 37, @@ -731,17 +731,26 @@ { "file": "comunidad/como-contribuir.md", "text": "Alianzas", - "url": "alianzas/", + "url": "alianzas", "full_url": "http://127.0.0.1:8000/comunidad/alianzas", "status": "200 OK", "line": 55, "link_type": "markdown" }, + { + "file": "comunidad/como-contribuir.md", + "text": "formas de contribuir", + "url": "como-contribuir#formas-de-contribuir", + "full_url": "http://127.0.0.1:8000/comunidad/como-contribuir#formas-de-contribuir", + "status": "200 OK", + "line": 63, + "link_type": "markdown" + }, { "file": "comunidad/como-contribuir.md", "text": "nuestros meetups", - "url": "../meetups/index.md", - "full_url": "http://127.0.0.1:8000/meetups/index.html", + "url": "../meetups", + "full_url": "http://127.0.0.1:8000/meetups", "status": "200 OK", "line": 70, "link_type": "markdown" diff --git a/docs/about.md b/docs/about.md index 507aeb0..9848b4a 100644 --- a/docs/about.md +++ b/docs/about.md @@ -39,11 +39,11 @@ Creemos que el verdadero crecimiento profesional viene de la colaboración y el ### Ser Ponente -Comparte tu experiencia y conocimiento con la comunidad. Consulta nuestra [guía para ponentes](comunidad/ponentes/) para más información. +Comparte tu experiencia y conocimiento con la comunidad. Consulta nuestra [guía para ponentes](comunidad/ponentes) para más información. ### Ser Voluntario -Ayuda a organizar eventos, gestionar redes sociales o contribuir con el desarrollo del sitio web. Conoce más en [nuestra página de voluntarios](comunidad/voluntarios/). +Ayuda a organizar eventos, gestionar redes sociales o contribuir con el desarrollo del sitio web. Conoce más en [nuestra página de voluntarios](comunidad/voluntarios). ### Asistir a Meetups diff --git a/docs/comunidad/como-contribuir.md b/docs/comunidad/como-contribuir.md index 12d897b..40dd917 100644 --- a/docs/comunidad/como-contribuir.md +++ b/docs/comunidad/como-contribuir.md @@ -28,13 +28,13 @@ Contribuir a Python CDMX te permite: Comparte tu conocimiento con la comunidad a través de charlas técnicas, casos de uso o introducciones a nuevas tecnologías. -**Más información:** [Ser Ponente](ponentes/) +**Más información:** [Ser Ponente](ponentes) ### Ser Voluntario Ayuda a organizar eventos, gestionar redes sociales, o contribuir con el desarrollo del sitio web. -**Más información:** [Ser Voluntario](voluntarios/) +**Más información:** [Ser Voluntario](voluntarios) ### Desarrollo Web @@ -52,7 +52,7 @@ Escribe artículos, documentación, o crea contenido para nuestras redes sociale Ayuda a establecer y mantener relaciones con otras comunidades y empresas. -**Más información:** [Alianzas](alianzas/) +**Más información:** [Alianzas](alianzas) --- @@ -60,14 +60,14 @@ Ayuda a establecer y mantener relaciones con otras comunidades y empresas. ### 1. Identifica tu Área -- Revisa las [formas de contribuir](#formas-de-contribuir) +- Revisa las [formas de contribuir](como-contribuir#formas-de-contribuir) - Considera tus habilidades e intereses - Evalúa tu disponibilidad de tiempo ### 2. Contacta con Nosotros - Envía un mensaje a través de nuestros canales oficiales -- Participa en [nuestros meetups](../meetups/index.md) para conocernos +- Participa en [nuestros meetups](../meetups) para conocernos - Asiste a sesiones informativas ### 3. Comienza Pequeño diff --git a/docs/comunidad/ponentes.md b/docs/comunidad/ponentes.md index 40031cc..ba113c9 100644 --- a/docs/comunidad/ponentes.md +++ b/docs/comunidad/ponentes.md @@ -122,8 +122,8 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra Desarrollo de APIs, Frameworks Web, Buenas Prácticas Charlas recientes: @@ -155,7 +155,7 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra OpenSource, Automatización, Hardening de Infraestructura Charlas recientes: @@ -187,7 +187,7 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra Inteligencia Artificial, Tecnologías de Código Abierto Charlas recientes: @@ -219,8 +219,8 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra Kubernetes, MLOps, GitOps, Cloud Native Charlas recientes: @@ -252,8 +252,8 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra Validación de Datos, Mejores Prácticas, Nuevas Tecnologías Charlas recientes: @@ -285,7 +285,7 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra Desarrollo Web, Portafolios, Python Charlas recientes: @@ -317,10 +317,10 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra DevOps, Docker, Kubernetes, CI/CD, AWS Charlas recientes: @@ -352,7 +352,7 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra NLP, Lenguas Indígenas, MLOps, Cultura Libre Charlas recientes: @@ -384,7 +384,7 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra Agentes de IA, Machine Learning, LangGraph, LLMs Charlas recientes: @@ -416,7 +416,7 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra Open Source, Ruby, Contribución Comunitaria Charlas recientes: @@ -448,7 +448,7 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra Machine Learning, Análisis de Datos, Algoritmos Estadísticos Charlas recientes: @@ -480,10 +480,10 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra Desarrollo Python, Análisis de Datos, Metaprogramación Charlas recientes: @@ -515,8 +515,8 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra Ingeniería de Datos, Procesamiento ETL, Big Data Charlas recientes: @@ -548,7 +548,7 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra FinTech, Performance, DevOps, Software Libre Charlas recientes: @@ -580,7 +580,7 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra Inteligencia Artificial, Machine Learning, Embeddings, Google Developer Expert Charlas recientes: @@ -612,7 +612,7 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra Core Python, Optimización, Concurrencia, GIL Charlas recientes: @@ -644,7 +644,7 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra Ingeniería de Software, Algoritmos, Resolución de Problemas Charlas recientes: @@ -676,7 +676,7 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra Extensiones LibreOffice, Automatización de Oficina Charlas recientes: @@ -708,7 +708,7 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra Seguridad Informática, PCI DSS, Cumplimiento Normativo Charlas recientes: @@ -725,7 +725,7 @@ Si te interesa compartir tu conocimiento con la comunidad Python CDMX, ¡no dude Enviar Propuesta de Charla - + Más Información diff --git a/docs/comunidad/sedes_faq.md b/docs/comunidad/sedes_faq.md index 40a17c8..3c84373 100644 --- a/docs/comunidad/sedes_faq.md +++ b/docs/comunidad/sedes_faq.md @@ -106,7 +106,7 @@ Lo coordinamos con gusto durante la planeación. **¡Sí!** Solo pedimos que sigan el mismo proceso que cualquier miembro de la comunidad: -[Ser Ponente](ponentes/#por-que-ser-ponente) +[Ser Ponente](ponentes#por-que-ser-ponente) **Registrar su propuesta** en [python-cdmx-charlas/issues](https://github.com/PythonMexico/python-cdmx-charlas/issues) para mantener el espíritu abierto y curado del contenido. diff --git a/docs/comunidad/voluntarios.md b/docs/comunidad/voluntarios.md index 096a5f0..f0cdade 100644 --- a/docs/comunidad/voluntarios.md +++ b/docs/comunidad/voluntarios.md @@ -84,7 +84,7 @@ Ser voluntario en Python CDMX te permite: Ver Voluntarios - Más Información + Más Información diff --git a/docs/index.md b/docs/index.md index 9e8ef2e..8c42272 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,8 +5,8 @@

#PythonCDMX es un grupo de personas interesadas en aprender y compartir su conocimiento sobre el lenguaje de programación Python. El objetivo es estar en contacto con más gente interesada en innovación y tecnología.

- Explorar charlas - Participa + Explorar charlas + Participa
@@ -18,14 +18,14 @@

Conoce a quienes hacen posible
Python CDMX!

- Voluntarios - Ponentes + Voluntarios + Ponentes

¡Únete a Nuestros Meetups!

Charlas técnicas, networking y aprendizaje colaborativo

- Ver Meetups + Ver Meetups
--- @@ -36,17 +36,17 @@

Ser Ponente

Comparte tu conocimiento con la comunidad. Charlas técnicas, casos de uso, mejores prácticas y más.

- Conoce Más + Conoce Más

Ser Voluntario

Ayuda a organizar eventos, gestionar redes sociales, o contribuir con el desarrollo del sitio web.

- Únete + Únete

Asistir

Participa en nuestros meetups, aprende de expertos y conecta con otros desarrolladores Python.

- Ver Eventos + Ver Eventos
diff --git a/docs/meetups/2023/index.md b/docs/meetups/2023/index.md index 8a3c9de..7e781c3 100644 --- a/docs/meetups/2023/index.md +++ b/docs/meetups/2023/index.md @@ -12,11 +12,11 @@ | **Fecha** | **Charla** | **Ponente** | **Lugar** | **Detalles** | |:---|:---|:---|:---|:---| -| **14 Noviembre 2023** | GitOps: Automatizando el despliegue de aplicaciones | Carlos Reyes | Wizeline México | [Ver detalles](202311-noviembre/) | -| **14 Noviembre 2023** | Historia de Python: De Guido van Rossum a la actualidad | Gustavo Vera | Wizeline México | [Ver detalles](202311-noviembre/) | -| **10 Octubre 2023** | Jupyter a Web: De notebooks a aplicaciones web | Gustavo Vera | Wizeline México | [Ver detalles](202310-octubre/) | -| **12 Septiembre 2023** | Metaprogramación en Python | David Sol | Wizeline México | [Ver detalles](202309-septiembre/) | -| **12 Septiembre 2023** | AWS AI: Servicios de IA en la nube | Gustavo Vera | Wizeline México | [Ver detalles](202309-septiembre/) | +| **14 Noviembre 2023** | GitOps: Automatizando el despliegue de aplicaciones | Carlos Reyes | Wizeline México | [Ver detalles](202311-noviembre) | +| **14 Noviembre 2023** | Historia de Python: De Guido van Rossum a la actualidad | Gustavo Vera | Wizeline México | [Ver detalles](202311-noviembre) | +| **10 Octubre 2023** | Jupyter a Web: De notebooks a aplicaciones web | Gustavo Vera | Wizeline México | [Ver detalles](202310-octubre) | +| **12 Septiembre 2023** | Metaprogramación en Python | David Sol | Wizeline México | [Ver detalles](202309-septiembre) | +| **12 Septiembre 2023** | AWS AI: Servicios de IA en la nube | Gustavo Vera | Wizeline México | [Ver detalles](202309-septiembre) | --- @@ -56,4 +56,4 @@ --- -¿Te gustaría aparecer aquí? Conoce a nuestros [ponentes y voluntarios reconocidos](../../comunidad/como-contribuir/). +¿Te gustaría aparecer aquí? Conoce a nuestros [ponentes y voluntarios reconocidos](../../comunidad/como-contribuir). diff --git a/docs/meetups/2024/index.md b/docs/meetups/2024/index.md index 39b65bf..d6fcac7 100644 --- a/docs/meetups/2024/index.md +++ b/docs/meetups/2024/index.md @@ -12,21 +12,21 @@ | **Fecha** | **Charla** | **Ponente** | **Lugar** | **Detalles** | |:---|:---|:---|:---|:---| -| **12 Noviembre 2024** | Mejora tu código: Evita anti-patrones en Python | Alejandro Lopez | Wizeline México | [Ver detalles](202411-noviembre/) | -| **12 Noviembre 2024** | Exactamente qué y (sobre todo) por qué ChatGPT | Hugo Ramírez | Wizeline México | [Ver detalles](202411-noviembre/) | -| **08 Octubre 2024** | Contribuir a Open Source | Alex Callejas | Wizeline México | [Ver detalles](202410-octubre/) | -| **10 Septiembre 2024** | Protocolos en Python | Diego Barriga | Wizeline México | [Ver detalles](202409-septiembre/) | -| **10 Septiembre 2024** | Guía Open Source | David Sol | Wizeline México | [Ver detalles](202409-septiembre/) | -| **13 Agosto 2024** | ETLs con Python | Gustavo Vera | Wizeline México | [Ver detalles](202408-agosto/) | -| **13 Agosto 2024** | GIL: Global Interpreter Lock | Fer Perales | Wizeline México | [Ver detalles](202408-agosto/) | -| **09 Julio 2024** | Regresión Lineal | Konstantin Spirin | Wizeline México | [Ver detalles](202407-julio/) | -| **09 Julio 2024** | Fonética con Python | Hugo Ramirez | Wizeline México | [Ver detalles](202407-julio/) | -| **11 Junio 2024** | Regresión Lineal | Geovanni Zepeda Martínez | Wizeline México | [Ver detalles](202406-junio/) | -| **14 Mayo 2024** | Pydantic | Charly Román | Wizeline México | [Ver detalles](202405-mayo/) | -| **09 Abril 2024** | Contenedores | David Sol | Wizeline México | [Ver detalles](202404-abril/) | -| **12 Marzo 2024** | Flask APIs | Alejandro López | Wizeline México | [Ver detalles](202403-marzo/) | -| **13 Febrero 2024** | Entornos Virtuales | Gustavo Vera | Wizeline México | [Ver detalles](202402-febrero/) | -| **09 Enero 2024** | PyPI | David Sol | Wizeline México | [Ver detalles](202401-enero/) | +| **12 Noviembre 2024** | Mejora tu código: Evita anti-patrones en Python | Alejandro Lopez | Wizeline México | [Ver detalles](202411-noviembre) | +| **12 Noviembre 2024** | Exactamente qué y (sobre todo) por qué ChatGPT | Hugo Ramírez | Wizeline México | [Ver detalles](202411-noviembre) | +| **08 Octubre 2024** | Contribuir a Open Source | Alex Callejas | Wizeline México | [Ver detalles](202410-octubre) | +| **10 Septiembre 2024** | Protocolos en Python | Diego Barriga | Wizeline México | [Ver detalles](202409-septiembre) | +| **10 Septiembre 2024** | Guía Open Source | David Sol | Wizeline México | [Ver detalles](202409-septiembre) | +| **13 Agosto 2024** | ETLs con Python | Gustavo Vera | Wizeline México | [Ver detalles](202408-agosto) | +| **13 Agosto 2024** | GIL: Global Interpreter Lock | Fer Perales | Wizeline México | [Ver detalles](202408-agosto) | +| **09 Julio 2024** | Regresión Lineal | Konstantin Spirin | Wizeline México | [Ver detalles](202407-julio) | +| **09 Julio 2024** | Fonética con Python | Hugo Ramirez | Wizeline México | [Ver detalles](202407-julio) | +| **11 Junio 2024** | Regresión Lineal | Geovanni Zepeda Martínez | Wizeline México | [Ver detalles](202406-junio) | +| **14 Mayo 2024** | Pydantic | Charly Román | Wizeline México | [Ver detalles](202405-mayo) | +| **09 Abril 2024** | Contenedores | David Sol | Wizeline México | [Ver detalles](202404-abril) | +| **12 Marzo 2024** | Flask APIs | Alejandro López | Wizeline México | [Ver detalles](202403-marzo) | +| **13 Febrero 2024** | Entornos Virtuales | Gustavo Vera | Wizeline México | [Ver detalles](202402-febrero) | +| **09 Enero 2024** | PyPI | David Sol | Wizeline México | [Ver detalles](202401-enero) | --- @@ -66,4 +66,4 @@ --- -¿Te gustaría aparecer aquí? Conoce a nuestros [ponentes y voluntarios reconocidos](../../comunidad/como-contribuir/). +¿Te gustaría aparecer aquí? Conoce a nuestros [ponentes y voluntarios reconocidos](../../comunidad/como-contribuir). diff --git a/docs/meetups/2025/index.md b/docs/meetups/2025/index.md index f3b5ee1..e085648 100644 --- a/docs/meetups/2025/index.md +++ b/docs/meetups/2025/index.md @@ -12,19 +12,19 @@ | **Fecha** | **Charla** | **Ponente** | **Lugar** | **Detalles** | |:---|:---|:---|:---|:---| -| **12 Agosto 2025** | Cómo preparar una ambiente de desarrollo con Python desde zero | Juan Guillermo Gómez | Jardin Chapultepec | [Ver detalles](202508-agosto/) | -| **08 Julio 2025** | Cómo preparar una ambiente de desarrollo con Python desde zero | David Sol | Clara | [Ver detalles](202507-julio/) | -| **10 Junio 2025** | Usando Python y software libre para crear nuevas herramientas: Traductor de voz español-inglés | Carlos Cesar Caballero | Wizeline México | [Ver detalles](202506-junio/) | -| **13 Mayo 2025** | Construyendo un paquete en Python y publicándolo en PyPI | Javier Novoa | Wizeline México | [Ver detalles](202505-mayo/) | -| **25 Abril 2025** | portafolio.py: Como hacer un portafolio web sin saber diseño web | Daniel Paredes | UNAM Facultad de Ciencias | [Ver detalles](202504-unam/) | -| **25 Abril 2025** | Programar en tiempos del Vibe-Coding | Charly Roman | UNAM Facultad de Ciencias | [Ver detalles](202504-unam/) | -| **08 Abril 2025** | El para que cosa de Quien. Kubernetes y AI | Carlos Reyes | Wizeline México | [Ver detalles](202504-abril/) | -| **11 Marzo 2025** | Mi Primer Agente de Inteligencia Artificial con Python | Erik Rivera | Wizeline México | [Ver detalles](202503-marzo/) | -| **11 Maro 2025** | Interfases gráficas con Pyside6 | David Sol | Wizeline México | [Ver detalles](202503-marzo/) | -| **11 Febrero 2025** | Lecciones del Advent of Code 2024 | Manuel Rábade | Wizeline México | [Ver detalles](202502-febrero/) | -| **11 Febrero 2025** | Embeddings: El lenguaje como las máquinas entienden el lenguaje humano | Juan Guillermo Gómez | Wizeline México | [Ver detalles](202502-febrero/) | -| **14 Enero 2025** | Crea extensiones para LibreOffice con Python | elMau (Mauricio B.) | Wizeline México | [Ver detalles](202501-enero/) | -| **14 Enero 2025** | Seguridad y cumplimiento de Python: Garantizar el cumplimiento de PCI DSS | Mauro Parra | Wizeline México | [Ver detalles](202501-enero/) | +| **12 Agosto 2025** | Cómo preparar una ambiente de desarrollo con Python desde zero | Juan Guillermo Gómez | Jardin Chapultepec | [Ver detalles](202508-agosto) | +| **08 Julio 2025** | Cómo preparar una ambiente de desarrollo con Python desde zero | David Sol | Clara | [Ver detalles](202507-julio) | +| **10 Junio 2025** | Usando Python y software libre para crear nuevas herramientas: Traductor de voz español-inglés | Carlos Cesar Caballero | Wizeline México | [Ver detalles](202506-junio) | +| **13 Mayo 2025** | Construyendo un paquete en Python y publicándolo en PyPI | Javier Novoa | Wizeline México | [Ver detalles](202505-mayo) | +| **25 Abril 2025** | portafolio.py: Como hacer un portafolio web sin saber diseño web | Daniel Paredes | UNAM Facultad de Ciencias | [Ver detalles](202504-unam) | +| **25 Abril 2025** | Programar en tiempos del Vibe-Coding | Charly Roman | UNAM Facultad de Ciencias | [Ver detalles](202504-unam) | +| **08 Abril 2025** | El para que cosa de Quien. Kubernetes y AI | Carlos Reyes | Wizeline México | [Ver detalles](202504-abril) | +| **11 Marzo 2025** | Mi Primer Agente de Inteligencia Artificial con Python | Erik Rivera | Wizeline México | [Ver detalles](202503-marzo) | +| **11 Maro 2025** | Interfases gráficas con Pyside6 | David Sol | Wizeline México | [Ver detalles](202503-marzo) | +| **11 Febrero 2025** | Lecciones del Advent of Code 2024 | Manuel Rábade | Wizeline México | [Ver detalles](202502-febrero) | +| **11 Febrero 2025** | Embeddings: El lenguaje como las máquinas entienden el lenguaje humano | Juan Guillermo Gómez | Wizeline México | [Ver detalles](202502-febrero) | +| **14 Enero 2025** | Crea extensiones para LibreOffice con Python | elMau (Mauricio B.) | Wizeline México | [Ver detalles](202501-enero) | +| **14 Enero 2025** | Seguridad y cumplimiento de Python: Garantizar el cumplimiento de PCI DSS | Mauro Parra | Wizeline México | [Ver detalles](202501-enero) | --- @@ -65,4 +65,4 @@ --- -¿Te gustaría aparecer aquí? Conoce a nuestros [ponentes y voluntarios reconocidos](../../comunidad/como-contribuir/). +¿Te gustaría aparecer aquí? Conoce a nuestros [ponentes y voluntarios reconocidos](../../comunidad/como-contribuir). diff --git a/scripts/check_links.py b/scripts/check_links.py index 07787c7..045aa9e 100644 --- a/scripts/check_links.py +++ b/scripts/check_links.py @@ -165,6 +165,8 @@ def main(): # Find all markdown files for md_file in docs_dir.rglob("*.md"): + if "README.md" in md_file.name: + continue try: with open(md_file, "r", encoding="utf-8") as f: content = f.read() From 45489a1f016620fcc9172b978875a57516c6b375 Mon Sep 17 00:00:00 2001 From: "Erick G. Islas-Osuna" Date: Fri, 17 Oct 2025 10:45:40 -0600 Subject: [PATCH 2/2] feat: utiliza iconos incluidos en Material for MKDocs --- STYLE_GUIDE.md | 2 +- docs/about.md | 18 +- docs/components/community-links.md | 17 +- docs/components/quick-navigation.md | 46 +- docs/comunidad/alianzas.md | 205 -- docs/comunidad/como-contribuir.md | 48 +- docs/comunidad/comunidades.md | 10 +- docs/comunidad/ponentes.md | 47 +- docs/comunidad/sedes.md | 18 +- docs/comunidad/sedes_faq.md | 22 +- docs/comunidad/voluntarios.md | 51 +- docs/css/custom.css | 2919 ++++++++++++------------ docs/index.md | 71 +- docs/meetups/2023/202309-septiembre.md | 2 +- docs/meetups/2023/202310-octubre.md | 2 +- docs/meetups/2023/202311-noviembre.md | 2 +- docs/meetups/2023/index.md | 6 +- docs/meetups/2024/202401-enero.md | 2 +- docs/meetups/2024/202402-febrero.md | 2 +- docs/meetups/2024/202403-marzo.md | 2 +- docs/meetups/2024/202404-abril.md | 2 +- docs/meetups/2024/202405-mayo.md | 2 +- docs/meetups/2024/202406-junio.md | 2 +- docs/meetups/2024/202407-julio.md | 2 +- docs/meetups/2024/202408-agosto.md | 2 +- docs/meetups/2024/202409-septiembre.md | 2 +- docs/meetups/2024/202410-octubre.md | 2 +- docs/meetups/2024/202411-noviembre.md | 2 +- docs/meetups/2024/index.md | 6 +- docs/meetups/2025/202501-enero.md | 2 +- docs/meetups/2025/202502-febrero.md | 2 +- docs/meetups/2025/202503-marzo.md | 2 +- docs/meetups/2025/202504-abril.md | 2 +- docs/meetups/2025/202504-unam.md | 2 +- docs/meetups/2025/202505-mayo.md | 2 +- docs/meetups/2025/202506-junio.md | 2 +- docs/meetups/2025/202507-julio.md | 2 +- docs/meetups/2025/202508-agosto.md | 2 +- docs/meetups/2025/index.md | 6 +- docs/meetups/index.md | 4 +- mkdocs.yml | 4 - 41 files changed, 1671 insertions(+), 1875 deletions(-) delete mode 100644 docs/comunidad/alianzas.md diff --git a/STYLE_GUIDE.md b/STYLE_GUIDE.md index 2a43e1f..d2b9506 100644 --- a/STYLE_GUIDE.md +++ b/STYLE_GUIDE.md @@ -241,7 +241,7 @@ extra_css:

Ser Ponente

Comparte tu conocimiento con la comunidad Python CDMX...

- Proponer Charla + Proponer Charla

Ser Voluntario

diff --git a/docs/about.md b/docs/about.md index 9848b4a..577a72c 100644 --- a/docs/about.md +++ b/docs/about.md @@ -2,7 +2,7 @@ Python CDMX Logo
-# Sobre Python CDMX +# Sobre Python CDMX :fontawesome-solid-info-circle:
Conectando la comunidad Python en la Ciudad de México @@ -10,7 +10,7 @@ --- -## Nuestra Historia +## :fontawesome-solid-heart: Nuestra Historia **Python CDMX** nació de la pasión por compartir conocimiento y conectar desarrolladores Python en la Ciudad de México. Desde nuestros inicios, hemos organizado meetups mensuales donde expertos y entusiastas se reúnen para aprender, compartir experiencias y construir relaciones profesionales. @@ -18,16 +18,16 @@ Nuestra comunidad ha crecido significativamente, pasando de pequeños grupos de --- -## Nuestra Cultura +## :fontawesome-solid-star: Nuestra Cultura -### Valores Fundamentales +### :fontawesome-solid-handshake: Valores Fundamentales - **Colaboración**: Creemos en el poder del trabajo en equipo y el intercambio de conocimientos - **Inclusividad**: Nuestra comunidad es abierta y acogedora para todos los niveles de experiencia - **Innovación**: Fomentamos la exploración de nuevas tecnologías y enfoques - **Mentoría**: Promovemos el aprendizaje entre pares y el desarrollo profesional -### Filosofía +### :fontawesome-solid-lightbulb: Filosofía > *"Compartir conocimiento es multiplicar sabiduría"* @@ -35,17 +35,17 @@ Creemos que el verdadero crecimiento profesional viene de la colaboración y el --- -## Formas de Participación +## :fontawesome-solid-users: Formas de Participación -### Ser Ponente +### :fontawesome-solid-microphone: Ser Ponente Comparte tu experiencia y conocimiento con la comunidad. Consulta nuestra [guía para ponentes](comunidad/ponentes) para más información. -### Ser Voluntario +### :fontawesome-solid-hands-helping: Ser Voluntario Ayuda a organizar eventos, gestionar redes sociales o contribuir con el desarrollo del sitio web. Conoce más en [nuestra página de voluntarios](comunidad/voluntarios). -### Asistir a Meetups +### :fontawesome-solid-calendar: Asistir a Meetups Participa en nuestros eventos mensuales para aprender, conectar y crecer profesionalmente. diff --git a/docs/components/community-links.md b/docs/components/community-links.md index 9a840bf..9a6af83 100644 --- a/docs/components/community-links.md +++ b/docs/components/community-links.md @@ -1,10 +1,9 @@ -## Conecta con Nuestra Comunidad +## :fontawesome-solid-link: Conecta con Nuestra Comunidad - +[:fontawesome-brands-telegram: Telegram](https://t.me/PythonCDMX){ .community-link .telegram } +[:fontawesome-brands-meetup: Meetup](https://www.meetup.com/python-mexico){ .community-link .meetup } +[:fontawesome-brands-youtube: YouTube](https://www.youtube.com/@PythonMexico){ .community-link .youtube } +[:fontawesome-brands-github: GitHub](https://github.com/PythonMexico/pythonCDMX){ .community-link .github } +[:fontawesome-brands-instagram: Instagram](https://www.instagram.com/pythoncdmx/){ .community-link .instagram } +[:fontawesome-brands-linkedin: LinkedIn](https://www.linkedin.com/groups/13126454/){ .community-link .linkedin } +{ .community-links } diff --git a/docs/components/quick-navigation.md b/docs/components/quick-navigation.md index e1e42f1..268ea9d 100644 --- a/docs/components/quick-navigation.md +++ b/docs/components/quick-navigation.md @@ -1,36 +1,12 @@ -

Continúa Explorando

+## :fontawesome-solid-arrow-right: Continúa Explorando { .quick-navigation-title } - +[:fontawesome-solid-calendar: Meetups 2025](/meetups/2025/){ .btn-nav } +[:fontawesome-solid-history: Meetups 2024](/meetups/2024){ .btn-nav } +[:fontawesome-solid-archive: Archivo Completo](/meetups){ .btn-nav } +[:fontawesome-solid-microphone: Ser Ponente](/comunidad/ponentes){ .btn-nav } +[:fontawesome-solid-hands-helping: Ser Voluntario](/comunidad/voluntarios){ .btn-nav } +[:fontawesome-solid-heart: Cómo Contribuir](/comunidad/como-contribuir){ .btn-nav } +[:fontawesome-solid-users: Ver Ponentes](/comunidad/ponentes){ .btn-nav } +[:fontawesome-solid-handshake: Alianzas](/comunidad/alianzas){ .btn-nav } +[:fontawesome-solid-info-circle: Sobre Nosotros](/about){ .btn-nav } +{ .quick-navigation } diff --git a/docs/comunidad/alianzas.md b/docs/comunidad/alianzas.md deleted file mode 100644 index a8fa4eb..0000000 --- a/docs/comunidad/alianzas.md +++ /dev/null @@ -1,205 +0,0 @@ -
- Python CDMX Logo -
- -# Alianzas - -
- Comunidades y empresas que apoyan Python CDMX -
- ---- - -## Nuestras Alianzas - -Python CDMX trabaja en colaboración con diversas comunidades y empresas para crear un ecosistema más fuerte y diverso. Estas alianzas nos permiten: - -- **Compartir recursos** y experiencias -- **Organizar eventos conjuntos** de mayor impacto -- **Expandir nuestra red** de contactos y oportunidades -- **Crear sinergias** que benefician a toda la comunidad - ---- - -## Comunidades Amigas - -### Comunidades Python - - - -### Otras Comunidades - - - ---- - -## Empresas Aliadas - -### Empresas Tecnológicas - - - ---- - -## Beneficios de las Alianzas - -### Para la Comunidad - -- **Eventos más grandes** y diversos -- **Recursos compartidos** entre comunidades -- **Oportunidades de networking** expandidas -- **Contenido más rico** y variado - -### Para las Empresas - -- **Visibilidad** en la comunidad tech -- **Acceso a talento** calificado -- **Branding** positivo y asociación -- **Networking** con desarrolladores - -### Para los Miembros - -- **Más eventos** y oportunidades -- **Redes profesionales** expandidas -- **Recursos adicionales** y beneficios -- **Experiencias únicas** de colaboración - ---- - ---8<-- "components/community-links.md" - ---- - ---8<-- "components/quick-navigation.md" - ---- diff --git a/docs/comunidad/como-contribuir.md b/docs/comunidad/como-contribuir.md index 40dd917..47e3f4b 100644 --- a/docs/comunidad/como-contribuir.md +++ b/docs/comunidad/como-contribuir.md @@ -2,7 +2,7 @@ Python CDMX Logo
-# Cómo Contribuir +# Cómo Contribuir :fontawesome-solid-hands-helping:
Guía completa para contribuir a Python CDMX @@ -10,7 +10,7 @@ --- -## ¿Por Qué Contribuir? +## :fontawesome-solid-heart: ¿Por Qué Contribuir? Contribuir a Python CDMX te permite: @@ -22,33 +22,33 @@ Contribuir a Python CDMX te permite: --- -## Formas de Contribuir +## :fontawesome-solid-route: Formas de Contribuir -### Ser Ponente +### :fontawesome-solid-microphone: Ser Ponente Comparte tu conocimiento con la comunidad a través de charlas técnicas, casos de uso o introducciones a nuevas tecnologías. **Más información:** [Ser Ponente](ponentes) -### Ser Voluntario +### :fontawesome-solid-hands-helping: Ser Voluntario Ayuda a organizar eventos, gestionar redes sociales, o contribuir con el desarrollo del sitio web. **Más información:** [Ser Voluntario](voluntarios) -### Desarrollo Web +### :fontawesome-solid-code: Desarrollo Web Contribuye al mantenimiento y mejora de nuestro sitio web, herramientas y automatizaciones. **Tecnologías:** MkDocs, Python, HTML/CSS, JavaScript -### Contenido +### :fontawesome-solid-share-alt: Contenido Escribe artículos, documentación, o crea contenido para nuestras redes sociales. **Tipos:** Tutoriales, casos de uso, noticias, recursos -### Alianzas +### :fontawesome-solid-handshake: Alianzas Ayuda a establecer y mantener relaciones con otras comunidades y empresas. @@ -56,27 +56,27 @@ Ayuda a establecer y mantener relaciones con otras comunidades y empresas. --- -## Proceso de Contribución +## :fontawesome-solid-clipboard-list: Proceso de Contribución -### 1. Identifica tu Área +### 1. :fontawesome-solid-search: Identifica tu Área - Revisa las [formas de contribuir](como-contribuir#formas-de-contribuir) - Considera tus habilidades e intereses - Evalúa tu disponibilidad de tiempo -### 2. Contacta con Nosotros +### 2. :fontawesome-solid-comments: Contacta con Nosotros - Envía un mensaje a través de nuestros canales oficiales - Participa en [nuestros meetups](../meetups) para conocernos - Asiste a sesiones informativas -### 3. Comienza Pequeño +### 3. :fontawesome-solid-rocket: Comienza Pequeño - Empieza con contribuciones pequeñas - Aprende sobre nuestros procesos - Construye relaciones con el equipo -### 4. Crece y Lidera +### 4. :fontawesome-solid-star: Crece y Lidera - Toma más responsabilidades - Ayuda a otros nuevos contribuyentes @@ -84,16 +84,16 @@ Ayuda a establecer y mantener relaciones con otras comunidades y empresas. --- -## Herramientas y Recursos +## :fontawesome-solid-tools: Herramientas y Recursos -### Desarrollo +### :fontawesome-solid-code: Desarrollo - **GitHub**: [Repositorio principal](https://github.com/PythonMexico/pythonCDMX) - **MkDocs**: Documentación del sitio - **Python**: Scripts y automatizaciones - **Docker**: Entorno de desarrollo -### Comunicación +### :fontawesome-solid-share-alt: Comunicación - **Telegram**: Canal principal de comunicación - **Meetup**: Gestión de eventos @@ -102,29 +102,29 @@ Ayuda a establecer y mantener relaciones con otras comunidades y empresas. --- -## Beneficios de Contribuir +## :fontawesome-solid-gift: Beneficios de Contribuir -### Reconocimiento +### :fontawesome-solid-certificate: Reconocimiento - Certificados de participación - Menciones en eventos y redes sociales - Referencias profesionales - Reconocimiento público -### Networking +### :fontawesome-solid-network-wired: Networking - Conexiones con expertos del sector - Oportunidades de colaboración - Red profesional expandida -### Desarrollo Profesional +### :fontawesome-solid-graduation-cap: Desarrollo Profesional - Habilidades de liderazgo - Experiencia en gestión de proyectos - Conocimientos técnicos actualizados - Portfolio de contribuciones -### Satisfacción Personal +### :fontawesome-solid-heart: Satisfacción Personal - Impacto positivo en la comunidad - Sentido de pertenencia @@ -133,16 +133,16 @@ Ayuda a establecer y mantener relaciones con otras comunidades y empresas. --- -## Nuestro Equipo +## :fontawesome-solid-users: Nuestro Equipo -### Coordinadores Principales +### :fontawesome-solid-star: Coordinadores Principales - **Coordinación General**: Gestión integral de la comunidad - **Eventos**: Organización de meetups y actividades - **Comunicación**: Gestión de canales y contenido - **Alianzas**: Relaciones con comunidades y empresas -### Voluntarios Activos +### :fontawesome-solid-users: Voluntarios Activos - **Logística**: Preparación y supervisión de eventos - **Comunicación**: Gestión de redes sociales y difusión diff --git a/docs/comunidad/comunidades.md b/docs/comunidad/comunidades.md index 11cab20..dcfa9bb 100644 --- a/docs/comunidad/comunidades.md +++ b/docs/comunidad/comunidades.md @@ -4,9 +4,9 @@ --- -## Comunidades Amigas +## :fontawesome-solid-users: Comunidades Amigas -### Comunidades Python en México +### :fontawesome-solid-star: Comunidades Python en México
@@ -48,7 +48,7 @@
-### Otras Comunidades +### :fontawesome-solid-code: Otras Comunidades
@@ -127,13 +127,13 @@ --- -## Empresas anfitrionas +## :fontawesome-solid-building: Empresas anfitrionas
Estas empresas han abierto sus puertas para que la comunidad Python CDMX crezca
-### Gracias por ser sede +### :fontawesome-solid-star: Gracias por ser sede
diff --git a/docs/comunidad/ponentes.md b/docs/comunidad/ponentes.md index ba113c9..be59876 100644 --- a/docs/comunidad/ponentes.md +++ b/docs/comunidad/ponentes.md @@ -2,7 +2,7 @@ Python CDMX Logo
-# Ser Ponente +# Ser Ponente :fontawesome-solid-microphone: --- @@ -10,7 +10,7 @@ Comparte tu conocimiento con la comunidad Python CDMX
-## ¿Por Qué Ser Ponente? +## :fontawesome-solid-heart: ¿Por Qué Ser Ponente? Ser ponente en Python CDMX te ofrece una oportunidad única para: @@ -22,21 +22,21 @@ Ser ponente en Python CDMX te ofrece una oportunidad única para: --- -## Tipos de Charlas +## :fontawesome-solid-lightbulb: Tipos de Charlas -### Charlas Técnicas +### :fontawesome-solid-code: Charlas Técnicas - **Duración**: 20-30 minutos - **Contenido**: Tecnologías Python, frameworks, librerías, mejores prácticas - **Ejemplos**: Django, Flask, FastAPI, Pandas, NumPy, Machine Learning -### Casos de Uso +### :fontawesome-solid-chart-line: Casos de Uso - **Duración**: 25-35 minutos - **Contenido**: Proyectos reales, experiencias en producción, lecciones aprendidas - **Ejemplos**: Migración de sistemas, optimización de performance, arquitecturas -### Charlas Introductorias +### :fontawesome-solid-rocket: Charlas Introductorias - **Duración**: 15-25 minutos - **Contenido**: Conceptos básicos, introducción a nuevas tecnologías @@ -44,27 +44,27 @@ Ser ponente en Python CDMX te ofrece una oportunidad única para: --- -## Proceso para Ser Ponente +## :fontawesome-solid-clipboard-list: Proceso para Ser Ponente -### 1. Propón tu Charla +### 1. :fontawesome-solid-pencil: Propón tu Charla - Envía tu propuesta a través de nuestros canales de comunicación - Incluye título, descripción, duración y nivel de audiencia - Menciona cualquier requisito técnico especial -### 2. Revisión y Feedback +### 2. :fontawesome-solid-comments: Revisión y Feedback - Nuestro equipo revisará tu propuesta - Te proporcionaremos feedback y sugerencias - Confirmaremos la fecha y logística -### 3. Preparación +### 3. :fontawesome-solid-calendar: Preparación - Recibirás recursos y guías para preparar tu presentación - Podrás hacer una prueba técnica si lo deseas - Te conectaremos con otros ponentes si es un evento múltiple -### 4. Presentación +### 4. :fontawesome-solid-microphone: Presentación - Llegada temprana para configuración técnica - Presentación en un ambiente acogedor y colaborativo @@ -72,27 +72,27 @@ Ser ponente en Python CDMX te ofrece una oportunidad única para: --- -## Beneficios para Ponentes +## :fontawesome-solid-gift: Beneficios para Ponentes -### Reconocimiento +### :fontawesome-solid-certificate: Reconocimiento - Certificado de participación como ponente - Mención especial en nuestras redes sociales - Inclusión en nuestro directorio de ponentes -### Networking +### :fontawesome-solid-network-wired: Networking - Acceso prioritario a eventos especiales - Conexión directa con otros expertos del sector - Oportunidades de colaboración en proyectos -### Recursos +### :fontawesome-solid-book: Recursos - Acceso a materiales y recursos de presentación - Feedback detallado para mejorar futuras charlas - Posibilidad de grabar tu presentación -## Ponentes de Python CDMX +## :fontawesome-solid-star: Ponentes de Python CDMX Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra comunidad: @@ -716,20 +716,13 @@ Conoce a algunos de los ponentes que han compartido su conocimiento con nuestra --- -## ¿Quieres Ser Parte de Esta Lista? +## :fontawesome-solid-plus-circle: ¿Quieres Ser Parte de Esta Lista? Si te interesa compartir tu conocimiento con la comunidad Python CDMX, ¡no dudes en contactarnos! - +[:fontawesome-solid-paper-plane: Enviar Propuesta de Charla](https://github.com/PythonMexico/pythonCDMX/issues){ .btn-action .primary } +[:fontawesome-solid-info-circle: Más Información](/comunidad/como-contribuir){ .btn-action .secondary } +{ .action-buttons } --- diff --git a/docs/comunidad/sedes.md b/docs/comunidad/sedes.md index 46e4c71..def0858 100644 --- a/docs/comunidad/sedes.md +++ b/docs/comunidad/sedes.md @@ -1,4 +1,4 @@ -# Sedes +# Sedes :fontawesome-solid-map-marker-alt:
Buscamos SEDE pythonCDMX @@ -12,11 +12,11 @@ ¿Trabajas en una empresa tech, un coworking o tienes acceso a un espacio donde podríamos reunir a la comunidad Python CDMX? En 2025 seguimos creciendo y queremos llevar nuestros meetups a nuevos espacios que compartan el entusiasmo -por el conocimiento abierto, la innovación y el poder de Python . +por el conocimiento abierto, la innovación y el poder de Python :fontawesome-brands-python:. --- -## ¿Por qué ser sede? +## :fontawesome-solid-lightbulb: ¿Por qué ser sede? Organizar un meetup de Python CDMX en tu espacio es una gran oportunidad para: @@ -27,7 +27,7 @@ Organizar un meetup de Python CDMX en tu espacio es una gran oportunidad para: --- -## ¿Qué necesitas para ser sede? +## :fontawesome-solid-handshake: ¿Qué necesitas para ser sede? - Espacio para 40 a 60 personas - Proyector o pantalla con entrada HDMI @@ -39,7 +39,7 @@ Opcionalmente puedes ofrecer snacks, bebidas, o sumarte con trivias, regalos o s --- -## ¿Cómo es un meetup típico? +## :fontawesome-solid-calendar-alt: ¿Cómo es un meetup típico? Duración: 3 a 3.5 horas Inicio: 18:30 hrs @@ -56,7 +56,7 @@ Fin: 21:30–22:00 hrs --- -## ¿Qué fechas tenemos disponibles? +## :fontawesome-solid-calendar-check: ¿Qué fechas tenemos disponibles? Organizamos nuestros meetups el **segundo martes de cada mes**. @@ -85,12 +85,12 @@ Organizamos nuestros meetups el **segundo martes de cada mes**. --- -## ¿Y si quiero participar? +## :fontawesome-solid-comments: ¿Y si quiero participar? ¡Nos encantaría contar contigo! Puedes escribirnos a: - [info@pythoncdmx.org](mailto:info@pythoncdmx.org) +:fontawesome-solid-envelope: [info@pythoncdmx.org](mailto:info@pythoncdmx.org) También puedes comentar en nuestras publicaciones o enviarnos DM si viste la convocatoria en redes. @@ -99,7 +99,7 @@ También puedes comentar en nuestras publicaciones o enviarnos DM si viste la co > Ser sede de un meetup es más que prestar un espacio. Es apoyar la construcción de comunidad, > compartir conocimiento y sumar al crecimiento tech en México. -¡Gracias por considerar ser parte de esta aventura Pythonista! +¡Gracias por considerar ser parte de esta aventura Pythonista! :fontawesome-brands-python::fontawesome-solid-star: --- diff --git a/docs/comunidad/sedes_faq.md b/docs/comunidad/sedes_faq.md index 3c84373..dfed165 100644 --- a/docs/comunidad/sedes_faq.md +++ b/docs/comunidad/sedes_faq.md @@ -2,7 +2,7 @@ Python CDMX Logo
-# FAQ Sedes +# FAQ Sedes :fontawesome-solid-question-circle:
Preguntas frecuentes sobre ser sede de Python CDMX @@ -10,7 +10,7 @@ --- -## Logística del Evento +## :fontawesome-solid-clock: Logística del Evento ### ¿Cuánto tiempo dura el evento? Entre 3 y 3.5 horas. Generalmente de **18:30 a 22:00 hrs**. @@ -45,7 +45,7 @@ Sí, aquí un ejemplo típico: --- -## Requerimientos Técnicos +## :fontawesome-solid-desktop: Requerimientos Técnicos ### ¿Qué equipo A/V se necesita? **Esencial:** @@ -71,7 +71,7 @@ Sí, aquí un ejemplo típico: --- -## Gestión de Asistentes +## :fontawesome-solid-users: Gestión de Asistentes ### ¿Quién maneja el registro de asistentes? **Nosotros** lo gestionamos desde [Meetup.com](https://www.meetup.com/python-mexico/). @@ -90,7 +90,7 @@ Sí, aquí un ejemplo típico: --- -## Participación de la Empresa Sede +## :fontawesome-solid-handshake: Participación de la Empresa Sede ### ¿Debe seguirse alguna guía de branding? **No es obligatorio**. Si la empresa desea: @@ -108,7 +108,7 @@ Lo coordinamos con gusto durante la planeación. [Ser Ponente](ponentes#por-que-ser-ponente) - **Registrar su propuesta** en [python-cdmx-charlas/issues](https://github.com/PythonMexico/python-cdmx-charlas/issues) +:fontawesome-brands-github: **Registrar su propuesta** en [python-cdmx-charlas/issues](https://github.com/PythonMexico/python-cdmx-charlas/issues) para mantener el espíritu abierto y curado del contenido. ### ¿La empresa puede ofrecer snacks o bebidas? @@ -120,7 +120,7 @@ para mantener el espíritu abierto y curado del contenido. --- -## Preparación del Espacio +## :fontawesome-solid-tools: Preparación del Espacio ### ¿Cómo debe organizarse el espacio? **Recomendaciones basadas en experiencia:** @@ -151,7 +151,7 @@ para mantener el espíritu abierto y curado del contenido. --- -## Timeline y Coordinación +## :fontawesome-solid-calendar-check: Timeline y Coordinación ### ¿Cuándo se define todo? **3-4 semanas antes:** @@ -174,7 +174,7 @@ para mantener el espíritu abierto y curado del contenido. - Lista final de asistentes - Setup del espacio y equipo -- ¡Evento! +- ¡Evento! :fontawesome-brands-python: ### ¿Qué pasa después del evento? @@ -185,7 +185,7 @@ para mantener el espíritu abierto y curado del contenido. --- -## Otras Preguntas Comunes +## :fontawesome-solid-question: Otras Preguntas Comunes ### ¿Hay restricciones de horario? Somos flexibles, pero el formato típico es **martes de 18:30 a 22:00**. @@ -205,7 +205,7 @@ Podemos ajustarnos a las necesidades del venue. - **Oportunidad** de participar en el crecimiento del ecosistema tech mexicano ### ¿Cómo contactarlos para ser sede? - [info@pythoncdmx.org](mailto:info@pythoncdmx.org) +:fontawesome-solid-envelope: [info@pythoncdmx.org](mailto:info@pythoncdmx.org) También puedes comentar en nuestras publicaciones o enviarnos DM en redes sociales. diff --git a/docs/comunidad/voluntarios.md b/docs/comunidad/voluntarios.md index f0cdade..2828502 100644 --- a/docs/comunidad/voluntarios.md +++ b/docs/comunidad/voluntarios.md @@ -7,7 +7,7 @@ --- -## ¿Por Qué Ser Voluntario? +## :fontawesome-solid-heart: ¿Por Qué Ser Voluntario? Ser voluntario en Python CDMX te permite: @@ -19,27 +19,27 @@ Ser voluntario en Python CDMX te permite: --- -## Áreas de Participación +## :fontawesome-solid-tasks: Áreas de Participación -### Organización de Eventos +### :fontawesome-solid-users: Organización de Eventos - **Coordinación de meetups** mensuales - **Gestión de espacios** y logística - **Coordinación con ponentes** y sponsors - **Organización de eventos especiales** -### Soporte Técnico +### :fontawesome-solid-tools: Soporte Técnico - **Configuración de equipos** y sistemas - **Soporte durante eventos** (audio, video, streaming) - **Mantenimiento de plataformas** digitales - **Desarrollo de herramientas** para la comunidad -### Comunicaciones +### :fontawesome-solid-bullhorn: Comunicaciones - **Gestión de redes sociales** y canales digitales - **Creación de contenido** promocional - **Comunicación con miembros** y partners - **Marketing digital** y difusión -### Mentoría y Educación +### :fontawesome-solid-chalkboard-teacher: Mentoría y Educación - **Apoyo a nuevos miembros** de la comunidad - **Organización de workshops** y talleres - **Mentoría técnica** para desarrolladores @@ -47,7 +47,7 @@ Ser voluntario en Python CDMX te permite: --- -## Proceso de Incorporación +## :fontawesome-solid-clipboard-list: Proceso de Incorporación 1. **Aplicación inicial** a través de nuestro formulario 2. **Entrevista** con el equipo organizador @@ -57,7 +57,7 @@ Ser voluntario en Python CDMX te permite: --- -## Compromiso de Tiempo +## :fontawesome-solid-clock: Compromiso de Tiempo - **Mínimo:** 5-10 horas por mes - **Flexibilidad:** Horarios adaptables a tu disponibilidad @@ -66,7 +66,7 @@ Ser voluntario en Python CDMX te permite: --- -## Beneficios +## :fontawesome-solid-gift: Beneficios - **Networking** con profesionales del sector - **Desarrollo de habilidades** de liderazgo @@ -75,20 +75,12 @@ Ser voluntario en Python CDMX te permite: - **Referencias** profesionales - **Experiencia** en gestión de comunidades - - +[:fontawesome-solid-paper-plane: Aplicar como Voluntario](#contact){ .btn-action .primary } +[:fontawesome-solid-star: Ver Voluntarios](#voluntarios-de-python-cdmx){ .btn-action .secondary } +[Más Información](/comunidad/como-contribuir){ .btn-action .outline } +{.action-buttons } -## Voluntarios de Python CDMX +## :fontawesome-solid-star: Voluntarios de Python CDMX Conoce a algunos de los voluntarios que hacen posible que Python CDMX funcione: @@ -528,20 +520,13 @@ Conoce a algunos de los voluntarios que hacen posible que Python CDMX funcione: --- -## ¿Quieres Ser Parte de Nuestro Equipo? +## :fontawesome-solid-plus-circle: ¿Quieres Ser Parte de Nuestro Equipo? Si te interesa contribuir al crecimiento de la comunidad Python CDMX, ¡únete a nuestro equipo de voluntarios! - +[:fontawesome-solid-paper-plane: Aplicar como Voluntario](https://github.com/PythonMexico/pythonCDMX/issues){ .btn-action .primary } +[:fontawesome-solid-info-circle: Más Información](/comunidad/como-contribuir){ .btn-action .secondary } +{ .action-buttons } --- diff --git a/docs/css/custom.css b/docs/css/custom.css index 12941d0..074f7fc 100644 --- a/docs/css/custom.css +++ b/docs/css/custom.css @@ -20,1484 +20,1527 @@ - Media queries responsivas (consolidados) ============================================================================= */ - @import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css'); +@import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"); - /* ----------------------------------------------------------------------------- +/* ----------------------------------------------------------------------------- VARIABLES CSS PERSONALIZADAS ----------------------------------------------------------------------------- */ - :root { +:root { /* Material Design Variables */ - --md-primary-fg-color--lighter: #b3d0c6; - --md-primary-fg-color--light: #4d927a; - --md-primary-fg-color: #006341; - --md-primary-fg-color--dark: #004f34; - --md-primary-fg-color--darker: #003221; - --md-accent-fg-color--light: #4d927a; - --md-accent-fg-color: #006341; - --md-accent-fg-color--dark: #004f34; - --md-accent-bg-color: #ffffff; - /* Radios y espaciado */ - --button-radius: 3.125rem; - --card-radius: 0.75rem; - - /* Colores de redes sociales */ - --telegram-color: #0088cc; - --meetup-color: #ed1c40; - --youtube-color: #ff0000; - --github-color: #333333; - --instagram-color: #e4405f; - --linkedin-color: #0077b5; - - /* Colores de años y especialización */ - --year-2024-color: #2196F3; - --year-2024-hover: #1976D2; - --year-2023-color: #FF9800; - --year-2023-hover: #F57C00; - - /* Colores de badges */ - --badge-ambassador: #2E7D32; - --badge-organizer: #1565C0; - --badge-production: #E65100; - --badge-host: #6A1B9A; - --badge-technical: #37474F; - --badge-support: #3E2723; - --badge-global: #AD1457; - --badge-strategic: #283593; - - /* Transiciones estándar */ - --transition-base: all 0.3s ease; - --transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); - } - - .pygreen { - color: var(--md-primary-fg-color); - font-weight: 400; - } - - /* ----------------------------------------------------------------------------- + --md-primary-fg-color--lighter: #b3d0c6; + --md-primary-fg-color--light: #4d927a; + --md-primary-fg-color: #006341; + --md-primary-fg-color--dark: #004f34; + --md-primary-fg-color--darker: #003221; + --md-accent-fg-color--light: #4d927a; + --md-accent-fg-color: #006341; + --md-accent-fg-color--dark: #004f34; + --md-accent-bg-color: #ffffff; + /* Radios y espaciado */ + --button-radius: 3.125rem; + --card-radius: 0.75rem; + + /* Colores de redes sociales */ + --telegram-color: #0088cc; + --meetup-color: #ed1c40; + --youtube-color: #ff0000; + --github-color: #333333; + --instagram-color: #e4405f; + --linkedin-color: #0077b5; + + /* Colores de años y especialización */ + --year-2024-color: #2196f3; + --year-2024-hover: #1976d2; + --year-2023-color: #ff9800; + --year-2023-hover: #f57c00; + + /* Colores de badges */ + --badge-ambassador: #2e7d32; + --badge-organizer: #1565c0; + --badge-production: #e65100; + --badge-host: #6a1b9a; + --badge-technical: #37474f; + --badge-support: #3e2723; + --badge-global: #ad1457; + --badge-strategic: #283593; + + /* Transiciones estándar */ + --transition-base: all 0.3s ease; + --transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); +} + +.pygreen { + color: var(--md-primary-fg-color); + font-weight: 400; +} + +.text-align-center { + text-align: center; +} + +.subtitle { + font-size: 1.125rem; + color: var(--md-default-fg-color--light); + margin: 0 auto 2rem; + max-width: 37.5rem; + line-height: 1.7; +} + +/* ----------------------------------------------------------------------------- SECCIÓN HERO ----------------------------------------------------------------------------- */ - .hero-section { - padding: 2rem 1rem; - text-align: center; - margin-bottom: 2rem; - border-radius: var(--card-radius); - background: var(--md-default-bg-color); - border: 1px solid var(--md-default-fg-color--lightest); - } - - .hero-logo { - width: 7.5rem; - height: 7.5rem; - margin-bottom: 1.5rem; - border-radius: 1rem; - box-shadow: var(--md-shadow-z1); - } - - .hero-section h1 { - font-size: clamp(2.5rem, 8vw, 4rem); - margin-bottom: 1rem; - line-height: 1.2; - } - - .hero-subtitle { - font-size: 1.125rem; - color: var(--md-default-fg-color--light); - max-width: 37.5rem; - margin: 0 auto 2rem; - line-height: 1.7; - } - - /* ----------------------------------------------------------------------------- +.hero-section { + padding: 2rem 1rem; + text-align: center; + margin-bottom: 2rem; + border-radius: var(--card-radius); + background: var(--md-default-bg-color); + border: 1px solid var(--md-default-fg-color--lightest); +} + +.hero-logo { + width: 7.5rem; + height: 7.5rem; + margin-bottom: 1.5rem; + border-radius: 1rem; + box-shadow: var(--md-shadow-z1); +} + +.hero-section h1 { + font-size: clamp(2.5rem, 8vw, 4rem); + margin-bottom: 1rem; + line-height: 1.2; +} + +.hero-subtitle { + font-size: 1.125rem; + color: var(--md-default-fg-color--light); + max-width: 37.5rem; + margin: 0 auto 2rem; + line-height: 1.7; +} + +/* ----------------------------------------------------------------------------- SISTEMA DE BOTONES ----------------------------------------------------------------------------- */ - .action-buttons { - display: flex; - gap: 1rem; - justify-content: center; - flex-wrap: wrap; - } - - .action-buttons a { - display: inline-flex; - align-items: center; - justify-content: center; - padding: 1rem 1.5rem; - border-radius: var(--button-radius); - text-decoration: none; - font-weight: 500; - transition: var(--transition-base); - min-width: 8.75rem; - } - - .action-buttons a:first-child { - color: var(--md-accent-bg-color); - background: var(--md-primary-fg-color); - } - - .action-buttons a:first-child:hover { - opacity: 0.9; - transform: translateY(-1px); - } - - .action-buttons a:last-child { - background: transparent; - color: var(--md-primary-fg-color); - border: 2px solid var(--md-primary-fg-color); - } - - .action-buttons a:last-child:hover { - background: var(--md-primary-fg-color); - color: var(--md-primary-bg-color); - } - - /* Botones estándar del sitio */ - .upcoming-btn, - .btn, - .btn-primary, - .participation-card a, - .year-card a { - background: var(--md-accent-fg-color) !important; - color: var(--md-accent-bg-color) !important; - padding: 0.75rem 1.5rem; - border-radius: var(--button-radius); - text-decoration: none; - font-weight: 600; - display: inline-flex; - align-items: center; - justify-content: center; - gap: 0.5rem; - transition: var(--transition-base); - border: none; - margin-top: 1rem; - } - - .upcoming-btn:hover, - .btn:hover, - .btn-primary:hover, - .participation-card a:hover, - .year-card a:hover { - background: var(--md-accent-fg-color--dark) !important; - color: var(--md-accent-bg-color) !important; - transform: translateY(-2px); - box-shadow: var(--md-shadow-z2); - text-decoration: none; - } - - /* Asegurar visibilidad en botones específicos del index */ - .btn.btn-primary, - .btn-primary.mt-2, - .upcoming-btn { - background: var(--md-accent-fg-color) !important; - color: var(--md-accent-bg-color) !important; - text-decoration: none !important; - } - - .btn.btn-primary:hover, - .btn-primary.mt-2:hover, - .upcoming-btn:hover { - background: var(--md-accent-fg-color--dark) !important; - color: var(--md-accent-bg-color) !important; - text-decoration: none !important; - } - - /* Botones de navegación discretos */ - .btn-nav { - background: transparent; - color: var(--md-default-fg-color--light); - border: 1px solid var(--md-default-fg-color--lightest); - padding: 0.5rem 1rem; - border-radius: 1.5rem; - text-decoration: none; - font-weight: 500; - font-size: 0.875rem; - display: inline-flex; - align-items: center; - justify-content: center; - gap: 0.375rem; - transition: var(--transition-base); - margin: 0.25rem; - min-width: 140px; - text-align: center; - white-space: nowrap; - } - - .btn-nav:hover { - background: var(--md-default-fg-color--lightest); - color: var(--md-default-fg-color); - border-color: var(--md-default-fg-color--light); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - text-decoration: none; - } - - .btn-nav i { - font-size: 0.875em; - opacity: 0.7; - } - - .btn-nav:hover i { - opacity: 1; - } - - /* ----------------------------------------------------------------------------- +.action-buttons { + display: flex; + gap: 1rem; + justify-content: center; + flex-wrap: wrap; +} + +.action-buttons a { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 1rem 1.5rem; + border-radius: var(--button-radius); + text-decoration: none; + font-weight: 500; + transition: var(--transition-base); + min-width: 8.75rem; +} + +.action-buttons a:first-child { + color: var(--md-accent-bg-color); + background: var(--md-primary-fg-color); +} + +.action-buttons a:first-child:hover { + opacity: 0.9; + transform: translateY(-1px); +} + +.action-buttons a:last-child { + background: transparent; + color: var(--md-primary-fg-color); + border: 2px solid var(--md-primary-fg-color); +} + +.action-buttons a:last-child:hover { + background: var(--md-primary-fg-color); + color: var(--md-primary-bg-color); +} + +/* Botones estándar del sitio */ +.upcoming-btn, +.btn, +.btn-primary, +.participation-card a, +.year-card a { + background: var(--md-accent-fg-color) !important; + color: var(--md-accent-bg-color) !important; + padding: 0.75rem 1.5rem; + border-radius: var(--button-radius); + text-decoration: none; + font-weight: 600; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + transition: var(--transition-base); + border: none; + margin-top: 1rem; +} + +.upcoming-btn span.twemoji, +.btn span.twemoji { + color: var(--python-white); +} + +.upcoming-btn:hover, +.btn:hover, +.btn-primary:hover, +.participation-card a:hover, +.year-card a:hover { + background: var(--md-accent-fg-color--dark) !important; + color: var(--md-accent-bg-color) !important; + transform: translateY(-2px); + box-shadow: var(--md-shadow-z2); + text-decoration: none; +} + +/* Asegurar visibilidad en botones específicos del index */ +.btn.btn-primary, +.btn-primary.mt-2, +.upcoming-btn { + background: var(--md-accent-fg-color) !important; + color: var(--md-accent-bg-color) !important; + text-decoration: none !important; +} + +.btn.btn-primary:hover, +.btn-primary.mt-2:hover, +.upcoming-btn:hover { + background: var(--md-accent-fg-color--dark) !important; + color: var(--md-accent-bg-color) !important; + text-decoration: none !important; +} + +/* Botones de navegación discretos */ +.btn-nav { + background: transparent; + color: var(--md-default-fg-color--light); + border: 1px solid var(--md-default-fg-color--lightest); + padding: 0.5rem 1rem; + border-radius: 1.5rem; + text-decoration: none; + font-weight: 500; + font-size: 0.875rem; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.375rem; + transition: var(--transition-base); + margin: 0.25rem; + min-width: 140px; + text-align: center; + white-space: nowrap; +} + +.btn-nav:hover { + background: var(--md-default-fg-color--lightest); + color: var(--md-default-fg-color); + border-color: var(--md-default-fg-color--light); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + text-decoration: none; +} + +.btn-nav span.twemoji { + font-size: 0.875em; + opacity: 0.7; +} + +.btn-nav:hover span.twemoji { + opacity: 1; +} + +/* ----------------------------------------------------------------------------- TARJETAS Y GRILLAS ----------------------------------------------------------------------------- */ - /* Estilos base para todas las tarjetas */ - .participation-card, - .year-card, - .stat-card, - .community-highlight, - .upcoming-events { - background: var(--md-default-bg-color); - border: 1px solid var(--md-default-fg-color--lightest); - border-radius: var(--card-radius); - text-align: center; - transition: var(--transition-smooth); - position: relative; - overflow: hidden; - } - - /* Grillas responsivas */ - .participation-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); - gap: 1.5rem; - margin: 2rem 0; - } - - .year-cards { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); - gap: 1.5rem; - margin: 2rem 0; - } - - .stats-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); - gap: 1.5rem; - margin: 2rem 0; - } - - /* Caso especial: cuando hay 3 tarjetas de participación, la tercera ocupa toda la fila */ - .participation-grid .participation-card:nth-child(3):nth-last-child(1) { - grid-column: 1 / -1; - max-width: 400px; - margin: 0 auto; - } - - /* Tarjetas de participación */ - .participation-card { - padding: 2rem; - min-height: 200px; - display: flex; - flex-direction: column; - justify-content: space-between; - } - - .participation-card:hover { - transform: translateY(-5px); - box-shadow: var(--md-shadow-z3); - border-color: var(--md-primary-fg-color); - } - - .participation-card h3 { - color: var(--md-default-fg-color); - margin-bottom: 1rem; - font-size: 1.25rem; - font-weight: 600; - } - - .participation-card h3 i { - font-size: 2rem; - color: var(--md-primary-fg-color); - margin-bottom: 0.5rem; - display: block; - } - - .participation-card p { - color: var(--md-default-fg-color--light); - line-height: 1.6; - margin-bottom: 1.5rem; - flex-grow: 1; - } - - /* Tarjetas de años */ - .year-card { - padding: 0.5rem 2rem; - min-height: 200px; - display: flex; - flex-direction: column; - justify-content: space-between; - } - - .year-card:hover { - transform: translateY(-5px); - box-shadow: var(--md-shadow-z3); - border-color: var(--md-primary-fg-color); - } - - .year-card::before { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - height: 4px; - background: linear-gradient(90deg, var(--md-primary-fg-color), var(--md-primary-bg-color)); - opacity: 0; - transition: var(--transition-base); - } - - .year-card:hover::before { - opacity: 1; - } - - .year-card h3 { - color: var(--md-default-fg-color); - margin-bottom: 0.5rem; - font-size: 1.5rem; - font-weight: 700; - } - - .year-card h3 i { - font-size: 2rem; - color: var(--md-primary-fg-color); - margin-bottom: 0.25rem; - display: block; - } - - .year-card p { - color: var(--md-default-fg-color--light); - line-height: 1.4; - margin-bottom: 0.25rem; - } - - .year-card p:first-of-type { - font-size: 1.125rem; - font-weight: 600; - color: var(--md-primary-fg-color); - } - - .year-card a { - margin-top: auto; - } - - /* Tarjetas de estadísticas */ - .stat-card { - padding: 1.5rem; - } - - .stat-card:hover { - transform: translateY(-3px); - box-shadow: var(--md-shadow-z2); - border-color: var(--md-primary-fg-color); - } - - .stat-card h3 { - color: var(--md-primary-fg-color); - margin-bottom: 0.5rem; - font-size: 1.25rem; - font-weight: 700; - } - - .stat-card h3 i { - font-size: 1.5rem; - margin-bottom: 0.5rem; - display: block; - } - - .stat-card p { - color: var(--md-default-fg-color--light); - font-weight: 500; - } - - /* Especialización de tarjetas por tipo */ - .participation-ponente, - .year-2025 { - border-left: 4px solid var(--md-primary-fg-color); - } - - .participation-voluntario, - .year-2024 { - border-left: 4px solid var(--year-2024-color); - } - - .participation-asistir, - .year-2023 { - border-left: 4px solid var(--year-2023-color); - } - - .year-2025:hover { - border-left-color: var(--md-accent-fg-color--dark); - } - - .year-2024:hover { - border-left-color: var(--year-2024-hover); - } - - .year-2023:hover { - border-left-color: var(--year-2023-hover); - } - - /* ----------------------------------------------------------------------------- +/* Estilos base para todas las tarjetas */ +.participation-card, +.year-card, +.stat-card, +.community-highlight, +.upcoming-events { + background: var(--md-default-bg-color); + border: 1px solid var(--md-default-fg-color--lightest); + border-radius: var(--card-radius); + text-align: center; + transition: var(--transition-smooth); + position: relative; + overflow: hidden; +} + +/* Grillas responsivas */ +.participation-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 1.5rem; + margin: 2rem 0; +} + +.year-cards { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 1.5rem; + margin: 2rem 0; +} + +.stats-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 1.5rem; + margin: 2rem 0; +} + +/* Caso especial: cuando hay 3 tarjetas de participación, la tercera ocupa toda la fila */ +.participation-grid .participation-card:nth-child(3):nth-last-child(1) { + grid-column: 1 / -1; + max-width: 400px; + margin: 0 auto; +} + +/* Tarjetas de Participacion nuevas */ +.md-typeset .cards > ul > li { + padding: 2rem; + min-height: 200px; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.md-typeset .cards > ul > li:hover { + transform: translateY(-5px); + box-shadow: var(--md-shadow-z3); + border-color: var(--md-primary-fg-color); +} + +.md-typeset .cards > ul > li .card--header { + color: var(--md-default-fg-color); + margin-bottom: 1rem; + font-size: 1.25rem; + font-weight: 600; +} + +/* Tarjetas de participación */ +.participation-card { + padding: 2rem; + min-height: 200px; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.participation-card:hover { + transform: translateY(-5px); + box-shadow: var(--md-shadow-z3); + border-color: var(--md-primary-fg-color); +} + +.participation-card h3 { + color: var(--md-default-fg-color); + margin-bottom: 1rem; + font-size: 1.25rem; + font-weight: 600; +} + +.participation-card h3 i { + font-size: 2rem; + color: var(--md-primary-fg-color); + margin-bottom: 0.5rem; + display: block; +} + +.participation-card p { + color: var(--md-default-fg-color--light); + line-height: 1.6; + margin-bottom: 1.5rem; + flex-grow: 1; +} + +/* Tarjetas de años */ +.year-card { + padding: 0.5rem 2rem; + min-height: 200px; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.year-card:hover { + transform: translateY(-5px); + box-shadow: var(--md-shadow-z3); + border-color: var(--md-primary-fg-color); +} + +.year-card::before { + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 4px; + background: linear-gradient( + 90deg, + var(--md-primary-fg-color), + var(--md-primary-bg-color) + ); + opacity: 0; + transition: var(--transition-base); +} + +.year-card:hover::before { + opacity: 1; +} + +.year-card h3 { + color: var(--md-default-fg-color); + margin-bottom: 0.5rem; + font-size: 1.5rem; + font-weight: 700; +} + +.year-card h3 i { + font-size: 2rem; + color: var(--md-primary-fg-color); + margin-bottom: 0.25rem; + display: block; +} + +.year-card p { + color: var(--md-default-fg-color--light); + line-height: 1.4; + margin-bottom: 0.25rem; +} + +.year-card p:first-of-type { + font-size: 1.125rem; + font-weight: 600; + color: var(--md-primary-fg-color); +} + +.year-card a { + margin-top: auto; +} + +/* Tarjetas de estadísticas */ +.stat-card { + padding: 1.5rem; +} + +.stat-card:hover { + transform: translateY(-3px); + box-shadow: var(--md-shadow-z2); + border-color: var(--md-primary-fg-color); +} + +.stat-card h3 { + color: var(--md-primary-fg-color); + margin-bottom: 0.5rem; + font-size: 1.25rem; + font-weight: 700; +} + +.stat-card h3 i { + font-size: 1.5rem; + margin-bottom: 0.5rem; + display: block; +} + +.stat-card p { + color: var(--md-default-fg-color--light); + font-weight: 500; +} + +/* Especialización de tarjetas por tipo */ +.participation-ponente, +.year-2025 { + border-left: 4px solid var(--md-primary-fg-color); +} + +.participation-voluntario, +.year-2024 { + border-left: 4px solid var(--year-2024-color); +} + +.participation-asistir, +.year-2023 { + border-left: 4px solid var(--year-2023-color); +} + +.year-2025:hover { + border-left-color: var(--md-accent-fg-color--dark); +} + +.year-2024:hover { + border-left-color: var(--year-2024-hover); +} + +.year-2023:hover { + border-left-color: var(--year-2023-hover); +} + +/* ----------------------------------------------------------------------------- TARJETAS DE VOLUNTARIOS ----------------------------------------------------------------------------- */ - .volunteer-card { - background: var(--md-default-bg-color); - border: 1px solid var(--md-default-fg-color--lightest); - border-radius: var(--card-radius); - padding: 2rem; - margin-bottom: 2rem; - transition: var(--transition-base); - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); - } - - .volunteer-card:hover { - transform: translateY(-2px); - box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1); - border-color: var(--md-primary-fg-color--light); - } - - .volunteer-card .card-header { - display: grid; - grid-template-columns: 1fr auto; - gap: 2rem; - align-items: start; - margin-bottom: 1.5rem; - } - - .volunteer-card .card-info { - display: flex; - flex-direction: column; - gap: 0.75rem; - } - - .volunteer-card .card-title { - font-size: 1.5rem; - font-weight: 700; - color: var(--md-default-fg-color); - margin: 0; - line-height: 1.2; - } - - .volunteer-card .card-title i { - color: var(--md-primary-fg-color); - margin-right: 0.5rem; - } - - .volunteer-card .card-subtitle { - font-size: 1rem; - color: var(--md-default-fg-color--light); - margin: 0; - font-weight: 500; - line-height: 1.4; - } - - .volunteer-card .badges-container { - display: flex; - gap: 0.5rem; - flex-wrap: wrap; - } - - .volunteer-card .badge { - padding: 0.125rem 0.5rem; - border-radius: 0.75rem; - font-size: 0.625rem; - font-weight: 500; - text-transform: uppercase; - letter-spacing: 0.03em; - opacity: 0.85; - } - - /* Badges específicos por rol */ - .volunteer-card .badge.ambassador { - background: rgba(76, 175, 80, 0.15); - color: var(--badge-ambassador); - border: 1px solid rgba(76, 175, 80, 0.3); - } - - .volunteer-card .badge.organizer { - background: rgba(33, 150, 243, 0.15); - color: var(--badge-organizer); - border: 1px solid rgba(33, 150, 243, 0.3); - } - - .volunteer-card .badge.production { - background: rgba(255, 152, 0, 0.15); - color: var(--badge-production); - border: 1px solid rgba(255, 152, 0, 0.3); - } - - .volunteer-card .badge.host { - background: rgba(156, 39, 176, 0.15); - color: var(--badge-host); - border: 1px solid rgba(156, 39, 176, 0.3); - } - - .volunteer-card .badge.technical { - background: rgba(96, 125, 139, 0.15); - color: var(--badge-technical); - border: 1px solid rgba(96, 125, 139, 0.3); - } - - .volunteer-card .badge.support { - background: rgba(121, 85, 72, 0.15); - color: var(--badge-support); - border: 1px solid rgba(121, 85, 72, 0.3); - } - - .volunteer-card .badge.global { - background: rgba(233, 30, 99, 0.15); - color: var(--badge-global); - border: 1px solid rgba(233, 30, 99, 0.3); - } - - .volunteer-card .badge.strategic { - background: rgba(63, 81, 181, 0.15); - color: var(--badge-strategic); - border: 1px solid rgba(63, 81, 181, 0.3); - } - - /* Avatar y sección social */ - .volunteer-card .avatar-section { - display: flex; - flex-direction: column; - align-items: center; - gap: 1rem; - } - - .volunteer-card .volunteer-avatar { - width: 100px; - height: 100px; - border-radius: 50%; - object-fit: cover; - border: 3px solid var(--md-primary-fg-color--light); - transition: var(--transition-base); - } - - .volunteer-card:hover .volunteer-avatar { - border-color: var(--md-primary-fg-color); - transform: scale(1.05); - } - - .volunteer-card .social-icons { - display: flex; - gap: 0.5rem; - justify-content: center; - } - - .volunteer-card .social-icon { - display: flex; - align-items: center; - justify-content: center; - width: 32px; - height: 32px; - border-radius: 50%; - background: var(--md-default-fg-color--lightest); - color: var(--md-default-fg-color--light); - text-decoration: none; - transition: var(--transition-base); - font-size: 0.875rem; - } - - .volunteer-card .social-icon:hover { - transform: translateY(-2px); - text-decoration: none; - } - - .volunteer-card .social-icon.linkedin:hover { - background: var(--linkedin-color); - color: white; - } - - .volunteer-card .social-icon.github:hover { - background: var(--github-color); - color: white; - } - - /* Contenido de la tarjeta */ - .volunteer-card .card-content { - border-top: 1px solid var(--md-default-fg-color--lightest); - padding-top: 1.5rem; - } - - .volunteer-card .card-role { - line-height: 1.6; - } - - .volunteer-card .role-title { - font-weight: 700; - color: var(--md-primary-fg-color); - font-size: 0.9rem; - text-transform: uppercase; - letter-spacing: 0.05em; - display: block; - margin-bottom: 0.5rem; - } - - .volunteer-card .role-description { - font-weight: 500; - color: var(--md-default-fg-color--light); - font-size: 0.875rem; - font-style: italic; - line-height: 1.4; - display: block; - margin-bottom: 1rem; - } - - .volunteer-card .card-role ul { - margin-top: 1rem; - padding-left: 1.5rem; - } - - .volunteer-card .card-role li { - margin-bottom: 0.5rem; - color: var(--md-default-fg-color--light); - } - - /* Encabezados ocultos para voluntarios */ - .volunteer-header { - position: absolute; - left: -9999px; - width: 1px; - height: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); - } - - .volunteer-card:first-of-type { - margin-top: 1rem; - } - - /* ----------------------------------------------------------------------------- +.volunteer-card { + background: var(--md-default-bg-color); + border: 1px solid var(--md-default-fg-color--lightest); + border-radius: var(--card-radius); + padding: 2rem; + margin-bottom: 2rem; + transition: var(--transition-base); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); +} + +.volunteer-card:hover { + transform: translateY(-2px); + box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1); + border-color: var(--md-primary-fg-color--light); +} + +.volunteer-card .card-header { + display: grid; + grid-template-columns: 1fr auto; + gap: 2rem; + align-items: start; + margin-bottom: 1.5rem; +} + +.volunteer-card .card-info { + display: flex; + flex-direction: column; + gap: 0.75rem; +} + +.volunteer-card .card-title { + font-size: 1.5rem; + font-weight: 700; + color: var(--md-default-fg-color); + margin: 0; + line-height: 1.2; +} + +.volunteer-card .card-title i { + color: var(--md-primary-fg-color); + margin-right: 0.5rem; +} + +.volunteer-card .card-subtitle { + font-size: 1rem; + color: var(--md-default-fg-color--light); + margin: 0; + font-weight: 500; + line-height: 1.4; +} + +.volunteer-card .badges-container { + display: flex; + gap: 0.5rem; + flex-wrap: wrap; +} + +.volunteer-card .badge { + padding: 0.125rem 0.5rem; + border-radius: 0.75rem; + font-size: 0.625rem; + font-weight: 500; + text-transform: uppercase; + letter-spacing: 0.03em; + opacity: 0.85; +} + +/* Badges específicos por rol */ +.volunteer-card .badge.ambassador { + background: rgba(76, 175, 80, 0.15); + color: var(--badge-ambassador); + border: 1px solid rgba(76, 175, 80, 0.3); +} + +.volunteer-card .badge.organizer { + background: rgba(33, 150, 243, 0.15); + color: var(--badge-organizer); + border: 1px solid rgba(33, 150, 243, 0.3); +} + +.volunteer-card .badge.production { + background: rgba(255, 152, 0, 0.15); + color: var(--badge-production); + border: 1px solid rgba(255, 152, 0, 0.3); +} + +.volunteer-card .badge.host { + background: rgba(156, 39, 176, 0.15); + color: var(--badge-host); + border: 1px solid rgba(156, 39, 176, 0.3); +} + +.volunteer-card .badge.technical { + background: rgba(96, 125, 139, 0.15); + color: var(--badge-technical); + border: 1px solid rgba(96, 125, 139, 0.3); +} + +.volunteer-card .badge.support { + background: rgba(121, 85, 72, 0.15); + color: var(--badge-support); + border: 1px solid rgba(121, 85, 72, 0.3); +} + +.volunteer-card .badge.global { + background: rgba(233, 30, 99, 0.15); + color: var(--badge-global); + border: 1px solid rgba(233, 30, 99, 0.3); +} + +.volunteer-card .badge.strategic { + background: rgba(63, 81, 181, 0.15); + color: var(--badge-strategic); + border: 1px solid rgba(63, 81, 181, 0.3); +} + +/* Avatar y sección social */ +.volunteer-card .avatar-section { + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; +} + +.volunteer-card .volunteer-avatar { + width: 100px; + height: 100px; + border-radius: 50%; + object-fit: cover; + border: 3px solid var(--md-primary-fg-color--light); + transition: var(--transition-base); +} + +.volunteer-card:hover .volunteer-avatar { + border-color: var(--md-primary-fg-color); + transform: scale(1.05); +} + +.volunteer-card .social-icons { + display: flex; + gap: 0.5rem; + justify-content: center; +} + +.volunteer-card .social-icon { + display: flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + border-radius: 50%; + background: var(--md-default-fg-color--lightest); + color: var(--md-default-fg-color--light); + text-decoration: none; + transition: var(--transition-base); + font-size: 0.875rem; +} + +.volunteer-card .social-icon:hover { + transform: translateY(-2px); + text-decoration: none; +} + +.volunteer-card .social-icon.linkedin:hover { + background: var(--linkedin-color); + color: white; +} + +.volunteer-card .social-icon.github:hover { + background: var(--github-color); + color: white; +} + +/* Contenido de la tarjeta */ +.volunteer-card .card-content { + border-top: 1px solid var(--md-default-fg-color--lightest); + padding-top: 1.5rem; +} + +.volunteer-card .card-role { + line-height: 1.6; +} + +.volunteer-card .role-title { + font-weight: 700; + color: var(--md-primary-fg-color); + font-size: 0.9rem; + text-transform: uppercase; + letter-spacing: 0.05em; + display: block; + margin-bottom: 0.5rem; +} + +.volunteer-card .role-description { + font-weight: 500; + color: var(--md-default-fg-color--light); + font-size: 0.875rem; + font-style: italic; + line-height: 1.4; + display: block; + margin-bottom: 1rem; +} + +.volunteer-card .card-role ul { + margin-top: 1rem; + padding-left: 1.5rem; +} + +.volunteer-card .card-role li { + margin-bottom: 0.5rem; + color: var(--md-default-fg-color--light); +} + +/* Encabezados ocultos para voluntarios */ +.volunteer-header { + position: absolute; + left: -9999px; + width: 1px; + height: 1px; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); +} + +.volunteer-card:first-of-type { + margin-top: 1rem; +} + +/* ----------------------------------------------------------------------------- TARJETAS DE COMUNIDADES ALIADAS ----------------------------------------------------------------------------- */ - .communities-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); - gap: 1.5rem; - margin: 2rem 0; - padding: 0; - } - - .community-card { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - padding: 2rem 1.5rem; - border-radius: var(--card-radius); - background: var(--md-default-bg-color); - border: 2px solid var(--md-default-fg-color--lightest); - transition: var(--transition-smooth); - text-decoration: none; - color: var(--md-default-fg-color); - position: relative; - overflow: hidden; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); - } - - .community-card::before { - content: ''; - position: absolute; - top: 0; - left: -100%; - width: 100%; - height: 100%; - background: linear-gradient(90deg, transparent, rgba(76, 175, 80, 0.1), transparent); - transition: var(--transition-smooth); - } - - .community-card:hover::before { - left: 100%; - } - - .community-card:hover { - transform: translateY(-5px); - border-color: var(--md-accent-fg-color); - box-shadow: 0 8px 25px rgba(76, 175, 80, 0.15); - text-decoration: none; - color: var(--md-default-fg-color); - } - - .community-card img { - /*width: 120px;*/ - height: 120px; - object-fit: cover; - /*border-radius: 50%;*/ - margin-bottom: 1rem; - border: 3px solid var(--md-default-fg-color--lightest); - transition: var(--transition-base); - } - - .community-card:hover img { - border-color: var(--md-accent-fg-color); - transform: scale(1.05); - } - - .community-card h4 { - margin: 0.5rem 0; - font-size: 1.1rem; - font-weight: 600; - color: var(--md-default-fg-color); - transition: var(--transition-base); - } - - .community-card h4 i { - margin-right: 0.5rem; - color: var(--md-accent-fg-color); - font-size: 0.9em; - } - - .community-card:hover h4 { - color: var(--md-accent-fg-color); - } - - .community-card p { - margin: 0; - font-size: 0.9rem; - color: var(--md-default-fg-color--light); - line-height: 1.4; - } - - /* ----------------------------------------------------------------------------- +.communities-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 1.5rem; + margin: 2rem 0; + padding: 0; +} + +.community-card { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + padding: 2rem 1.5rem; + border-radius: var(--card-radius); + background: var(--md-default-bg-color); + border: 2px solid var(--md-default-fg-color--lightest); + transition: var(--transition-smooth); + text-decoration: none; + color: var(--md-default-fg-color); + position: relative; + overflow: hidden; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); +} + +.community-card::before { + content: ""; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient( + 90deg, + transparent, + rgba(76, 175, 80, 0.1), + transparent + ); + transition: var(--transition-smooth); +} + +.community-card:hover::before { + left: 100%; +} + +.community-card:hover { + transform: translateY(-5px); + border-color: var(--md-accent-fg-color); + box-shadow: 0 8px 25px rgba(76, 175, 80, 0.15); + text-decoration: none; + color: var(--md-default-fg-color); +} + +.community-card img { + /*width: 120px;*/ + height: 120px; + object-fit: cover; + /*border-radius: 50%;*/ + margin-bottom: 1rem; + border: 3px solid var(--md-default-fg-color--lightest); + transition: var(--transition-base); +} + +.community-card:hover img { + border-color: var(--md-accent-fg-color); + transform: scale(1.05); +} + +.community-card h4 { + margin: 0.5rem 0; + font-size: 1.1rem; + font-weight: 600; + color: var(--md-default-fg-color); + transition: var(--transition-base); +} + +.community-card h4 i { + margin-right: 0.5rem; + color: var(--md-accent-fg-color); + font-size: 0.9em; +} + +.community-card:hover h4 { + color: var(--md-accent-fg-color); +} + +.community-card p { + margin: 0; + font-size: 0.9rem; + color: var(--md-default-fg-color--light); + line-height: 1.4; +} + +/* ----------------------------------------------------------------------------- MEETUPS Y EVENTOS ----------------------------------------------------------------------------- */ - .meetup-hero { - padding: 2rem 1rem; - text-align: center; - margin-bottom: 2rem; - border-radius: var(--card-radius); - background: var(--md-default-bg-color); - border: 1px solid var(--md-default-fg-color--lightest); - box-shadow: var(--md-shadow-z1); - } - - .meetup-hero h1 { - font-size: clamp(2rem, 6vw, 3.5rem); - margin-bottom: 1rem; - line-height: 1.2; - color: var(--md-default-fg-color); - } - - .meetup-subtitle { - font-size: 1.125rem; - color: var(--md-default-fg-color--light); - margin: 0; - font-weight: 400; - line-height: 1.6; - } - - .event-details { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); - gap: 1rem; - margin: 2rem 0; - } - - .detail-card { - background: var(--md-default-bg-color); - border: 1px solid var(--md-default-fg-color--lightest); - border-radius: var(--card-radius); - padding: 1.25rem; - text-align: center; - transition: var(--transition-base); - box-shadow: var(--md-shadow-z1); - } - - .detail-card:hover { - transform: translateY(-2px); - box-shadow: var(--md-shadow-z2); - border-color: var(--md-primary-fg-color--light); - } - - .detail-card h3 { - margin: 0 0 0.75rem 0; - color: var(--md-primary-fg-color); - font-size: 1rem; - font-weight: 600; - } - - .detail-card h3 i { - margin-right: 0.5rem; - opacity: 0.7; - font-size: 0.9em; - } - - .detail-card p { - margin: 0; - color: var(--md-default-fg-color--light); - font-weight: 500; - font-size: 0.95rem; - } - - .rsvp-card a { - color: var(--md-primary-fg-color); - text-decoration: none; - font-weight: 600; - } - - .rsvp-card a:hover { - text-decoration: underline; - } - - /* Secciones de charlas */ - .talk-section { - margin: 2rem 0; - border: 1px solid var(--md-default-fg-color--lightest); - border-radius: var(--card-radius); - overflow: hidden; - background: var(--md-default-bg-color); - box-shadow: var(--md-shadow-z1); - } - - .talk-header { - background: var(--md-default-bg-color); - color: var(--md-default-fg-color); - padding: 1.5rem; - text-align: center; - border-bottom: 1px solid var(--md-default-fg-color--lightest); - } - - .talk-header h3 { - margin: 0 0 0.5rem 0; - font-size: 1.4rem; - color: var(--md-primary-fg-color); - font-weight: 600; - } - - .talk-header h3 i { - margin-right: 0.5rem; - opacity: 0.7; - font-size: 0.9em; - } - - .talk-header p { - margin: 0; - color: var(--md-default-fg-color--light); - font-size: 0.95rem; - } - - .talk-header p i { - margin-right: 0.25rem; - } - - /* Sección del ponente */ - .speaker-section { - background: var(--md-default-bg-color); - padding: 1.5rem; - display: flex; - align-items: center; - gap: 1.5rem; - border-bottom: 1px solid var(--md-default-fg-color--lightest); - } - - .speaker-photo { - flex-shrink: 0; - } - - .speaker-photo img { - width: 160px; - height: 160px; - border: 2px solid var(--md-default-fg-color--lightest); - box-shadow: var(--md-shadow-z1); - object-fit: cover; - transition: var(--transition-base); - } - - .speaker-section:hover .speaker-photo img { - border-color: var(--md-primary-fg-color--light); - } - - .speaker-info h4 { - margin: 0 0 0.25rem 0; - font-size: 1.2rem; - color: var(--md-default-fg-color); - font-weight: 600; - } - - .speaker-info p:first-of-type { - margin: 0 0 0.75rem 0; - font-size: 0.9rem; - color: var(--md-primary-fg-color); - font-weight: 500; - } - - .speaker-info p:last-of-type { - margin: 0 0 0.75rem 0; - line-height: 1.5; - color: var(--md-default-fg-color--light); - font-size: 0.9rem; - } - - .speaker-links { - display: flex; - gap: 0.5rem; - } - - .speaker-links a { - display: inline-flex; - align-items: center; - justify-content: center; - width: 32px; - height: 32px; - border-radius: 50%; - background: var(--md-default-fg-color--lightest); - color: var(--md-default-fg-color--light); - text-decoration: none; - transition: var(--transition-base); - font-size: 0.9rem; - } - - .speaker-links a:hover { - background: var(--md-accent-fg-color); - color: var(--md-accent-bg-color); - } - - /* Descripción de la charla */ - .talk-description { - background: var(--md-default-bg-color); - padding: 1.5rem; - } - - .talk-description p { - line-height: 1.6; - font-size: 1rem; - margin-bottom: 1rem; - color: var(--md-default-fg-color); - } - - .talk-description p:last-child { - margin-top: 1rem; - font-style: italic; - color: var(--md-default-fg-color--light); - font-size: 0.95rem; - } - - /* Stack tecnológico */ - .tech-stack { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); - gap: 0.75rem; - margin: 1rem 0; - } - - .tech-stack > div { - background: var(--md-default-bg-color); - padding: 0.75rem; - border-radius: var(--card-radius); - text-align: center; - border: 1px solid var(--md-default-fg-color--lightest); - transition: var(--transition-base); - } - - .tech-stack > div:hover { - border-color: var(--md-primary-fg-color--light); - box-shadow: var(--md-shadow-z1); - } - - .tech-stack h5 { - margin: 0 0 0.25rem 0; - color: var(--md-primary-fg-color); - font-size: 0.9rem; - font-weight: 500; - } - - .tech-stack h5 i { - margin-right: 0.375rem; - opacity: 0.7; - } - - .tech-stack p { - margin: 0; - font-size: 0.8rem; - color: var(--md-default-fg-color--light); - } - - /* Sección de video */ - .video-section { - margin: 2rem 0; - text-align: center; - } - - .video-container { - max-width: 700px; - margin: 0 auto; - } - - .video-wrapper { - position: relative; - width: 100%; - height: 0; - padding-bottom: 56.25%; /* 16:9 aspect ratio */ - margin-bottom: 1rem; - border-radius: var(--card-radius); - overflow: hidden; - box-shadow: var(--md-shadow-z1); - border: 1px solid var(--md-default-fg-color--lightest); - } - - .video-wrapper iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - border: none; - } - - .youtube-btn { - display: inline-flex; - align-items: center; - gap: 0.5rem; - background: var(--md-accent-fg-color); - color: var(--md-accent-bg-color); - padding: 0.75rem 1.25rem; - border-radius: var(--button-radius); - text-decoration: none; - font-weight: 500; - transition: var(--transition-base); - margin-top: 0.75rem; - font-size: 0.95rem; - } - - .youtube-btn:hover { - background: var(--md-accent-fg-color--dark); - color: var(--md-accent-bg-color); - transform: translateY(-1px); - box-shadow: var(--md-shadow-z1); - text-decoration: none; - } - - .youtube-btn i { - font-size: 1em; - } - - /* ----------------------------------------------------------------------------- +.meetup-hero { + padding: 2rem 1rem; + text-align: center; + margin-bottom: 2rem; + border-radius: var(--card-radius); + background: var(--md-default-bg-color); + border: 1px solid var(--md-default-fg-color--lightest); + box-shadow: var(--md-shadow-z1); +} + +.meetup-hero h1 { + font-size: clamp(2rem, 6vw, 3.5rem); + margin-bottom: 1rem; + line-height: 1.2; + color: var(--md-default-fg-color); +} + +.meetup-subtitle { + font-size: 1.125rem; + color: var(--md-default-fg-color--light); + margin: 0; + font-weight: 400; + line-height: 1.6; +} + +.event-details { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 1rem; + margin: 2rem 0; +} + +.detail-card { + background: var(--md-default-bg-color); + border: 1px solid var(--md-default-fg-color--lightest); + border-radius: var(--card-radius); + padding: 1.25rem; + text-align: center; + transition: var(--transition-base); + box-shadow: var(--md-shadow-z1); +} + +.detail-card:hover { + transform: translateY(-2px); + box-shadow: var(--md-shadow-z2); + border-color: var(--md-primary-fg-color--light); +} + +.detail-card h3 { + margin: 0 0 0.75rem 0; + color: var(--md-primary-fg-color); + font-size: 1rem; + font-weight: 600; +} + +.detail-card h3 i { + margin-right: 0.5rem; + opacity: 0.7; + font-size: 0.9em; +} + +.detail-card p { + margin: 0; + color: var(--md-default-fg-color--light); + font-weight: 500; + font-size: 0.95rem; +} + +.rsvp-card a { + color: var(--md-primary-fg-color); + text-decoration: none; + font-weight: 600; +} + +.rsvp-card a:hover { + text-decoration: underline; +} + +/* Secciones de charlas */ +.talk-section { + margin: 2rem 0; + border: 1px solid var(--md-default-fg-color--lightest); + border-radius: var(--card-radius); + overflow: hidden; + background: var(--md-default-bg-color); + box-shadow: var(--md-shadow-z1); +} + +.talk-header { + background: var(--md-default-bg-color); + color: var(--md-default-fg-color); + padding: 1.5rem; + text-align: center; + border-bottom: 1px solid var(--md-default-fg-color--lightest); +} + +.talk-header h3 { + margin: 0 0 0.5rem 0; + font-size: 1.4rem; + color: var(--md-primary-fg-color); + font-weight: 600; +} + +.talk-header h3 i { + margin-right: 0.5rem; + opacity: 0.7; + font-size: 0.9em; +} + +.talk-header p { + margin: 0; + color: var(--md-default-fg-color--light); + font-size: 0.95rem; +} + +.talk-header p i { + margin-right: 0.25rem; +} + +/* Sección del ponente */ +.speaker-section { + background: var(--md-default-bg-color); + padding: 1.5rem; + display: flex; + align-items: center; + gap: 1.5rem; + border-bottom: 1px solid var(--md-default-fg-color--lightest); +} + +.speaker-photo { + flex-shrink: 0; +} + +.speaker-photo img { + width: 160px; + height: 160px; + border: 2px solid var(--md-default-fg-color--lightest); + box-shadow: var(--md-shadow-z1); + object-fit: cover; + transition: var(--transition-base); +} + +.speaker-section:hover .speaker-photo img { + border-color: var(--md-primary-fg-color--light); +} + +.speaker-info h4 { + margin: 0 0 0.25rem 0; + font-size: 1.2rem; + color: var(--md-default-fg-color); + font-weight: 600; +} + +.speaker-info p:first-of-type { + margin: 0 0 0.75rem 0; + font-size: 0.9rem; + color: var(--md-primary-fg-color); + font-weight: 500; +} + +.speaker-info p:last-of-type { + margin: 0 0 0.75rem 0; + line-height: 1.5; + color: var(--md-default-fg-color--light); + font-size: 0.9rem; +} + +.speaker-links { + display: flex; + gap: 0.5rem; +} + +.speaker-links a { + display: inline-flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + border-radius: 50%; + background: var(--md-default-fg-color--lightest); + color: var(--md-default-fg-color--light); + text-decoration: none; + transition: var(--transition-base); + font-size: 0.9rem; +} + +.speaker-links a:hover { + background: var(--md-accent-fg-color); + color: var(--md-accent-bg-color); +} + +/* Descripción de la charla */ +.talk-description { + background: var(--md-default-bg-color); + padding: 1.5rem; +} + +.talk-description p { + line-height: 1.6; + font-size: 1rem; + margin-bottom: 1rem; + color: var(--md-default-fg-color); +} + +.talk-description p:last-child { + margin-top: 1rem; + font-style: italic; + color: var(--md-default-fg-color--light); + font-size: 0.95rem; +} + +/* Stack tecnológico */ +.tech-stack { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); + gap: 0.75rem; + margin: 1rem 0; +} + +.tech-stack > div { + background: var(--md-default-bg-color); + padding: 0.75rem; + border-radius: var(--card-radius); + text-align: center; + border: 1px solid var(--md-default-fg-color--lightest); + transition: var(--transition-base); +} + +.tech-stack > div:hover { + border-color: var(--md-primary-fg-color--light); + box-shadow: var(--md-shadow-z1); +} + +.tech-stack h5 { + margin: 0 0 0.25rem 0; + color: var(--md-primary-fg-color); + font-size: 0.9rem; + font-weight: 500; +} + +.tech-stack h5 i { + margin-right: 0.375rem; + opacity: 0.7; +} + +.tech-stack p { + margin: 0; + font-size: 0.8rem; + color: var(--md-default-fg-color--light); +} + +/* Sección de video */ +.video-section { + margin: 2rem 0; + text-align: center; +} + +.video-container { + max-width: 700px; + margin: 0 auto; +} + +.video-wrapper { + position: relative; + width: 100%; + height: 0; + padding-bottom: 56.25%; /* 16:9 aspect ratio */ + margin-bottom: 1rem; + border-radius: var(--card-radius); + overflow: hidden; + box-shadow: var(--md-shadow-z1); + border: 1px solid var(--md-default-fg-color--lightest); +} + +.video-wrapper iframe { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border: none; +} + +.youtube-btn { + display: inline-flex; + align-items: center; + gap: 0.5rem; + background: var(--md-accent-fg-color); + color: var(--md-accent-bg-color); + padding: 0.75rem 1.25rem; + border-radius: var(--button-radius); + text-decoration: none; + font-weight: 500; + transition: var(--transition-base); + margin-top: 0.75rem; + font-size: 0.95rem; +} + +.youtube-btn:hover { + background: var(--md-accent-fg-color--dark); + color: var(--md-accent-bg-color); + transform: translateY(-1px); + box-shadow: var(--md-shadow-z1); + text-decoration: none; +} + +.youtube-btn i { + font-size: 1em; +} + +/* ----------------------------------------------------------------------------- ENLACES DE COMUNIDAD ----------------------------------------------------------------------------- */ - .community-links { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); - gap: 1rem; - margin: 2rem 0; - padding: 0; - align-items: stretch; - } - - .community-link { - display: flex; - align-items: center; - justify-content: center; - gap: 0.625rem; - padding: 1rem; - height: 60px; - border-radius: 1rem; - text-decoration: none; - font-weight: 600; - font-size: 0.9rem; - letter-spacing: 0.025em; - transition: var(--transition-smooth); - border: 2px solid var(--md-default-fg-color--lightest); - background: var(--md-default-bg-color); - color: var(--md-default-fg-color); - text-align: center; - position: relative; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - box-sizing: border-box; - white-space: nowrap; - animation: breathe 4s ease-in-out infinite; - } - - .community-link:hover { - transform: translateY(-3px); - color: var(--md-accent-bg-color); - text-decoration: none; - animation: none; - } - - .community-link:active { - transform: translateY(-1px); - } - - .community-link i { - font-size: 1.25em; - transition: var(--transition-base); - margin-right: 0.125rem; - } - - .community-link:hover i { - color: var(--md-accent-bg-color); - transform: scale(1.1); - } - - /* Colores específicos por red social */ - .community-link.telegram { - border-color: var(--telegram-color); - } - - .community-link.telegram i { - color: var(--telegram-color); - } - - .community-link.telegram:hover { - background: var(--telegram-color); - border-color: var(--telegram-color); - box-shadow: 0 8px 25px rgba(0, 136, 204, 0.3); - } - - .community-link.meetup { - border-color: var(--meetup-color); - } - - .community-link.meetup i { - color: var(--meetup-color); - } - - .community-link.meetup:hover { - background: var(--meetup-color); - border-color: var(--meetup-color); - box-shadow: 0 8px 25px rgba(237, 28, 64, 0.3); - } - - .community-link.youtube { - border-color: var(--youtube-color); - } - - .community-link.youtube i { - color: var(--youtube-color); - } - - .community-link.youtube:hover { - background: var(--youtube-color); - border-color: var(--youtube-color); - box-shadow: 0 8px 25px rgba(255, 0, 0, 0.3); - } - - .community-link.github { - border-color: var(--github-color); - } - - .community-link.github i { - color: var(--github-color); - } - - .community-link.github:hover { - background: var(--github-color); - border-color: var(--github-color); - box-shadow: 0 8px 25px rgba(51, 51, 51, 0.3); - } - - .community-link.instagram { - border-color: var(--instagram-color); - } - - .community-link.instagram i { - color: var(--instagram-color); - } - - .community-link.instagram:hover { - background: var(--instagram-color); - border-color: var(--instagram-color); - box-shadow: 0 8px 25px rgba(228, 64, 95, 0.3); - } - - .community-link.linkedin { - border-color: var(--linkedin-color); - } - - .community-link.linkedin i { - color: var(--linkedin-color); - } - - .community-link.linkedin:hover { - background: var(--linkedin-color); - border-color: var(--linkedin-color); - box-shadow: 0 8px 25px rgba(0, 119, 181, 0.3); - } - - /* ----------------------------------------------------------------------------- +.community-links { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 1rem; + margin: 2rem 0; + padding: 0; + align-items: stretch; +} + +.community-link { + display: flex; + align-items: center; + justify-content: center; + gap: 0.625rem; + padding: 1rem; + height: 60px; + border-radius: 1rem; + text-decoration: none; + font-weight: 600; + font-size: 0.9rem; + letter-spacing: 0.025em; + transition: var(--transition-smooth); + border: 2px solid var(--md-default-fg-color--lightest); + background: var(--md-default-bg-color); + color: var(--md-default-fg-color); + text-align: center; + position: relative; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-sizing: border-box; + white-space: nowrap; + animation: breathe 4s ease-in-out infinite; +} + +.md-typeset .community-link:hover { + transform: translateY(-3px); + color: var(--md-accent-bg-color); + text-decoration: none; + animation: none; +} + +.md-typeset .community-link:active { + transform: translateY(-1px); +} + +.md-typeset .community-link { + font-size: 1.25em; + transition: var(--transition-base); + margin-right: 0.125rem; +} + +.md-typeset.community-link:hover, +.md-typeset .community-link:hover span.twemoji { + color: var(--md-accent-bg-color); + transform: scale(1.1); +} + +/* Colores específicos por red social */ +.community-link.telegram, +.community-link.telegram span.twemoji { + color: var(--telegram-color); + border-color: var(--telegram-color); +} + +.community-link.telegram:hover { + background: var(--telegram-color); + border-color: var(--telegram-color); + box-shadow: 0 8px 25px rgba(0, 136, 204, 0.3); +} + +.community-link.meetup, +.community-link.meetup span.twemoji { + color: var(--meetup-color); + border-color: var(--meetup-color); +} + +.community-link.meetup:hover, +.community-link.meetup span.twemoji:hover { + background: var(--meetup-color); + border-color: var(--meetup-color); + box-shadow: 0 8px 25px rgba(237, 28, 64, 0.3); +} + +.community-link.youtube, +.community-link.youtube span.twemoji { + border-color: var(--youtube-color); + color: var(--youtube-color); +} + +.community-link.youtube:hover, +.community-link.youtube span.twemoji:hover { + background: var(--youtube-color); + border-color: var(--youtube-color); + box-shadow: 0 8px 25px rgba(255, 0, 0, 0.3); +} + +.community-link.github, +.community-link.github span.twemoji { + color: var(--github-color); + border-color: var(--github-color); +} + +.community-link.github:hover, +.community-link.github span.twemoji:hover { + background: var(--github-color); + border-color: var(--github-color); + box-shadow: 0 8px 25px rgba(51, 51, 51, 0.3); +} + +.community-link.instagram, +.community-link.instagram span.twemoji { + color: var(--instagram-color); + border-color: var(--instagram-color); +} + +.community-link.instagram:hover, +.community-link.instagram span.twemoji:hover { + background: var(--instagram-color); + border-color: var(--instagram-color); + box-shadow: 0 8px 25px rgba(228, 64, 95, 0.3); +} + +.community-link.linkedin, +.community-link.linkedin span.twemoji { + color: var(--linkedin-color); + border-color: var(--linkedin-color); +} + +.community-link.linkedin:hover, +.community-link.linkedin span.twemoji:hover { + background: var(--linkedin-color); + border-color: var(--linkedin-color); + box-shadow: 0 8px 25px rgba(0, 119, 181, 0.3); +} + +/* ----------------------------------------------------------------------------- LEMA DE LA COMUNIDAD ----------------------------------------------------------------------------- */ - .community-motto { - text-align: center; - font-size: 1.5rem; - font-style: italic; - font-weight: 600; - color: var(--md-default-fg-color); - margin: 1rem auto; - padding: 1.25rem; - max-width: 600px; - position: relative; - background: var(--md-default-bg-color); - border: 1px solid var(--md-default-fg-color--lightest); - border-radius: var(--card-radius); - box-shadow: var(--md-shadow-z1); - } - - .community-motto::before { - content: '"'; - position: absolute; - top: -0.5rem; - left: 1rem; - font-size: 4rem; - color: var(--md-primary-fg-color); - font-family: Georgia, serif; - opacity: 0.3; - } - - .community-motto::after { - content: '"'; - position: absolute; - bottom: -2rem; - right: 1rem; - font-size: 4rem; - color: var(--md-primary-fg-color); - font-family: Georgia, serif; - opacity: 0.3; - } - - /* ----------------------------------------------------------------------------- +.community-motto { + text-align: center; + font-size: 1.5rem; + font-style: italic; + font-weight: 600; + color: var(--md-default-fg-color); + margin: 1rem auto; + padding: 1.25rem; + max-width: 600px; + position: relative; + background: var(--md-default-bg-color); + border: 1px solid var(--md-default-fg-color--lightest); + border-radius: var(--card-radius); + box-shadow: var(--md-shadow-z1); +} + +.community-motto::before { + content: '"'; + position: absolute; + top: -0.5rem; + left: 1rem; + font-size: 4rem; + color: var(--md-primary-fg-color); + font-family: Georgia, serif; + opacity: 0.3; +} + +.community-motto::after { + content: '"'; + position: absolute; + bottom: -2rem; + right: 1rem; + font-size: 4rem; + color: var(--md-primary-fg-color); + font-family: Georgia, serif; + opacity: 0.3; +} + +/* ----------------------------------------------------------------------------- NAVEGACIÓN Y SECCIONES ESPECIALES ----------------------------------------------------------------------------- */ - .quick-navigation { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); - gap: 0.625rem; - margin: 0.75rem auto; - max-width: 600px; - } - - .quick-navigation-title { - width: 100%; - text-align: center; - margin-bottom: 0.5rem; - } - - .quick-navigation-title i { - color: var(--md-primary-fg-color); - margin-right: 0.5rem; - } - - .community-highlight { - border-left: 4px solid var(--md-primary-fg-color); - margin: 2rem 0; - padding: 1.5rem; - } - - .upcoming-events { - margin: 0.75rem 0; - padding: 1.25rem 2rem; - } - - .upcoming-events h3 { - color: var(--md-default-fg-color); - margin-bottom: 1rem; - font-size: 1.5rem; - } - - .upcoming-events p { - color: var(--md-default-fg-color--light); - margin-bottom: 2rem; - font-size: 1.1rem; - } - - /* ----------------------------------------------------------------------------- +.quick-navigation { + display: flex; + flex-wrap: wrap; + gap: 0.625rem; + margin: 0.75rem auto; +} + +.quick-navigation-title { + width: 100%; + text-align: center; + margin-bottom: 0.5rem; +} + +.quick-navigation-title span.twemoji { + color: var(--md-primary-fg-color); + margin-right: 0.5rem; +} + +.community-highlight { + border-left: 4px solid var(--md-primary-fg-color); + margin: 2rem 0; + padding: 1.5rem; +} + +.upcoming-events { + margin: 0.75rem 0; + padding: 1.25rem 2rem; +} + +.upcoming-events h3 { + color: var(--md-default-fg-color); + margin-bottom: 1rem; + font-size: 1.5rem; +} + +p.upcoming-events { + color: var(--md-default-fg-color--light); + margin-bottom: 2rem; + font-size: 1.1rem; +} + +/* ----------------------------------------------------------------------------- ICONOGRAFÍA ----------------------------------------------------------------------------- */ - .fas, .fab { - color: var(--md-primary-fg-color); - } +span.twemoji { + color: var(--md-primary-fg-color); +} - h2 .fas, h3 .fas { - margin-right: 0.5rem; - font-size: 0.9em; - } +h2 span.twemoji, +h3 span.twemoji { + margin-right: 0.5rem; + font-size: 0.9em; +} - /* ----------------------------------------------------------------------------- +/* ----------------------------------------------------------------------------- ANIMACIONES ----------------------------------------------------------------------------- */ - @keyframes breathe { - 0%, 100% { - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - } - 50% { - box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); - } - } - - /* ----------------------------------------------------------------------------- +@keyframes breathe { + 0%, + 100% { + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + } + 50% { + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); + } +} + +/* ----------------------------------------------------------------------------- MEDIA QUERIES RESPONSIVAS ----------------------------------------------------------------------------- */ - @media (max-width: 768px) { - .participation-grid, - .year-cards { - grid-template-columns: 1fr; - gap: 1rem; - } - - .participation-grid .participation-card:nth-child(3):nth-last-child(1) { - grid-column: 1; - } - - .stats-grid { - grid-template-columns: repeat(2, 1fr); - gap: 1rem; - } - - .community-links { - justify-content: center; - gap: 0.75rem; - } - - .community-link { - min-width: 140px; - padding: 1rem; - } - - .community-link i { - font-size: 1.5rem; - } - - .hero-section { - padding: 1.5rem 1rem; - } - - .hero-logo { - width: 5rem; - height: 5rem; - } - - .action-buttons { - flex-direction: column; - align-items: center; - } - - .action-buttons a { - width: 100%; - max-width: 250px; - } - - /* Voluntarios en móvil */ - .volunteer-card { - padding: 1.5rem; - } - - .volunteer-card .card-header { - grid-template-columns: 1fr; - text-align: center; - gap: 1.5rem; - } - - .volunteer-card .avatar-section { - order: -1; - } - - /* Comunidades aliadas en móvil */ - .communities-grid { - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); - gap: 1rem; - margin: 1.5rem 0; - } - - .community-card { - padding: 1.5rem 1rem; - } - - .community-card img { - width: 100px; - height: 100px; - } - - .community-card h4 { - font-size: 1rem; - } - - /* Meetups responsivos */ - .meetup-hero { - padding: 1.5rem 1rem; - margin: 1rem 0; - } - - .meetup-hero h1 { - font-size: clamp(1.5rem, 5vw, 2.2rem); - } - - .meetup-subtitle { - font-size: 1rem; - } - - .event-details { - grid-template-columns: 1fr; - gap: 0.75rem; - margin: 1.5rem 0; - } - - .detail-card { - padding: 1rem; - } - - .talk-section { - margin: 1.5rem 0; - } - - .talk-header { - padding: 1.25rem 1rem; - } - - .talk-header h3 { - font-size: 1.2rem; - } - - .speaker-section { - flex-direction: column; - text-align: center; - padding: 1.25rem 1rem; - gap: 1rem; - } - - .speaker-photo img { - width: 120px; - height: 120px; - } - - .talk-description { - padding: 1.25rem 1rem; - } - - .talk-description p { - font-size: 0.95rem; - } - - .tech-stack { - grid-template-columns: 1fr; - gap: 0.5rem; - } - - .tech-stack > div { - padding: 0.75rem; - } - - .video-container { - padding: 0 1rem; - } - - .youtube-btn { - padding: 0.75rem 1rem; - font-size: 0.9rem; - } - } +@media (max-width: 768px) { + .participation-grid, + .year-cards { + grid-template-columns: 1fr; + gap: 1rem; + } + + .participation-grid .participation-card:nth-child(3):nth-last-child(1) { + grid-column: 1; + } + + .stats-grid { + grid-template-columns: repeat(2, 1fr); + gap: 1rem; + } + + .community-links { + justify-content: center; + gap: 0.75rem; + } + + .community-link { + min-width: 140px; + padding: 1rem; + } + + .community-link span.twemoji { + font-size: 1.5rem; + } + + .hero-section { + padding: 1.5rem 1rem; + } + + .hero-logo { + width: 5rem; + height: 5rem; + } + + .action-buttons { + flex-direction: column; + align-items: center; + } + + .action-buttons a { + width: 100%; + max-width: 250px; + } + + /* Voluntarios en móvil */ + .volunteer-card { + padding: 1.5rem; + } + + .volunteer-card .card-header { + grid-template-columns: 1fr; + text-align: center; + gap: 1.5rem; + } + + .volunteer-card .avatar-section { + order: -1; + } + + /* Comunidades aliadas en móvil */ + .communities-grid { + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 1rem; + margin: 1.5rem 0; + } + + .community-card { + padding: 1.5rem 1rem; + } + + .community-card img { + width: 100px; + height: 100px; + } + + .community-card h4 { + font-size: 1rem; + } + + /* Meetups responsivos */ + .meetup-hero { + padding: 1.5rem 1rem; + margin: 1rem 0; + } + + .meetup-hero h1 { + font-size: clamp(1.5rem, 5vw, 2.2rem); + } + + .meetup-subtitle { + font-size: 1rem; + } + + .event-details { + grid-template-columns: 1fr; + gap: 0.75rem; + margin: 1.5rem 0; + } + + .detail-card { + padding: 1rem; + } + + .talk-section { + margin: 1.5rem 0; + } + + .talk-header { + padding: 1.25rem 1rem; + } + + .talk-header h3 { + font-size: 1.2rem; + } + + .speaker-section { + flex-direction: column; + text-align: center; + padding: 1.25rem 1rem; + gap: 1rem; + } + + .speaker-photo img { + width: 120px; + height: 120px; + } + + .talk-description { + padding: 1.25rem 1rem; + } + + .talk-description p { + font-size: 0.95rem; + } + + .tech-stack { + grid-template-columns: 1fr; + gap: 0.5rem; + } + + .tech-stack > div { + padding: 0.75rem; + } + + .video-container { + padding: 0 1rem; + } + + .youtube-btn { + padding: 0.75rem 1rem; + font-size: 0.9rem; + } +} diff --git a/docs/index.md b/docs/index.md index 8c42272..24700d3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -2,8 +2,7 @@

Bienvenidos a
PythonCDMX

-

#PythonCDMX es un grupo de personas interesadas en aprender y compartir su conocimiento sobre el lenguaje de programación Python. El objetivo es estar en contacto con más gente interesada en innovación y tecnología. -

+

#PythonCDMX es un grupo de personas interesadas en aprender y compartir su conocimiento sobre el lenguaje de programación Python. El objetivo es estar en contacto con más gente interesada en innovación y tecnología.

Explorar charlas Participa @@ -13,41 +12,51 @@
Vine por el código, me quedé por la comunidad
---- +## :fontawesome-solid-link: Conoce a quienes hacen posible **Python CDMX!** -
-

Conoce a quienes hacen posible
Python CDMX!

- Voluntarios - Ponentes -
+[:fontawesome-solid-arrow-right: Voluntarios](/comunidad/voluntarios#voluntarios-de-python-cdmx) +[:fontawesome-solid-arrow-right: Ponentes](/comunidad/ponentes#ponentes-de-pyut) +{ .text-align-center } -
-

¡Únete a Nuestros Meetups!

-

Charlas técnicas, networking y aprendizaje colaborativo

- Ver Meetups -
+## :fontawesome-solid-microphone: ¡Únete a Nuestros Meetups! ---- +Charlas técnicas, networking y aprendizaje colaborativo +{ .text-align-center .subtitle } -## Formas de Participación +[:fontawesome-solid-calendar: Ver Meetups](/meetups/2025){ .upcoming-btn } +{ .text-align-center } + +## :fontawesome-solid-users: Formas de Participación + +
+ +- :fontawesome-solid-microphone: Ser Ponente + { .card--header } + + Comparte tu conocimiento con la comunidad. Charlas técnicas, casos de uso, mejores prácticas y más. + { .card--body } + + [Conoce Más](/comunidad/ponentes) + { .card--footer } + +- :fontawesome-solid-hands-helping: Ser Voluntario + { .card--header } + + Ayuda a organizar eventos, gestionar redes sociales, o contribuir con el desarrollo del sitio web. + { .card--body } + + [Únete](/comunidad/voluntarios) + { .card--footer } + +- :fontawesome-solid-users: Asistir + { .card--header } + + Participa en nuestros meetups, aprende de expertos y conecta con otros desarrolladores Python. + { .card--body } + + [Ver Eventos](/meetups){ .btn .btn-primary } -
-
-

Ser Ponente

-

Comparte tu conocimiento con la comunidad. Charlas técnicas, casos de uso, mejores prácticas y más.

- Conoce Más -
-
-

Ser Voluntario

-

Ayuda a organizar eventos, gestionar redes sociales, o contribuir con el desarrollo del sitio web.

- Únete -
-
-

Asistir

-

Participa en nuestros meetups, aprende de expertos y conecta con otros desarrolladores Python.

- Ver Eventos -
--- diff --git a/docs/meetups/2023/202309-septiembre.md b/docs/meetups/2023/202309-septiembre.md index c96b13f..a10cb58 100644 --- a/docs/meetups/2023/202309-septiembre.md +++ b/docs/meetups/2023/202309-septiembre.md @@ -2,7 +2,7 @@ title: "Utilizando Servicios AI de AWS y Metaprogramación en Python" --- -# Meetup #PythonCDMX - Septiembre 2023 +# Meetup #PythonCDMX :fontawesome-brands-python: - Septiembre 2023

Utilizando Servicios AI de AWS y Metaprogramación en Python

diff --git a/docs/meetups/2023/202310-octubre.md b/docs/meetups/2023/202310-octubre.md index 249ebf0..d114728 100644 --- a/docs/meetups/2023/202310-octubre.md +++ b/docs/meetups/2023/202310-octubre.md @@ -2,7 +2,7 @@ title: "¡De Jupyter a Web en Minutos!" --- -# Meetup #PythonCDMX - Octubre 2023 +# Meetup #PythonCDMX :fontawesome-brands-python: - Octubre 2023

¡De Jupyter a Web en Minutos!

diff --git a/docs/meetups/2023/202311-noviembre.md b/docs/meetups/2023/202311-noviembre.md index 5cb329d..09b130c 100644 --- a/docs/meetups/2023/202311-noviembre.md +++ b/docs/meetups/2023/202311-noviembre.md @@ -2,7 +2,7 @@ title: "GitOps 101 / Python: La Forja de un Lenguaje" --- -# Meetup #PythonCDMX - Noviembre 2023 +# Meetup #PythonCDMX :fontawesome-brands-python: - Noviembre 2023

GitOps 101 / Python: La Forja de un Lenguaje

diff --git a/docs/meetups/2023/index.md b/docs/meetups/2023/index.md index 7e781c3..dd42b4c 100644 --- a/docs/meetups/2023/index.md +++ b/docs/meetups/2023/index.md @@ -2,7 +2,7 @@ Python CDMX Logo
-# Meetups 2023 +# Meetups 2023 :fontawesome-solid-calendar-alt:
Nuestro primer año como comunidad Python CDMX @@ -10,7 +10,7 @@ --- -| **Fecha** | **Charla** | **Ponente** | **Lugar** | **Detalles** | +| :fontawesome-solid-calendar: **Fecha** | :fontawesome-solid-microphone: **Charla** | :fontawesome-solid-user: **Ponente** | :fontawesome-solid-map-marker-alt: **Lugar** | :fontawesome-solid-link: **Detalles** | |:---|:---|:---|:---|:---| | **14 Noviembre 2023** | GitOps: Automatizando el despliegue de aplicaciones | Carlos Reyes | Wizeline México | [Ver detalles](202311-noviembre) | | **14 Noviembre 2023** | Historia de Python: De Guido van Rossum a la actualidad | Gustavo Vera | Wizeline México | [Ver detalles](202311-noviembre) | @@ -20,7 +20,7 @@ --- -## Estadísticas 2023 +## :fontawesome-solid-star: Estadísticas 2023
diff --git a/docs/meetups/2024/202401-enero.md b/docs/meetups/2024/202401-enero.md index a98bf6e..4ce6e62 100644 --- a/docs/meetups/2024/202401-enero.md +++ b/docs/meetups/2024/202401-enero.md @@ -2,7 +2,7 @@ title: "Ambientes virtuales con venv, pyenv y poetry" --- -# Meetup #PythonCDMX - Enero 2024 +# Meetup #PythonCDMX :fontawesome-brands-python: - Enero 2024

Ambientes virtuales con venv, pyenv y poetry

diff --git a/docs/meetups/2024/202402-febrero.md b/docs/meetups/2024/202402-febrero.md index c9ef89a..19c35da 100644 --- a/docs/meetups/2024/202402-febrero.md +++ b/docs/meetups/2024/202402-febrero.md @@ -2,7 +2,7 @@ title: "Del Código al Clic: Transforma Ideas en Interfaces" --- -# Meetup #PythonCDMX - Febrero 2024 +# Meetup #PythonCDMX :fontawesome-brands-python: - Febrero 2024

Del Código al Clic: Transforma Ideas en Interfaces

diff --git a/docs/meetups/2024/202403-marzo.md b/docs/meetups/2024/202403-marzo.md index 06c30dd..c8020ae 100644 --- a/docs/meetups/2024/202403-marzo.md +++ b/docs/meetups/2024/202403-marzo.md @@ -2,7 +2,7 @@ title: "Desarrollo de API REST con Flask" --- -# Meetup #PythonCDMX - Marzo 2024 +# Meetup #PythonCDMX :fontawesome-brands-python: - Marzo 2024

Desarrollo de API REST con Flask

diff --git a/docs/meetups/2024/202404-abril.md b/docs/meetups/2024/202404-abril.md index 919f5a7..c5588e5 100644 --- a/docs/meetups/2024/202404-abril.md +++ b/docs/meetups/2024/202404-abril.md @@ -2,7 +2,7 @@ title: "Desarrollo en Python usando Contenedores" --- -# Meetup #PythonCDMX - Abril 2024 +# Meetup #PythonCDMX :fontawesome-brands-python: - Abril 2024

Desarrollo en Python usando Contenedores

diff --git a/docs/meetups/2024/202405-mayo.md b/docs/meetups/2024/202405-mayo.md index b638d7c..a2c7178 100644 --- a/docs/meetups/2024/202405-mayo.md +++ b/docs/meetups/2024/202405-mayo.md @@ -2,7 +2,7 @@ title: "Pydantic: Validaciones de datos con Type Hints" --- -# Meetup #PythonCDMX - Mayo 2024 +# Meetup #PythonCDMX :fontawesome-brands-python: - Mayo 2024

Pydantic: Validaciones de datos con Type Hints

diff --git a/docs/meetups/2024/202406-junio.md b/docs/meetups/2024/202406-junio.md index 8043bcd..4e22471 100644 --- a/docs/meetups/2024/202406-junio.md +++ b/docs/meetups/2024/202406-junio.md @@ -2,7 +2,7 @@ title: "Matemáticas y Python: Ciencia Detrás de la Regresión Lineal" --- -# Meetup #PythonCDMX - Junio 2024 +# Meetup #PythonCDMX :fontawesome-brands-python: - Junio 2024

Matemáticas y Python: Ciencia Detrás de la Regresión Lineal

diff --git a/docs/meetups/2024/202407-julio.md b/docs/meetups/2024/202407-julio.md index e775d8a..a179a0d 100644 --- a/docs/meetups/2024/202407-julio.md +++ b/docs/meetups/2024/202407-julio.md @@ -2,7 +2,7 @@ title: "¡Doble Charla! Python sin GIL / Esquemas ETL" --- -# Meetup #PythonCDMX - Julio 2024 +# Meetup #PythonCDMX :fontawesome-brands-python: - Julio 2024

¡Doble Charla! Python sin GIL / Esquemas ETL

diff --git a/docs/meetups/2024/202408-agosto.md b/docs/meetups/2024/202408-agosto.md index e2b7224..973185d 100644 --- a/docs/meetups/2024/202408-agosto.md +++ b/docs/meetups/2024/202408-agosto.md @@ -2,7 +2,7 @@ title: "Protocolos en Python / Convertirse en Contribuidor Open Source" --- -# Meetup #PythonCDMX - Agosto 2024 +# Meetup #PythonCDMX :fontawesome-brands-python: - Agosto 2024

Protocolos en Python / Convertirse en Contribuidor Open Source

diff --git a/docs/meetups/2024/202409-septiembre.md b/docs/meetups/2024/202409-septiembre.md index 8c284b5..0014e67 100644 --- a/docs/meetups/2024/202409-septiembre.md +++ b/docs/meetups/2024/202409-septiembre.md @@ -2,7 +2,7 @@ title: "Representaciones Fonéticas / Rich & Textual" --- -# Meetup #PythonCDMX - Septiembre 2024 +# Meetup #PythonCDMX :fontawesome-brands-python: - Septiembre 2024

Representaciones Fonéticas / Rich & Textual

diff --git a/docs/meetups/2024/202410-octubre.md b/docs/meetups/2024/202410-octubre.md index 54c526d..d75347c 100644 --- a/docs/meetups/2024/202410-octubre.md +++ b/docs/meetups/2024/202410-octubre.md @@ -2,7 +2,7 @@ title: "Una ida y una vuelta: Cómo iniciar en el opensource" --- -# Meetup #PythonCDMX - Octubre 2024 +# Meetup #PythonCDMX :fontawesome-brands-python: - Octubre 2024

Una ida y una vuelta: Cómo iniciar en el opensource

diff --git a/docs/meetups/2024/202411-noviembre.md b/docs/meetups/2024/202411-noviembre.md index 384306b..0863d54 100644 --- a/docs/meetups/2024/202411-noviembre.md +++ b/docs/meetups/2024/202411-noviembre.md @@ -2,7 +2,7 @@ title: "Evita Anti-patrones en Python / ¿Qué y por qué ChatGPT?" --- -# Meetup #PythonCDMX - Noviembre 2024 +# Meetup #PythonCDMX :fontawesome-brands-python: - Noviembre 2024

Evita Anti-patrones en Python / ¿Qué y por qué ChatGPT?

diff --git a/docs/meetups/2024/index.md b/docs/meetups/2024/index.md index d6fcac7..686e31b 100644 --- a/docs/meetups/2024/index.md +++ b/docs/meetups/2024/index.md @@ -2,7 +2,7 @@ Python CDMX Logo
-# Meetups 2024 +# Meetups 2024 :fontawesome-solid-calendar-alt:
Conectando desarrolladores Python en la Ciudad de México @@ -10,7 +10,7 @@ --- -| **Fecha** | **Charla** | **Ponente** | **Lugar** | **Detalles** | +| :fontawesome-solid-calendar: **Fecha** | :fontawesome-solid-microphone: **Charla** | :fontawesome-solid-user: **Ponente** | :fontawesome-solid-map-marker-alt: **Lugar** | :fontawesome-solid-link: **Detalles** | |:---|:---|:---|:---|:---| | **12 Noviembre 2024** | Mejora tu código: Evita anti-patrones en Python | Alejandro Lopez | Wizeline México | [Ver detalles](202411-noviembre) | | **12 Noviembre 2024** | Exactamente qué y (sobre todo) por qué ChatGPT | Hugo Ramírez | Wizeline México | [Ver detalles](202411-noviembre) | @@ -30,7 +30,7 @@ --- -## Estadísticas 2024 +## :fontawesome-solid-star: Estadísticas 2024
diff --git a/docs/meetups/2025/202501-enero.md b/docs/meetups/2025/202501-enero.md index 451eca6..c5f5527 100644 --- a/docs/meetups/2025/202501-enero.md +++ b/docs/meetups/2025/202501-enero.md @@ -2,7 +2,7 @@ title: "Crea extensiones para LibreOffice / PCI DSS en Python" --- -# Meetup #PythonCDMX - Enero 2025 +# Meetup #PythonCDMX :fontawesome-brands-python: - Enero 2025

Crea extensiones para LibreOffice / PCI DSS en Python

diff --git a/docs/meetups/2025/202502-febrero.md b/docs/meetups/2025/202502-febrero.md index d7c7147..7c90c53 100644 --- a/docs/meetups/2025/202502-febrero.md +++ b/docs/meetups/2025/202502-febrero.md @@ -2,7 +2,7 @@ title: "Embeddings / Advent of Code" --- -# Meetup #PythonCDMX - Febrero 2025 +# Meetup #PythonCDMX :fontawesome-brands-python: - Febrero 2025

Embeddings / Advent of Code

diff --git a/docs/meetups/2025/202503-marzo.md b/docs/meetups/2025/202503-marzo.md index 1a8386c..16cb009 100644 --- a/docs/meetups/2025/202503-marzo.md +++ b/docs/meetups/2025/202503-marzo.md @@ -2,7 +2,7 @@ title: "Agentes de IA / PySide6" --- -# Meetup #PythonCDMX - Marzo 2025 +# Meetup #PythonCDMX :fontawesome-brands-python: - Marzo 2025

Agentes de IA / PySide6

diff --git a/docs/meetups/2025/202504-abril.md b/docs/meetups/2025/202504-abril.md index 609b77f..20ad736 100644 --- a/docs/meetups/2025/202504-abril.md +++ b/docs/meetups/2025/202504-abril.md @@ -2,7 +2,7 @@ title: "Kubernetes y IA" --- -# Meetup #PythonCDMX - Abril 2025 +# Meetup #PythonCDMX :fontawesome-brands-python: - Abril 2025

Kubernetes y IA

diff --git a/docs/meetups/2025/202504-unam.md b/docs/meetups/2025/202504-unam.md index 75e418d..59a30df 100644 --- a/docs/meetups/2025/202504-unam.md +++ b/docs/meetups/2025/202504-unam.md @@ -2,7 +2,7 @@ title: "¡Extra! Sudo Ciencias en la UNAM" --- -# Meetup #PythonCDMX - Abril 2025 +# Meetup #PythonCDMX :fontawesome-brands-python: - Abril 2025

¡Extra! Sudo Ciencias en la UNAM

diff --git a/docs/meetups/2025/202505-mayo.md b/docs/meetups/2025/202505-mayo.md index 6bd07d1..6da946e 100644 --- a/docs/meetups/2025/202505-mayo.md +++ b/docs/meetups/2025/202505-mayo.md @@ -2,7 +2,7 @@ title: "Publicando un paquete en PyPI" --- -# Meetup #PythonCDMX - Mayo 2025 +# Meetup #PythonCDMX :fontawesome-brands-python: - Mayo 2025

Publicando un paquete en PyPI

diff --git a/docs/meetups/2025/202506-junio.md b/docs/meetups/2025/202506-junio.md index 26d76e8..c364365 100644 --- a/docs/meetups/2025/202506-junio.md +++ b/docs/meetups/2025/202506-junio.md @@ -2,7 +2,7 @@ title: "Usando Python y software libre" --- -# Meetup #PythonCDMX - Junio 2025 +# Meetup #PythonCDMX :fontawesome-brands-python: - Junio 2025

Usando Python y software libre

diff --git a/docs/meetups/2025/202507-julio.md b/docs/meetups/2025/202507-julio.md index 32c001c..f07f0a9 100644 --- a/docs/meetups/2025/202507-julio.md +++ b/docs/meetups/2025/202507-julio.md @@ -2,7 +2,7 @@ title: "Cómo preparar una ambiente de desarrollo con Python desde zero" --- -# Meetup #PythonCDMX - Julio 2025 +# Meetup #PythonCDMX :fontawesome-brands-python: - Julio 2025

Cómo preparar una ambiente de desarrollo con Python desde zero

diff --git a/docs/meetups/2025/202508-agosto.md b/docs/meetups/2025/202508-agosto.md index 4bc8477..76ccc6d 100644 --- a/docs/meetups/2025/202508-agosto.md +++ b/docs/meetups/2025/202508-agosto.md @@ -2,7 +2,7 @@ title: "Escalando tus aplicaciones Python con Ray" --- -# Meetup #PythonCDMX - Agosto 2025 +# Meetup #PythonCDMX :fontawesome-brands-python: - Agosto 2025

Escalando tus aplicaciones Python con Ray

diff --git a/docs/meetups/2025/index.md b/docs/meetups/2025/index.md index e085648..7cbd548 100644 --- a/docs/meetups/2025/index.md +++ b/docs/meetups/2025/index.md @@ -2,7 +2,7 @@ Python CDMX Logo
-# Meetups 2025 +# Meetups 2025 :fontawesome-solid-calendar-alt:
Conectando desarrolladores Python en la Ciudad de México @@ -10,7 +10,7 @@ --- -| **Fecha** | **Charla** | **Ponente** | **Lugar** | **Detalles** | +| :fontawesome-solid-calendar: **Fecha** | :fontawesome-solid-microphone: **Charla** | :fontawesome-solid-user: **Ponente** | :fontawesome-solid-map-marker-alt: **Lugar** | :fontawesome-solid-link: **Detalles** | |:---|:---|:---|:---|:---| | **12 Agosto 2025** | Cómo preparar una ambiente de desarrollo con Python desde zero | Juan Guillermo Gómez | Jardin Chapultepec | [Ver detalles](202508-agosto) | | **08 Julio 2025** | Cómo preparar una ambiente de desarrollo con Python desde zero | David Sol | Clara | [Ver detalles](202507-julio) | @@ -28,7 +28,7 @@ --- -## Estadísticas 2025 +## :fontawesome-solid-star: Estadísticas 2025
diff --git a/docs/meetups/index.md b/docs/meetups/index.md index 2b11f26..c0e841d 100644 --- a/docs/meetups/index.md +++ b/docs/meetups/index.md @@ -10,7 +10,7 @@ --- -## Años Disponibles +## :fontawesome-solid-calendar: Años Disponibles
@@ -39,7 +39,7 @@ --- -## Estadísticas Generales +## :fontawesome-solid-star: Estadísticas Generales
diff --git a/mkdocs.yml b/mkdocs.yml index 39a0fe9..117abe8 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -60,10 +60,6 @@ theme: - search.suggest - toc.follow - # Icons - icon: - repo: fontawesome/brands/github - # Plugins plugins: - search: