diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 0000000..f7067f2 --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,7 @@ +{ + "MD033": false, + "MD041": false, + "MD013": false, + "MD025": false, + "MD026": false +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d27961..f3a7f20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,71 @@ El formato sigue [Keep a Changelog](https://keepachangelog.com/es-ES/1.0.0/) y [ ## [Unreleased] +### Añadido +- **Sistema de Estilos para Alianzas**: Implementación completa de estilos CSS para la sección de comunidades aliadas + - `.communities-grid`: Grid responsivo con auto-fit y minmax(280px, 1fr) + - `.community-card`: Tarjetas con efectos hover avanzados y animación de brillo deslizante + - Imágenes circulares con escala en hover y transiciones suaves + - Diseño completamente responsivo optimizado para móvil +- **Galería de Imágenes Completa**: 6 fotos profesionales de ponentes destacados + imagen de voluntario +- **Sistema de Automatización**: Scripts para detección y corrección automática de enlaces rotos +- **Estándares de Calidad**: Configuración MarkdownLint para validación automática de documentación + +### Cambiado +- **Documentación Reorganizada**: Reestructuración completa entre README.md y CONTRIBUTING.md + - README.md: Simplificado con información esencial y referencias a documentación detallada + - CONTRIBUTING.md: Expandido con proceso completo de fork, setup, workflow detallado y guidelines específicas + - Separación clara entre información de usuario y documentación de contribución +- **CSS Completamente Optimizado**: Depuración final del archivo custom.css + - **Eliminación total de `!important`**: 7 instancias removidas de botones y navegación para mejor mantenibilidad + - **Reorganización estructural**: Orden lógico desde elementos básicos hasta responsive design + - **Consolidación avanzada**: Enlaces de redes sociales y componentes mejor organizados + - **Mejora de legibilidad**: Indentación consistente y comentarios descriptivos mejorados + - **Estructura CSS profesional**: 13 secciones claramente definidas desde variables hasta media queries +- **Secciones de Comunidad Rediseñadas**: Ponentes y voluntarios con sistema de pestañas funcional e imágenes personales integradas +- **Enlaces Corregidos**: Eliminación sistemática de enlaces rotos en toda la documentación +- **Navegación Simplificada**: Páginas de índice de meetups optimizadas sin contenido duplicado + +### Eliminado +- **Dependencias CSS problemáticas**: Eliminación completa de `!important` para arquitectura más limpia +- **Redundancias CSS**: Código duplicado y selectores no utilizados removidos +- **Contenido Obsoleto**: Archivo tags.md y elementos duplicados removidos para mejorar mantenimiento + +### Arquitectura y Sistema +- **CSS Sin `!important`**: Migración completa a selectores específicos y arquitectura CSS limpia +- **Estructura CSS Optimizada**: 13 secciones organizadas lógicamente + 1. Variables CSS personalizadas + 2. Sección Hero + 3. Sistema de botones + 4. Tarjetas y grillas + 5. Tarjetas de voluntarios + 6. Tarjetas de comunidades aliadas (NUEVO) + 7. Enlaces de comunidad + 8. Lema de la comunidad + 9. Navegación y secciones especiales + 10. Iconografía + 11. Animaciones + 12. Media queries responsivas + 13. Utilidades y helpers +- **Documentación Profesional**: Separación clara entre información de usuario y guías de contribución +- **Eliminación Completa de Estilos Inline**: Migración total a CSS centralizado para separación de presentación y contenido +- **Sistema Unificado de Tarjetas**: Ponentes y voluntarios ahora usan la misma estructura base (`.volunteer-card`) con contenido diferenciado +- **Arquitectura Mantenible**: Implementación de `.volunteer-header` elimina selectores hardcodeados y facilita escalabilidad +- **Optimización CSS Avanzada**: Reducción significativa en complejidad de código mediante eliminación de `!important` y reorganización +- **Sistema de Badges Comprehensivo**: 8 tipos de roles predefinidos con colores específicos para identificación visual +- **Reorganización Alfabética**: Todos los ponentes organizados alfabéticamente para mejor navegación y mantenimiento + +### Impacto +- **Arquitectura CSS Moderna**: Eliminación de `!important` mejora la mantenibilidad y especificidad natural +- **Mantenimiento Simplificado**: Separación clara de responsabilidades entre archivos de documentación +- **CSS Escalable**: Nueva organización permite agregar estilos sin conflictos de especificidad +- **Presentación Profesional**: Sistema unificado con efectos visuales modernos para alianzas y comunidades +- **Documentación Clara**: Proceso de contribución bien definido para nuevos colaboradores +- **Arquitectura Moderna**: CSS centralizado mejora dramáticamente la mantenibilidad y consistencia visual +- **Escalabilidad Mejorada**: Nueva arquitectura permite agregar contenido sin modificar estilos + +## [0.1.0] + ### Añadido - **Nueva Sección Participa**: Creada sección modular con tabs para mejor organización - **Nuevo Voluntario**: Agregada Mónica Ortega a la lista de voluntarios destacados @@ -73,7 +138,7 @@ El formato sigue [Keep a Changelog](https://keepachangelog.com/es-ES/1.0.0/) y [ --- -## [1.0.0] - 2024-06-24 +## [0.0.2] - 2024-06-24 ### Añadido - Lanzamiento inicial del sitio web Python CDMX Charlas @@ -94,7 +159,7 @@ El formato sigue [Keep a Changelog](https://keepachangelog.com/es-ES/1.0.0/) y [ --- -## [0.1.0] - 2024-01-31 +## [0.0.1] - 2024-01-31 ### Añadido - Primer README.md y documentación básica del proyecto. diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..ca8cff5 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,631 @@ +# Python CDMX Project Memory + +> **For New Developers**: This file contains all the essential information needed to continue developing this project using Claude AI. Read this completely before making any changes. + +## Project Overview +This is the Python CDMX community website built with MkDocs Material. The site showcases meetups, community participation, and Python-related content for Mexico City's Python community with a modern Material Design approach. + +**Community Motto**: *"Vine por el código, me quedé por la comunidad"* - This phrase is central to the community and prominently displayed on the homepage. + +## Architecture & Technology Stack +- **Framework**: MkDocs Material +- **Styling**: Optimized custom CSS with Material Design principles +- **Content**: Markdown files with reusable HTML components +- **Deployment**: Static site generation +- **Content Management**: Manual markdown editing + automated scripts +- **Icons**: FontAwesome 6.4.0 via CDN + +## File Structure & Organization +- `docs/` - All content and assets +- `docs/css/custom.css` - Main styling file (~450 lines, heavily optimized) +- `docs/index.md` - Homepage with hero section, motto, and participation cards +- `docs/components/` - Reusable markdown components + - `community-links.md` - Social media links with brand colors + - `quick-navigation.md` - Page navigation cards system +- `docs/meetups/` - Event documentation organized by year +- `docs/comunidad/` - Community pages (volunteers, speakers, etc.) + - `ponentes.md` - **UPDATED**: Unified card system, alphabetical order, no tabs + - `voluntarios.md` - Modern volunteer cards with TOC navigation +- `scripts/` - Python automation scripts for content generation + +## Design System & CSS Guidelines + +### Color Palette +```css +/* Primary Colors */ +--python-green: #4CAF50 +--python-green-dark: #45a049 +--python-white: #ffffff + +/* Social Media Brand Colors */ +--telegram-color: #0088cc +--meetup-color: #ed1c40 +--youtube-color: #ff0000 +--github-color: #333333 +--instagram-color: #e4405f +--linkedin-color: #0077b5 +``` + +### CSS Architecture +- **Variables-first approach**: All colors, transitions, and spacing use CSS custom properties +- **MkDocs Material integration**: Leverages native variables (`var(--md-primary-fg-color)`) +- **Responsive design**: Single breakpoint at 768px for mobile +- **Component-based**: Clear separation of concerns with dedicated sections +- **Maintainable selectors**: Uses semantic classes instead of hardcoded identifiers +- **Optimized structure**: Consolidated media queries, unified transitions +- **Heavily optimized**: Eliminated duplications, consistent variable usage + +### Component Classes + +#### Core Layout +- `.hero-section` - Main landing area with logo and buttons +- `.community-motto` - Highlighted community slogan with decorative quotes +- `.participation-grid` - 2-column grid (1 on mobile) with centered 3rd card + +#### Cards & Content +- `.participation-card` - Large centered icons with call-to-action buttons +- `.year-card` - Annual summaries with specialized styling and hover effects +- `.stat-card` - Statistics display cards +- `.volunteer-card` - **UNIFIED SYSTEM**: Used for both volunteers AND speakers with identical structure + - Volunteers: Focus on community contributions and organizational roles + - Speakers: Focus on technical specialties and recent talks +- `.community-highlight` - Special highlighted sections +- `.upcoming-events` - Event highlight sections + +#### Navigation & Buttons +- `.action-buttons` - Hero button containers +- `.btn`, `.btn-primary` - Standard action buttons (green) +- `.btn-nav` - Discrete navigation buttons (minimal style) +- `.btn-action` - Volunteer card action buttons (outline style) +- `.quick-navigation` - End-of-page navigation grid +- `.quick-navigation-title` - Navigation section titles + +#### Community Links +- `.community-links` - Social media grid with brand colors +- `.community-link` - Individual social platform buttons with hover effects +- Specific classes: `.telegram`, `.meetup`, `.youtube`, `.github`, `.instagram`, `.linkedin` + +#### Communities & Partnerships +- `.communities-grid` - **NEW**: Auto-fit responsive grid for partner communities with minmax(280px, 1fr) +- `.community-card` - **NEW**: Partner community cards with advanced hover effects + - Sliding shine animation on hover + - Circular images with scale transformation + - Smooth transitions using existing CSS variables + - Mobile-optimized responsive design +- `.community-card img` - Circular community logos (100px) with hover scale effect +- `.community-card h3` - Community names with centered alignment +- `.community-card p` - Community descriptions with proper spacing + +#### Volunteer System (Optimized & Maintainable) +- `.volunteer-card` - Main volunteer profile container with grid layout +- `.volunteer-header` - **NEW**: Maintainable class for hiding TOC headers +- `.card-header` - Two-column grid: info on left, avatar/social on right +- `.card-info` - Left column with name, subtitle, and badges +- `.card-title` - Volunteer names (h3 elements within cards) +- `.card-subtitle` - Role descriptions with proper hierarchy +- `.badges-container` - Flex container for role badges +- `.badge` - Discrete role badges with semi-transparent backgrounds + - `.badge.ambassador` - Green theme for ambassadors + - `.badge.organizer` - Blue theme for organizers + - `.badge.production` - Orange theme for production roles + - `.badge.host` - Purple theme for event hosts + - `.badge.technical` - Gray theme for technical support + - `.badge.support` - Brown theme for general support + - `.badge.global` - Pink theme for global representation + - `.badge.strategic` - Indigo theme for strategic roles +- `.avatar-section` - Right column with circular avatar and social icons +- `.volunteer-avatar` - 100px circular images with hover scale effect +- `.social-icons` - Flex container for social media links +- `.social-icon` - Individual social platform buttons +- `.card-content` - Main content area with role details +- `.card-role` - Container for role title, description, and contributions +- `.role-title` - Uppercase, prominent role titles +- `.role-description` - Italic, lighter role descriptions + +## Development Workflow + +### CSS Modifications +1. **NEVER use inline styles** - Always use classes in custom.css +2. **NEVER use `!important`** - Use specific selectors and proper CSS architecture instead +3. Use existing CSS variables for consistency +4. Follow the established sections in custom.css (13 organized sections): + - Variables CSS personalizadas + - Sección Hero + - Sistema de botones + - Tarjetas y grillas + - Tarjetas de voluntarios + - **Tarjetas de comunidades aliadas** (NEW) + - Enlaces de comunidad + - Lema de la comunidad + - Navegación y secciones especiales + - Iconografía + - Animaciones + - Media queries responsivas + - Utilidades y helpers +5. Test in both light and dark modes +6. Ensure mobile responsiveness at 768px breakpoint +7. **Always prefer specific selectors over `!important`** for maintainable CSS architecture + +### Content Updates +- Event pages: Follow existing year/month structure in `docs/meetups/` +- Images: Store in appropriate `docs/images/` subdirectories + - `voluntarios/` - Volunteer profile images + - `ponentes/` - Speaker profile images (organized alphabetically) + - `meetup/` - Event promotional images + - `comunidades/` - Partner community logos +- Community content: Update respective pages in `docs/comunidad/` +- Components: Use `--8<-- "components/component-name.md"` for includes + +### Theme Configuration +```yaml +# mkdocs.yml +palette: + - scheme: default + primary: green + accent: green + - scheme: slate + primary: green + accent: green +``` + +## Key Components & Usage + +### Community Motto +```html +
+ Vine por el código, me quedé por la comunidad +
+``` + +### Participation Cards (Modern Design) +```html +
+
+

Ser Ponente

+

Description text

+ Action Button +
+
+``` + +### Community Links +```html + +``` + +### Quick Navigation +```html +

+ Continúa Explorando +

+
+ + Meetups 2025 + +
+``` + +### Communities & Partnerships +```html +
+
+ Partner Community +

Community Name

+

Brief description of the partner community

+
+
+``` + +### Unified Card System (Volunteers & Speakers) +```markdown +### Person Name {.volunteer-header} + + +
+
+
+

Person Name

+

Role/Company description

+
+ + Embajador + Organizador + + DevOps + Desarrollo +
+
+
+ + + Person Name + +
+
+
+
+ + COMMUNITY ROLE TITLE + Community role description + Contribuciones principales: + + ESPECIALIDADES TÉCNICAS + Technical specialties list + Charlas recientes: +
    +
  • Content item 1
  • +
  • Content item 2
  • +
+
+
+
+``` + +**Key Features:** +- `{.volunteer-header}` automatically hides the h3 but keeps TOC functionality +- **IDENTICAL STRUCTURE** for volunteers and speakers +- Two-column grid layout with responsive design +- Circular avatars with hover effects +- Discrete badges with role-specific colors +- Social icons grouped below avatar +- **Content Differentiation**: + - Volunteers: Community contributions and organizational roles + - Speakers: Technical specialties and recent talks + +### Button Types +```html + +Primary Action + + +Navigate +``` + +## CSS System Reference + +> **📋 Para documentación completa del sistema de diseño y CSS, ver [`STYLE_GUIDE.md`](STYLE_GUIDE.md)** + +El proyecto utiliza una **arquitectura variables-first** con 18+ variables CSS centralizadas. Para información completa sobre: + +- 🎨 **Variables CSS completas** → Ver sección "Sistema de Variables" en STYLE_GUIDE.md +- 🧩 **Componentes detallados** → Ver sección "Componentes" en STYLE_GUIDE.md +- 🏗️ **Sistema unificado de tarjetas** → Ver sección dedicada en STYLE_GUIDE.md +- 📱 **Layout responsive** → Ver sección "Layout y Responsive" en STYLE_GUIDE.md +- ⚡ **Buenas prácticas** → Ver sección completa en STYLE_GUIDE.md + +### Variables esenciales para IA: + +```css +/* Colores principales */ +--python-green: #4CAF50 +--python-green-dark: #45a049 + +/* Badges (8 tipos completos en STYLE_GUIDE.md) */ +--badge-ambassador: #2E7D32 +--badge-technical: #37474F + +/* Transiciones estándar */ +--transition-base: all 0.3s ease +--transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) + +/* Layout */ +--button-radius: 3.125rem +--card-radius: 0.75rem +``` + +### Patrón de uso rápido: +```css +.nuevo-componente { + background: var(--python-green); + border-radius: var(--card-radius); + transition: var(--transition-base); + /* Ver STYLE_GUIDE.md para más variables */ +} +``` + +## Best Practices + +### Styling +- **Never add inline styles** to markdown/HTML +- Always use existing component classes or create new ones in custom.css +- Maintain design consistency with existing components +- Use CSS variables for all colors and measurements +- Follow the established section order in custom.css + +### Content Structure +- Use semantic HTML structure +- Include proper alt text for images +- Maintain consistent tone (Spanish for main content) +- Use reusable components via includes +- Follow existing patterns for event documentation + +### Performance & Optimization +- CSS heavily optimized: removed duplications, unused code eliminated +- Images optimized before adding to repository +- Use MkDocs Material features when possible +- CSS is organized for maximum maintainability + +## Responsive Design +- **Primary breakpoint**: 768px +- **Mobile-first approach**: Base styles for mobile, enhanced for desktop +- **Grid systems**: Auto-adapt to smaller screens +- **Typography**: Uses clamp() for responsive scaling + +## Maintenance Notes +- CSS file currently optimized and organized (~1466 lines, heavily optimized with variables) +- **COMPLETE variables-first architecture** - Zero hardcoded colors, all use CSS custom properties +- **18 CSS variables total** - Primary colors, social media, badges, years, and layout +- All social media colors centralized in variables +- **Badge system fully variables-driven** - 8 role types with centralized color management +- Unified button system with four variants (primary, standard, navigation, action) +- Single responsive breakpoint for consistency (768px) +- Dark/light mode handled automatically by MkDocs Material variables +- Community links use brand-specific colors with smooth hover transitions +- Participation cards use large centered icons for modern appearance +- Year cards with specialized styling and gradient hover effects using CSS variables +- **Unified Design System**: + - **Meetup speaker photos**: Rectangular (160px × 160px, no border-radius) + - **Ponentes/Volunteer avatars**: Circular (100px × 100px via `.volunteer-avatar`) + - **Community logos**: Circular (120px × 120px with hover effects) +- **NEW**: Comprehensive volunteer system with modern grid layout +- **NEW**: Maintainable `.volunteer-header` class eliminates hardcoded names +- **NEW**: Discrete badge system with 8 role types and consistent styling +- **NEW**: Two-column responsive design with avatar/social integration +- **UPDATED**: Speaker system completely redesigned using volunteer card structure +- **UPDATED**: All speakers alphabetically organized with unified navigation +- **UPDATED**: Dedicated `/images/ponentes/` directory for speaker photos +- **UPDATED**: Simplified single-page layout (removed tab system) +- **OPTIMIZED**: All transitions use standard variables (`var(--transition-base)`, `var(--transition-smooth)`) +- Complete responsive design for all card types with mobile-first approach +- **Zero `!important` declarations** - Clean CSS architecture with proper specificity + +## Critical Information for New Developers + +### DO NOT MODIFY These Files (Auto-generated or Core) +- `mkdocs.yml` - Core configuration (only change colors if needed) +- Any files in `scripts/metadata_json/` - Auto-generated meetup data +- Files generated by scripts - Check with team first + +### Key Design Decisions & Rationale +1. **Single CSS File**: All custom styles in `docs/css/custom.css` to maintain simplicity +2. **Variable-First Approach**: Every color, transition, and spacing uses CSS variables for easy theming +3. **Material Design Integration**: Leverages MkDocs Material variables for automatic dark/light mode +4. **Component Includes**: Reusable components in `docs/components/` for consistency +5. **Spanish Content**: Main content in Spanish as this is a Mexico City community +6. **Social Brand Colors**: Each platform uses official brand colors for recognition +7. **Mobile-First**: 768px breakpoint chosen to match modern device patterns + +### Common Troubleshooting +- **Styles not applying**: Check if using CSS variables correctly +- **Dark mode issues**: Ensure using `var(--md-*)` variables instead of hardcoded colors +- **Mobile layout broken**: Verify media query is at 768px, not other breakpoints +- **Button inconsistency**: Use `.btn-primary` for actions, `.btn-nav` for navigation +- **Icon not showing**: Verify FontAwesome class name and CDN is loading + +### When to Create New Components +- **Reusable elements**: If used in 2+ places, create a component +- **Complex styling**: If requires 5+ CSS rules, consider a new class +- **Brand consistency**: Always check existing patterns before creating new styles + +### Unified System Best Practices (Volunteers & Speakers) +- **Always use `.volunteer-header`**: Never hardcode names in CSS selectors +- **Badge consistency**: + - Volunteers: Use predefined badge classes (ambassador, organizer, etc.) + - Speakers: Use technical badges (technical, development, etc.) +- **Image optimization**: All avatars should be 200x200px minimum, optimized +- **Directory structure**: + - Volunteers: `/images/voluntarios/filename.jpg` + - Speakers: `/images/ponentes/filename.jpg` +- **Social links**: Include LinkedIn and GitHub at minimum, add others as needed +- **Content structure**: + - Volunteers: Use `.role-title` for community role, focus on contributions + - Speakers: Use "ESPECIALIDADES TÉCNICAS" as role title, focus on talks and tech +- **Organization**: + - Volunteers: Group by role/activity + - Speakers: **MAINTAIN ALPHABETICAL ORDER** +- **Responsive design**: Test two-column layout on mobile (becomes single column) +- **TOC navigation**: Ensure all headers work with table of contents + +### Integration Points +- **MkDocs Material**: Uses `extra_css` in mkdocs.yml to load custom.css +- **FontAwesome**: Loaded via CDN import in CSS file +- **Component System**: Uses `--8<--` syntax for markdown includes +- **Color System**: Inherits from mkdocs.yml palette configuration + +## Recent Major Updates + +### Latest CSS Optimization & Variables System (Current Session) +- **Complete Variables-First Implementation**: Full compliance with CLAUDE.md guidelines + - **10 new CSS variables** added for badges, years, and color management + - **Zero hardcoded colors** - All #hex values now use CSS custom properties + - **Unified transition system** - Consistent use of `var(--transition-base)` and `var(--transition-smooth)` + - **Badge system optimization** - All 8 badge types now use centralized color variables +- **Professional CSS Architecture**: + ```css + /* NEW VARIABLES ADDED */ + --badge-ambassador: #2E7D32; + --badge-organizer: #1565C0; + --badge-production: #E65100; + --badge-host: #6A1B9A; + --badge-technical: #37474F; + --badge-support: #3E2723; + --badge-global: #AD1457; + --badge-strategic: #283593; + --year-2024-color: #2196F3; + --year-2024-hover: #1976D2; + --year-2023-color: #FF9800; + --year-2023-hover: #F57C00; + ``` +- **Unified Design System Maintained**: + - **Speaker images in meetups**: Rectangular (160px × 160px) - no border-radius + - **Speaker images in ponentes page**: Circular via `.volunteer-avatar` (100px × 100px) + - **Volunteer avatars**: Circular via `.volunteer-avatar` (100px × 100px) + - **Community logos**: Circular (120px × 120px) with hover scale effects +- **CSS Code Quality Enhancement**: + - **Zero `!important` declarations** - Clean specificity hierarchy maintained + - **Consistent variable usage** - Every color, transition, and spacing uses CSS variables + - **Maintainable architecture** - Easy theming and future modifications + - **Performance optimized** - Consolidated selectors and efficient CSS organization + +### Previous Major Optimizations +- **CSS Architecture Overhaul**: Complete elimination of `!important` declarations (7 instances removed) + - Migration to specific selectors and proper CSS specificity hierarchy + - Improved maintainability through clean CSS architecture + - Better scalability for future modifications +- **Professional CSS Structure**: Reorganized into 13 logical sections + 1. Variables CSS personalizadas + 2. Sección Hero + 3. Sistema de botones + 4. Tarjetas y grillas + 5. Tarjetas de voluntarios + 6. **Tarjetas de comunidades aliadas** (NEW) + 7. Enlaces de comunidad + 8. Lema de la comunidad + 9. Navegación y secciones especiales + 10. Iconografía + 11. Animaciones + 12. Media queries responsivas + 13. Utilidades y helpers +- **Communities & Partnerships System**: Complete implementation of partner community styles + - `.communities-grid`: Responsive auto-fit grid with minmax(280px, 1fr) + - `.community-card`: Advanced hover effects with sliding shine animation + - Circular community logos with scale effects on hover + - Mobile-optimized responsive design with proper spacing +- **Documentation Reorganization**: Professional separation of concerns + - **README.md**: Streamlined to essential user information and quick start + - **CONTRIBUTING.md**: Comprehensive contribution workflow and development guidelines + - Clear separation between user documentation and contributor guidelines +- **CSS Code Quality**: Enhanced readability and organization + - Consistent indentation and descriptive comments + - Consolidated social media link styles + - Removal of redundant code and unused selectors + - Optimized specificity hierarchy without `!important` + +### Previous Major Optimizations +- **Speaker System Complete Overhaul**: All 19+ ponentes converted to modern volunteer-card layout +- **Unified Design System**: Speakers now use same structure as volunteers but with speaker-specific content +- **Organized Alphabetically**: All speakers reorganized in alphabetical order for better navigation +- **Dedicated Image Structure**: New `/images/ponentes/` directory with speaker-specific photos +- **Simplified Layout**: Removed tab system (=== "Información/"Ponentes") for cleaner single-page design +- **Real Speaker Photos**: Added actual photos for multiple speakers (Carlos Caballero, Erik Rivera, etc.) +- **Volunteer System Redesign**: Complete overhaul with modern two-column layout +- **Maintainable Architecture**: New `.volunteer-header` class eliminates hardcoded name lists +- **CSS Optimization**: Consolidated variables, eliminated duplications, unified media queries +- **TOC Navigation**: Seamless integration of volunteer cards with table of contents +- **Badge System**: Comprehensive role identification with discrete, color-coded badges +- **Avatar System**: Circular images with hover effects and integrated social icons +- **Grid Layout**: Responsive design with mobile-first approach + +### Foundation Updates +- Complete CSS optimization (35% code reduction) +- New community motto component with decorative quotes +- Modernized participation cards with centered icons +- Added discrete navigation button system +- Centralized all social media brand colors +- Consolidated media queries into single responsive section +- Eliminated unused gradients and duplicate code +- Added quick navigation component for page endings +- Year cards with specialized hover effects and color coding +- Complete responsive design updates for all components + +## Working with Claude AI + +### Using This Memory File +When starting a new conversation with Claude: +1. **Always attach this file** - It contains all project context +2. **Reference specific sections** - Point Claude to relevant parts +3. **Update this file** - Add any new components or major changes +4. **Include current state** - Attach relevant files Claude needs to see + +### Effective Prompts for Claude +``` +"I'm working on the Python CDMX website. I need to [specific task]. +Please refer to the CLAUDE.md file for project guidelines and existing patterns." +``` + +### What to Include in Conversations +- This CLAUDE.md file (always) +- Current CSS file if making style changes +- Relevant markdown files if changing content +- Screenshots if debugging visual issues + +### Maintaining This Documentation +- **Add new components** to the Component Classes section +- **Update CSS variables** when adding new ones +- **Document design decisions** in the Key Design Decisions section +- **Add troubleshooting tips** based on common issues encountered + +## Quick Start for New Developers +1. **Read this file completely** - Understanding the architecture is crucial +2. **Test in both modes** - Always verify light and dark mode compatibility +3. **Use existing patterns** - Check similar components before creating new ones +4. **Follow CSS structure** - Add new styles in the appropriate section +5. **Test responsive** - Verify 768px breakpoint behavior +6. **Use `.volunteer-header`** - For any volunteer-related TOC headers +7. **Follow badge system** - Use predefined badge classes for volunteer roles +8. **Attach this file to Claude** - Use this memory for consistency and guidance + +## Adding New Volunteers (Step-by-Step) +1. **Add volunteer image** to `docs/images/voluntarios/` (200x200px minimum) +2. **Use the unified card template** from this file +3. **Add `.volunteer-header` class** to the markdown header +4. **Choose appropriate badges** from the predefined badge system (organizer, ambassador, etc.) +5. **Focus on community contributions** in content section +6. **Test TOC navigation** to ensure proper functionality +7. **Verify responsive design** on mobile devices + +## Adding New Speakers (Step-by-Step) +1. **Add speaker image** to `docs/images/ponentes/` (200x200px minimum) +2. **Use the unified card template** from this file (same as volunteers) +3. **Add `.volunteer-header` class** to the markdown header +4. **Choose technical badges** (technical, development, etc.) +5. **Focus on specialties and talks** in content section +6. **Maintain alphabetical order** in the speakers list +7. **Test TOC navigation** to ensure proper functionality +8. **Verify responsive design** on mobile devices + +## Completed System Transformations + +### Speaker System Overhaul (2025) +- ✅ **21+ speakers converted** to unified volunteer-card system +- ✅ **Alphabetical organization** implemented across all speakers +- ✅ **Tab system removed** for cleaner single-page layout +- ✅ **Dedicated image directory** `/images/ponentes/` created +- ✅ **Real speaker photos** added for multiple speakers +- ✅ **Identical structure** to volunteers but with speaker-specific content +- ✅ **TOC navigation** integrated for all speakers +- ✅ **Badge system** adapted for technical specialties +- ✅ **Mobile responsive** design maintained + +### Key Architectural Changes +- **Unified Card System**: Both volunteers and speakers use `.volunteer-card` +- **Content Differentiation**: Same structure, different focus areas +- **Maintainable Design**: `.volunteer-header` eliminates hardcoded selectors +- **Scalable Organization**: Alphabetical for speakers, role-based for volunteers +- **Image Management**: Separate directories for logical organization + +## Project Continuation Checklist +- [ ] CLAUDE.md file read and understood +- [ ] Current project state reviewed +- [ ] Testing environment set up (light/dark mode, mobile/desktop) +- [ ] Existing component patterns studied +- [ ] CSS variable system understood +- [ ] MkDocs Material integration grasped +- [ ] Speaker vs Volunteer content structure understood +- [ ] Alphabetical organization principle for speakers followed + +## Documentation Structure +- **README.md**: Essential user information, quick start, and references to detailed documentation +- **CONTRIBUTING.md**: Complete contribution workflow, detailed setup instructions, and development guidelines +- **CLAUDE.md**: This file - comprehensive technical documentation for AI development +- **CHANGELOG.md**: Release notes and feature documentation following Keep a Changelog format diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6a93144..e26e00e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -158,24 +158,93 @@ Crea archivos en `docs/meetups/YYYY/mes-YYYY.md` siguiendo la plantilla y metada - Git - Editor de código (VS Code, PyCharm, etc.) -### Configuración Inicial +### Fork y Setup Inicial ```bash -# Clonar el repositorio -git clone https://github.com/PythonMexico/pythonCDMX.git +# 1. Haz fork del repositorio en GitHub +# 2. Clona tu fork +git clone https://github.com/TU-USUARIO/pythonCDMX.git cd pythonCDMX -# Crear entorno virtual +# 3. Configura el repositorio original como upstream +git remote add upstream https://github.com/PythonMexico/pythonCDMX.git + +# 4. Crear entorno virtual python -m venv .venv source .venv/bin/activate # En Windows: .venv\Scripts\activate -# Instalar dependencias +# 5. Instalar dependencias pip install -r requirements.txt -# Ejecutar servidor de desarrollo +# 6. Ejecutar servidor de desarrollo mkdocs serve ``` +### Flujo de Trabajo Detallado + +#### 1. Crear Rama de Trabajo + +```bash +# Actualiza tu main local +git checkout main +git pull upstream main + +# Crea una nueva rama descriptiva +git checkout -b feature/nueva-funcionalidad +# o +git checkout -b fix/corregir-problema +# o +git checkout -b meetup/agregar-evento-marzo-2025 +``` + +#### 2. Realizar y Probar Cambios + +```bash +# Haz tus cambios +# Prueba localmente +mkdocs serve + +# Verifica que todo funcione en: +# - Modo claro y oscuro +# - Móvil y escritorio +# - Todos los enlaces +``` + +#### 3. Commit y Push + +```bash +# Añade los cambios +git add . + +# Commit con mensaje descriptivo +git commit -m "feat: agregar meetup marzo 2025 con ponentes confirmados" +# o +git commit -m "fix: corregir enlaces rotos en página de comunidad" +# o +git commit -m "style: mejorar responsive design en tarjetas de participación" + +# Push a tu fork +git push origin nombre-de-tu-rama +``` + +#### 4. Crear Pull Request + +1. Ve a tu fork en GitHub +2. Click en "Compare & pull request" +3. **Título descriptivo**: Ej. "Agregar meetup marzo 2025 - IA en producción" +4. **Descripción detallada**: + - Qué cambios realizaste + - Por qué son necesarios + - Screenshots si hay cambios visuales + - Checklist de verificación +5. Etiqueta apropiada: `meetup`, `enhancement`, `bug`, etc. + +#### 5. Revisión y Merge + +- El equipo revisará tu PR +- Responde a comentarios si los hay +- Una vez aprobado, será merged al proyecto principal + ### Comandos Útiles ```bash @@ -192,6 +261,58 @@ mkdocs build --strict rm -rf site/ ``` +## Guidelines de Desarrollo + +### Qué SÍ hacer: +- **Usar variables CSS** - No hardcodear colores o medidas +- **Probar responsive** - Verificar en móvil y escritorio +- **Seguir convenciones** - Nombres de archivos, estructura, etc. +- **Commits descriptivos** - Mensajes claros sobre los cambios +- **Screenshots en PRs** - Si hay cambios visuales +- **Usar sistema de componentes** - Reutilizar elementos existentes +- **Probar en ambos modos** - Verificar modo claro y oscuro + +### Qué NO hacer: +- **Estilos inline** - Siempre usar clases CSS +- **Modificar `mkdocs.yml`** - Sin consultar primero +- **Cambios masivos** - Preferir PRs focalizados +- **Ignorar el linter** - Mantener calidad de código +- **Romper responsive** - Probar siempre en móvil +- **Hardcodear valores** - Usar variables CSS existentes + +### Tipos de Issues Disponibles + +#### Propuesta de Charla +Para postularte como ponente o proponer una charla + +#### Publicar Evento +Para agregar un meetup confirmado a la página + +#### Bug Report +Para reportar problemas o errores + +#### Feature Request +Para sugerir nuevas funcionalidades + +#### Documentación +Para mejorar docs o README + +## Agregar Nuevo Contenido + +### Nuevo Meetup + +1. Crear archivo en `docs/meetups/YYYY/YYYYMM-mes.md` +2. Usar plantilla existente como referencia +3. Incluir metadatos del evento +4. Agregar descripción y detalles de charlas + +### Nuevo Componente + +1. Crear en `docs/components/` +2. Usar sistema de variables CSS existente +3. Seguir patrones establecidos +4. Incluir en páginas con `--8<-- "components/nombre.md"` + ## Áreas de Contribución ### Prioridad Alta diff --git a/README.md b/README.md index 308dee6..d893be9 100644 --- a/README.md +++ b/README.md @@ -1,122 +1,183 @@ -# Python CDMX Charlas +# Python CDMX - Sitio Web de la Comunidad -Sitio web oficial de la comunidad Python CDMX, construido con MkDocs y Material for MkDocs. Aquí documentamos todos nuestros meetups, charlas y eventos desde 2023. +> *"Vine por el código, me quedé por la comunidad"* -## Características +Sitio web oficial de la comunidad Python CDMX, construido con **MkDocs Material** y diseño **Material Design** optimizado. Documentamos todos nuestros meetups, charlas y eventos, conectando a la comunidad Python de la Ciudad de México. -- Responsive Design: Optimizado para todos los dispositivos -- Búsqueda avanzada: Encuentra charlas por tema, ponente o contenido -- Tema personalizado: Colores inspirados en nuestro logo -- Estadísticas de la comunidad -- Videos integrados: Acceso directo a nuestras charlas en YouTube -- Modo claro/oscuro -- Despliegue automático con GitHub Actions +[![Despliegue automático](https://github.com/PythonMexico/pythonCDMX/actions/workflows/deploy.yml/badge.svg)](https://github.com/PythonMexico/pythonCDMX/actions/workflows/deploy.yml) +[![Sitio Web](https://img.shields.io/badge/sitio-pythoncdmx.org-4CAF50)](https://pythonmexico.github.io/pythonCDMX/) -## Estructura del proyecto +## Características Principales -``` -pythonCDMX/ -├── docs/ # Documentación y contenido principal -│ ├── css/ # Estilos personalizados -│ ├── meetups/ # Páginas de meetups por año -│ ├── index.md # Página principal -│ └── about.md # Sobre la comunidad -├── scripts/ # Herramientas y utilidades -├── .github/workflows/ # Automatización con GitHub Actions -├── mkdocs.yml # Configuración de MkDocs -├── requirements.txt # Dependencias -└── README.md # Este archivo -``` +- **Material Design moderno** - Interfaz limpia con modo claro/oscuro automático +- **Completamente responsive** - Optimizado para móvil, tablet y escritorio +- **Búsqueda avanzada** - Encuentra charlas por tema, ponente o contenido +- **Videos integrados** - Acceso directo a nuestras charlas en YouTube +- **CSS optimizado** - Sistema de 18+ variables centralizadas, arquitectura variables-first +- **Enlaces de comunidad** - Botones con colores oficiales de cada plataforma +- **Estadísticas de comunidad** - Métricas y datos de participación +- **Despliegue automático** - CI/CD con GitHub Actions -## Instalación y desarrollo +## Inicio Rápido ### Prerrequisitos -- Python 3.8 o superior -- pip +- **Python 3.8+** +- **pip** o **pipenv** -### Instalación rápida +### Instalación ```bash +# Clonar el repositorio git clone https://github.com/PythonMexico/pythonCDMX.git cd pythonCDMX + +# Instalar dependencias pip install -r requirements.txt ``` -### Servidor local +### Desarrollo Local ```bash +# Servidor de desarrollo con recarga automática mkdocs serve + +# El sitio estará disponible en: +# http://localhost:8000 ``` -Abre tu navegador en http://localhost:8000 -### Construcción para producción +### Construcción para Producción ```bash +# Generar sitio estático mkdocs build + +# Los archivos se generan en la carpeta site/ ``` -El sitio se generará en la carpeta `site/`. -## Agregar nuevos meetups +## Estructura del Proyecto -1. Crea un archivo en `docs/meetups/YYYY/mes-YYYY.md` -2. Usa la plantilla de meetup -3. Agrega metadatos y contenido -4. Actualiza los índices si es necesario +``` +python-cdmx-charlas/ +├── docs/ # Contenido principal +│ ├── css/ +│ │ └── custom.css # Estilos optimizados (~1466 líneas, variables-first) +│ ├── components/ # Componentes reutilizables +│ │ ├── community-links.md # Enlaces de redes sociales +│ │ └── quick-navigation.md # Navegación de páginas +│ ├── images/ # Assets e imágenes +│ ├── meetups/ # Eventos por año +│ │ ├── 2023/ +│ │ ├── 2024/ +│ │ └── 2025/ +│ ├── comunidad/ # Páginas de comunidad +│ │ ├── ponentes.md +│ │ ├── voluntarios.md +│ │ └── alianzas.md +│ └── index.md # Página principal +├── scripts/ # Herramientas de automatización +│ ├── generate_meetups.py # Generador de páginas +│ ├── check_links.py # Verificador de enlaces +│ └── metadata_json/ # Datos de meetups +├── .github/workflows/ # CI/CD con GitHub Actions +├── mkdocs.yml # Configuración de MkDocs +├── requirements.txt # Dependencias Python +└── README.md # Este archivo +``` -¿Tienes muchos datos? Usa el script de migración: +## Sistema de Diseño -```bash -python scripts/migrate_to_markdown.py -``` +### Colores Principales +- **Verde Python**: `#4CAF50` (color primario) +- **Verde Oscuro**: `#45a049` (hover states) +- **Modo automático**: Claro/oscuro según preferencia del sistema -## Despliegue en GitHub Pages +### Componentes CSS +- **Variables centralizadas** - 18+ variables CSS para colores, badges, transiciones y espaciado +- **Arquitectura variables-first** - Zero colores hardcoded, mantenibilidad máxima +- **Sistema de botones** - `.btn-primary`, `.btn`, `.btn-nav` con variables unificadas +- **Sistema de badges** - 8 tipos de roles con colores centralizados +- **Tarjetas unificadas** - `.volunteer-card` para ponentes y voluntarios +- **Enlaces de comunidad** - Colores oficiales por plataforma usando variables +- **Responsive design** - Breakpoint único en 768px, mobile-first approach +- **Zero `!important`** - Arquitectura CSS limpia con especificidad apropiada -Cada vez que haces push a la rama `main`, el sitio se actualiza automáticamente en: -https://pythonmexico.github.io/pythonCDMX/ +## Documentación + +El proyecto cuenta con documentación específica para diferentes audiencias: + +- **[STYLE_GUIDE.md](STYLE_GUIDE.md)** - Sistema de diseño, CSS y componentes (para desarrollo frontend) +- **[CONTRIBUTING.md](CONTRIBUTING.md)** - Guía completa de contribución y setup del proyecto +- **[CLAUDE.md](CLAUDE.md)** - Documentación técnica para asistentes IA ## Contribuir -- Reporta problemas o sugiere mejoras en Issues: https://github.com/PythonMexico/pythonCDMX/issues -- Haz un fork, crea una rama, haz tus cambios y envía un Pull Request -- Sigue las convenciones de nombres y prueba localmente antes de enviar +¿Quieres contribuir al proyecto? ¡Excelente! 🎉 + +- **Proponer una charla**: Abre un [issue](https://github.com/PythonMexico/pythonCDMX/issues/new) con la plantilla "💡 Propuesta de Charla" +- **Publicar evento**: Usa la plantilla "Publicar evento en la página" +- **Reportar problema**: Crea un issue con detalles del bug +- **Mejorar documentación**: Los PRs son bienvenidos + +👉 **[Ver guía completa de contribución](CONTRIBUTING.md)** para proceso detallado, setup del entorno y guidelines. + +## Despliegue -### Plantillas de Issues para Meetups +El sitio se despliega automáticamente a **GitHub Pages** en cada push a `main`: -- Si quieres **proponer una charla o postularte como ponente**, usa la plantilla "💡 Propuesta de Charla" al crear un nuevo issue. -- Si quieres **publicar un evento confirmado en la página**, usa la plantilla "Publicar evento en la página" y proporciona toda la información del meetup. +- **URL de producción**: https://pythonmexico.github.io/pythonCDMX/ +- **Workflow**: `.github/workflows/deploy.yml` +- **Rama de despliegue**: `gh-pages` (automática) -## Recursos útiles +## Enlaces de la Comunidad -- MkDocs User Guide: https://www.mkdocs.org/user-guide/ -- Material for MkDocs: https://squidfunk.github.io/mkdocs-material/ -- PyMdown Extensions: https://facelessuser.github.io/pymdown-extensions/ +### Redes Sociales +- **Telegram**: [t.me/PythonCDMX](https://t.me/PythonCDMX) +- **Meetup**: [meetup.com/python-mexico](https://www.meetup.com/python-mexico) +- **YouTube**: [@PythonMexico](https://www.youtube.com/@PythonMexico) +- **Instagram**: [@pythoncdmx](https://www.instagram.com/pythoncdmx) +- **LinkedIn**: [PythonCDMX](https://www.linkedin.com/company/pythoncdmx) -## Sedes de eventos +### Desarrollo +- **GitHub**: [PythonMexico/pythonCDMX](https://github.com/PythonMexico/pythonCDMX) +- **Email**: info@pythoncdmx.org -- Wizeline México: Torre Diana, CDMX -- UNAM Facultad de Ciencias: Anfiteatro Alfredo Barrera +## Sedes de Eventos -## Enlaces de la comunidad +- **Wizeline México** - Torre Diana, CDMX +- **UNAM Facultad de Ciencias** - Anfiteatro Alfredo Barrera +- **Diferentes espacios** - Según disponibilidad y tipo de evento -- Telegram: https://t.me/PythonCDMX -- Meetup: https://www.meetup.com/python-mexico -- YouTube: https://www.youtube.com/@PythonMexico -- GitHub: https://github.com/PythonMexico/pythonCDMX -- Twitter: https://twitter.com/PythonMexico -- Email: info@pythoncdmx.org +## Recursos Técnicos + +- [MkDocs User Guide](https://www.mkdocs.org/user-guide/) +- [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) +- [PyMdown Extensions](https://facelessuser.github.io/pymdown-extensions/) ## Licencia -Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles. +Este proyecto está bajo la **Licencia MIT**. Consulta el archivo [LICENSE](LICENSE) para más detalles. ## Agradecimientos -- Wizeline México - Por hospedar nuestros meetups -- UNAM Facultad de Ciencias - Por eventos especiales -- Todos los ponentes - Por compartir su conocimiento -- Comunidad Python CDMX - Por su participación activa +### Organizadores y Voluntarios +- **Core Team** - Por la organización y coordinación +- **Voluntarios** - Por el apoyo en eventos y logística + +### Sedes y Patrocinadores +- **Wizeline México** - Por hospedar nuestros meetups regulares +- **UNAM Facultad de Ciencias** - Por eventos especiales y académicos + +### Comunidad +- **Ponentes** - Por compartir conocimiento y experiencias +- **Asistentes** - Por participar activamente y hacer preguntas +- **Contribuidores** - Por mejorar este sitio web continuamente + +### Tecnología +- **MkDocs Material** - Por el framework de documentación +- **GitHub** - Por el hosting gratuito y herramientas de desarrollo +- **FontAwesome** - Por la iconografía --- -Última actualización: {{ git_revision_date_localized }} +**¿Tienes preguntas?** Abre un [issue](https://github.com/PythonMexico/pythonCDMX/issues) o únete a nuestro [Telegram](https://t.me/PythonCDMX) diff --git a/STYLE_GUIDE.md b/STYLE_GUIDE.md new file mode 100644 index 0000000..2a43e1f --- /dev/null +++ b/STYLE_GUIDE.md @@ -0,0 +1,761 @@ +# Guía de Estilos - Python CDMX + +> Documentación completa del sistema de diseño, arquitectura CSS y componentes del sitio web Python CDMX + +Esta guía documenta el sistema de diseño del sitio web de Python CDMX, construido con **MkDocs Material** siguiendo una **arquitectura variables-first** y principios de **Material Design**. + +## Tabla de Contenidos + +- [Filosofía de Diseño](#filosofía-de-diseño) +- [Arquitectura CSS](#arquitectura-css) +- [Sistema de Variables](#sistema-de-variables) +- [Componentes](#componentes) +- [Sistema Unificado de Tarjetas](#sistema-unificado-de-tarjetas) +- [Layout y Responsive](#layout-y-responsive) +- [Buenas Prácticas](#buenas-prácticas) +- [Troubleshooting](#troubleshooting) + +## Filosofía de Diseño + +### Principios Fundamentales + +1. **Variables-First** - Todo color, espaciado y transición debe usar variables CSS +2. **Mobile-First** - Diseño responsive con breakpoint único en 768px +3. **Sistema Unificado** - Componentes reutilizables con estructura consistente +4. **Zero `!important`** - Arquitectura CSS limpia con especificidad apropiada +5. **Compatibilidad Automática** - Modo claro/oscuro usando variables de MkDocs Material + +### Lema de la Comunidad + +> *"Vine por el código, me quedé por la comunidad"* + +Este lema es central y se destaca en todo el sitio usando el componente `.community-motto`. + +## Arquitectura CSS + +### Estructura del Archivo CSS + +El archivo `docs/css/custom.css` (~1466 líneas) está organizado en 13 secciones lógicas: + +1. **Variables CSS personalizadas** - 18+ variables centralizadas +2. **Sección Hero** - Página principal y logos +3. **Sistema de botones** - 4 variantes de botones +4. **Tarjetas y grillas** - Componentes base +5. **Tarjetas de voluntarios** - Sistema unificado +6. **Tarjetas de comunidades aliadas** - Partners y alianzas +7. **Enlaces de comunidad** - Redes sociales con colores de marca +8. **Lema de la comunidad** - Componente destacado +9. **Navegación y secciones especiales** - Navegación rápida +10. **Iconografía** - FontAwesome 6.4.0 +11. **Animaciones** - Transiciones y efectos +12. **Media queries responsivas** - Breakpoint único +13. **Utilidades y helpers** - Clases auxiliares + +### Configuración en MkDocs + +```yaml +# mkdocs.yml +theme: + palette: + - scheme: default + primary: green + accent: green + - scheme: slate + primary: green + accent: green + +extra_css: + - css/custom.css +``` + +## Sistema de Variables + +### Variables Principales + +```css +:root { + /* Colores principales */ + --python-green: #4CAF50; + --python-green-dark: #45a049; + --python-white: #ffffff; + + /* Radios y espaciado */ + --button-radius: 3.125rem; + --card-radius: 0.75rem; + + /* Transiciones estándar */ + --transition-base: all 0.3s ease; + --transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); +} +``` + +### Colores de Redes Sociales + +```css +:root { + --telegram-color: #0088cc; + --meetup-color: #ed1c40; + --youtube-color: #ff0000; + --github-color: #333333; + --instagram-color: #e4405f; + --linkedin-color: #0077b5; +} +``` + +### Colores de Badges y Roles + +```css +:root { + /* 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; +} +``` + +### Colores de Años y Categorías + +```css +:root { + /* Colores de años y especialización */ + --year-2024-color: #2196F3; + --year-2024-hover: #1976D2; + --year-2023-color: #FF9800; + --year-2023-hover: #F57C00; +} +``` + +### Patrón de Uso + +```css +.nuevo-componente { + background: var(--python-green); + border-radius: var(--card-radius); + transition: var(--transition-base); + color: var(--python-white); + /* Usar variables de badges para roles */ + border-left: 4px solid var(--badge-technical); +} + +.nuevo-componente:hover { + background: var(--python-green-dark); + transform: translateY(-2px); +} +``` + +## Componentes + +### Sistema de Botones + +#### `.btn-primary` - Botón Principal Verde + +```css +.upcoming-btn, +.btn, +.btn-primary, +.participation-card a, +.year-card a { + background: var(--python-green); + color: var(--python-white); + padding: 0.75rem 1.5rem; + border-radius: var(--button-radius); + transition: var(--transition-base); +} +``` + +**Uso:** +```html +Ver Todos los Meetups +``` + +#### `.btn-nav` - Botón de Navegación Discreto + +```css +.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; + min-width: 140px; +} +``` + +**Uso:** +```html + + Meetups 2025 + +``` + +### Enlaces de Comunidad + +#### Estructura HTML + +```html + +``` + +#### CSS con Colores por Plataforma + +```css +.community-links { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 1rem; + margin: 2rem 0; +} + +.community-link.telegram:hover { + background: var(--telegram-color); + color: white; +} + +.community-link.meetup:hover { + background: var(--meetup-color); + color: white; +} +``` + +### Tarjetas de Participación + +#### Estructura HTML + +```html +
+
+

Ser Ponente

+

Comparte tu conocimiento con la comunidad Python CDMX...

+ Proponer Charla +
+
+

Ser Voluntario

+

Ayuda a organizar eventos y apoyar a la comunidad...

+ Únete al Equipo +
+
+``` + +#### CSS Grid Responsive + +```css +.participation-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 1.5rem; + margin: 2rem 0; +} + +.participation-card { + padding: 2rem; + min-height: 200px; + text-align: center; + border-radius: var(--card-radius); + background: var(--md-default-bg-color); + border: 1px solid var(--md-default-fg-color--lightest); +} + +/* Especialización por tipo */ +.participation-ponente { + border-left: 4px solid var(--python-green); +} + +.participation-voluntario { + border-left: 4px solid var(--year-2024-color); +} +``` + +### Lema de la Comunidad + +```css +.community-motto { + background: var(--md-default-bg-color); + border: 1px solid var(--md-default-fg-color--lightest); + border-radius: var(--card-radius); + font-size: 1.5rem; + font-style: italic; + font-weight: 300; + margin: 2rem auto; + max-width: 600px; + padding: 2rem; + position: relative; + text-align: center; + color: var(--md-primary-fg-color); +} + +.community-motto::before, +.community-motto::after { + content: '"'; + font-size: 3rem; + color: var(--python-green); + position: absolute; +} + +.community-motto::before { + top: -10px; + left: 20px; +} + +.community-motto::after { + bottom: -40px; + right: 20px; +} +``` + +### Comunidades Aliadas + +#### Estructura HTML + +```html +
+
+ Community Partner +

Nombre de la Comunidad

+

Descripción breve de la comunidad aliada

+
+
+``` + +#### CSS con Efectos Avanzados + +```css +.communities-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 1.5rem; + margin: 2rem 0; +} + +.community-card { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + padding: 2rem 1.5rem; + background: var(--md-default-bg-color); + border: 2px solid var(--md-default-fg-color--lightest); + border-radius: var(--card-radius); + transition: var(--transition-smooth); + position: relative; + overflow: hidden; +} + +.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 img { + width: 120px; + height: 120px; + border-radius: 50%; + object-fit: cover; + margin-bottom: 1rem; + border: 3px solid var(--md-default-fg-color--lightest); + transition: var(--transition-base); +} + +.community-card:hover img { + border-color: var(--python-green); + transform: scale(1.05); +} +``` + +## Sistema Unificado de Tarjetas + +### Arquitectura Unificada + +Voluntarios y ponentes usan la **misma estructura** `.volunteer-card` pero con contenido diferenciado: + +- **Voluntarios**: Enfoque en contribuciones comunitarias y roles organizacionales +- **Ponentes**: Enfoque en especialidades técnicas y charlas recientes + +### Estructura HTML Base + +```html +### Nombre de la Persona {.volunteer-header} + +
+
+
+

Nombre de la Persona

+

Rol/Empresa descripción

+
+ + Embajador + Organizador + + DevOps + Desarrollo +
+
+
+ Persona + +
+
+
+
+ ESPECIALIDADES TÉCNICAS + Lista de especialidades técnicas + Charlas recientes: +
    +
  • Contenido item 1
  • +
  • Contenido item 2
  • +
+
+
+
+``` + +### CSS del Sistema Unificado + +```css +.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); +} + +.volunteer-card .card-header { + display: grid; + grid-template-columns: 1fr auto; + gap: 2rem; + align-items: start; + margin-bottom: 1.5rem; +} + +.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); +} +``` + +### Sistema de Badges + +```css +.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; +} + +.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.technical { + background: rgba(96, 125, 139, 0.15); + color: var(--badge-technical); + border: 1px solid rgba(96, 125, 139, 0.3); +} +``` + +### Diferenciación de Contenido + +#### Para Voluntarios +```html +COMMUNITY ROLE TITLE +Community role description +Contribuciones principales: + +``` + +#### Para Ponentes +```html +ESPECIALIDADES TÉCNICAS +DevOps, Docker, Kubernetes, CI/CD +Charlas recientes: + +``` + +### Organización de Imágenes + +- **Voluntarios**: `/images/voluntarios/filename.jpg` +- **Ponentes**: `/images/ponentes/filename.jpg` +- **Comunidades**: `/images/comunidades/filename.png` + +### Diseño Visual Diferenciado + +#### En Páginas de Meetups (Rectangulares) +```css +.speaker-photo img { + width: 160px; + height: 160px; + /* SIN border-radius - rectangulares */ + border: 2px solid var(--md-default-fg-color--lightest); +} +``` + +#### En Páginas de Ponentes/Voluntarios (Circulares) +```css +.volunteer-avatar { + width: 100px; + height: 100px; + border-radius: 50%; /* Circulares */ + border: 3px solid var(--md-primary-fg-color--light); +} +``` + +## Layout y Responsive + +### Breakpoint Principal + +**Mobile**: `< 768px` +**Desktop**: `≥ 768px` + +```css +@media (max-width: 768px) { + .participation-grid, + .year-cards { + grid-template-columns: 1fr; + gap: 1rem; + } + + .community-links { + justify-content: center; + gap: 0.75rem; + } + + .volunteer-card .card-header { + grid-template-columns: 1fr; + text-align: center; + gap: 1.5rem; + } + + .speaker-photo img { + width: 120px; + height: 120px; + } +} +``` + +### Patrones de Grid + +#### Auto-fit con Mínimo +```css +grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); +``` + +#### Grillas Específicas +```css +/* Participación */ +.participation-grid { + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); +} + +/* Enlaces de comunidad */ +.community-links { + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); +} + +/* Comunidades aliadas */ +.communities-grid { + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); +} +``` + +## Buenas Prácticas + +### ✅ Variables-First Approach + +```css +/* ✅ Correcto */ +.nuevo-componente { + background: var(--python-green); + color: var(--badge-technical); + border-radius: var(--card-radius); + transition: var(--transition-base); + margin: var(--space-md); +} + +/* ❌ Incorrecto */ +.nuevo-componente { + background: #4CAF50; + color: #37474F; + border-radius: 0.75rem; + transition: all 0.3s ease; + margin: 1.5rem; +} +``` + +### ✅ Sistema Unificado + +```css +/* ✅ Correcto - Usar clases existentes */ +
+
+ +
+
+ +/* ❌ Incorrecto - Crear nuevas estructuras */ +
+ +
+``` + +### ✅ Mobile-First + +```css +/* ✅ Correcto - Base móvil, luego desktop */ +.component { + font-size: 1rem; + padding: 1rem; +} + +@media (min-width: 768px) { + .component { + font-size: 1.2rem; + padding: 2rem; + } +} +``` + +### ✅ Nomenclatura Consistente + +```css +/* ✅ Correcto */ +.volunteer-card /* Componente principal */ +.volunteer-card .card-header /* Elemento del componente */ +.volunteer-card .badge.technical /* Modificador */ + +/* ❌ Incorrecto */ +.volunteerCard +.card_header +.technicalBadge +``` + +### ❌ Qué NO hacer + +1. **Estilos inline** - Usar siempre classes CSS +2. **Colores hardcoded** - Usar variables CSS +3. **`!important`** - Usar especificidad apropiada +4. **Múltiples breakpoints** - Mantener único en 768px +5. **Componentes duplicados** - Reutilizar sistema unificado + +## Troubleshooting + +### Problemas Comunes + +#### 1. Estilos No Aplicados + +**Verificar**: +- ¿Está incluido `custom.css` en `mkdocs.yml`? +- ¿La especificidad CSS es suficiente? +- ¿Hay conflictos con Material Design? + +**Solución**: +```css +/* Aumentar especificidad sin !important */ +.md-content .volunteer-card { + /* estilos */ +} +``` + +#### 2. Modo Oscuro Problemático + +```css +/* ❌ Problemático */ +.component { + color: #333; + background: white; +} + +/* ✅ Correcto */ +.component { + color: var(--md-default-fg-color); + background: var(--md-default-bg-color); +} +``` + +#### 3. Responsive Roto + +```css +/* ❌ Problemático */ +.grid { + grid-template-columns: 300px 300px 300px; +} + +/* ✅ Correcto */ +.grid { + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); +} +``` + +#### 4. Variables No Definidas + +**Error común**: Usar variables que no existen +```css +/* ❌ Variable inexistente */ +color: var(--primary-blue); + +/* ✅ Variable correcta */ +color: var(--year-2024-color); +``` + +## Checklist para Nuevos Componentes + +- [ ] ¿Usa variables CSS en lugar de valores hardcoded? +- [ ] ¿Es responsive con el breakpoint único (768px)? +- [ ] ¿Funciona en modo claro y oscuro? +- [ ] ¿Sigue las naming conventions establecidas? +- [ ] ¿Reutiliza el sistema unificado cuando es apropiado? +- [ ] ¿Tiene estados hover/focus con transiciones? +- [ ] ¿Es accesible y semánticamente correcto? +- [ ] ¿Está documentado en esta guía? + +## Referencias + +- [MkDocs Material Variables](https://squidfunk.github.io/mkdocs-material/customization/#additional-css) +- [CSS Variables MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties) +- [FontAwesome Icons](https://fontawesome.com/icons) + +--- + +**Última actualización**: Esta guía se mantiene sincronizada con `docs/css/custom.css` (~1466 líneas) diff --git a/broken_links.json b/broken_links.json new file mode 100644 index 0000000..014f3e7 --- /dev/null +++ b/broken_links.json @@ -0,0 +1,722 @@ +{ + "summary": { + "total_files_scanned": 35, + "working_links": 79, + "broken_links": 0, + "base_url": "http://127.0.0.1:8000" + }, + "broken_links": [], + "working_links": [ + { + "file": "about.md", + "text": "guía para ponentes", + "url": "comunidad/ponentes/", + "full_url": "http://127.0.0.1:8000/comunidad/ponentes/", + "status": "200 OK", + "line": 42, + "link_type": "markdown" + }, + { + "file": "about.md", + "text": "nuestra página de voluntarios", + "url": "/comunidad/voluntarios/", + "full_url": "http://127.0.0.1:8000/comunidad/voluntarios/", + "status": "200 OK", + "line": 46, + "link_type": "markdown" + }, + { + "file": "index.md", + "text": "Explorar charlas", + "url": "/meetups/", + "full_url": "http://127.0.0.1:8000/meetups/", + "status": "200 OK", + "line": 8, + "link_type": "html" + }, + { + "file": "index.md", + "text": "Participa", + "url": "/comunidad/como-contribuir/", + "full_url": "http://127.0.0.1:8000/comunidad/como-contribuir/", + "status": "200 OK", + "line": 9, + "link_type": "html" + }, + { + "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", + "status": "200 OK", + "line": 21, + "link_type": "html" + }, + { + "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", + "status": "200 OK", + "line": 22, + "link_type": "html" + }, + { + "file": "index.md", + "text": "Conoce Más", + "url": "/comunidad/ponentes/", + "full_url": "http://127.0.0.1:8000/comunidad/ponentes/", + "status": "200 OK", + "line": 39, + "link_type": "html" + }, + { + "file": "index.md", + "text": "Únete", + "url": "/comunidad/voluntarios/", + "full_url": "http://127.0.0.1:8000/comunidad/voluntarios/", + "status": "200 OK", + "line": 44, + "link_type": "html" + }, + { + "file": "index.md", + "text": "Ver Eventos", + "url": "/meetups/", + "full_url": "http://127.0.0.1:8000/meetups/", + "status": "200 OK", + "line": 49, + "link_type": "html" + }, + { + "file": "meetups/2023/index.md", + "text": "Ver detalles", + "url": "202311-noviembre", + "full_url": "http://127.0.0.1:8000/202311-noviembre", + "status": "200 OK", + "line": 15, + "link_type": "markdown" + }, + { + "file": "meetups/2023/index.md", + "text": "Ver detalles", + "url": "202311-noviembre", + "full_url": "http://127.0.0.1:8000/202311-noviembre", + "status": "200 OK", + "line": 16, + "link_type": "markdown" + }, + { + "file": "meetups/2023/index.md", + "text": "Ver detalles", + "url": "202310-octubre", + "full_url": "http://127.0.0.1:8000/202310-octubre", + "status": "200 OK", + "line": 17, + "link_type": "markdown" + }, + { + "file": "meetups/2023/index.md", + "text": "Ver detalles", + "url": "202309-septiembre", + "full_url": "http://127.0.0.1:8000/202309-septiembre", + "status": "200 OK", + "line": 18, + "link_type": "markdown" + }, + { + "file": "meetups/2023/index.md", + "text": "Ver detalles", + "url": "202309-septiembre", + "full_url": "http://127.0.0.1:8000/202309-septiembre", + "status": "200 OK", + "line": 19, + "link_type": "markdown" + }, + { + "file": "meetups/2023/index.md", + "text": "ponentes y voluntarios reconocidos", + "url": "/comunidad/como-contribuir/", + "full_url": "http://127.0.0.1:8000/comunidad/como-contribuir/", + "status": "200 OK", + "line": 59, + "link_type": "markdown" + }, + { + "file": "meetups/2024/index.md", + "text": "Ver detalles", + "url": "202411-noviembre", + "full_url": "http://127.0.0.1:8000/202411-noviembre", + "status": "200 OK", + "line": 15, + "link_type": "markdown" + }, + { + "file": "meetups/2024/index.md", + "text": "Ver detalles", + "url": "202411-noviembre", + "full_url": "http://127.0.0.1:8000/202411-noviembre", + "status": "200 OK", + "line": 16, + "link_type": "markdown" + }, + { + "file": "meetups/2024/index.md", + "text": "Ver detalles", + "url": "202410-octubre", + "full_url": "http://127.0.0.1:8000/202410-octubre", + "status": "200 OK", + "line": 17, + "link_type": "markdown" + }, + { + "file": "meetups/2024/index.md", + "text": "Ver detalles", + "url": "202409-septiembre", + "full_url": "http://127.0.0.1:8000/202409-septiembre", + "status": "200 OK", + "line": 18, + "link_type": "markdown" + }, + { + "file": "meetups/2024/index.md", + "text": "Ver detalles", + "url": "202409-septiembre", + "full_url": "http://127.0.0.1:8000/202409-septiembre", + "status": "200 OK", + "line": 19, + "link_type": "markdown" + }, + { + "file": "meetups/2024/index.md", + "text": "Ver detalles", + "url": "202408-agosto", + "full_url": "http://127.0.0.1:8000/202408-agosto", + "status": "200 OK", + "line": 20, + "link_type": "markdown" + }, + { + "file": "meetups/2024/index.md", + "text": "Ver detalles", + "url": "202408-agosto", + "full_url": "http://127.0.0.1:8000/202408-agosto", + "status": "200 OK", + "line": 21, + "link_type": "markdown" + }, + { + "file": "meetups/2024/index.md", + "text": "Ver detalles", + "url": "202407-julio", + "full_url": "http://127.0.0.1:8000/202407-julio", + "status": "200 OK", + "line": 22, + "link_type": "markdown" + }, + { + "file": "meetups/2024/index.md", + "text": "Ver detalles", + "url": "202407-julio", + "full_url": "http://127.0.0.1:8000/202407-julio", + "status": "200 OK", + "line": 23, + "link_type": "markdown" + }, + { + "file": "meetups/2024/index.md", + "text": "Ver detalles", + "url": "202406-junio", + "full_url": "http://127.0.0.1:8000/202406-junio", + "status": "200 OK", + "line": 24, + "link_type": "markdown" + }, + { + "file": "meetups/2024/index.md", + "text": "Ver detalles", + "url": "202405-mayo", + "full_url": "http://127.0.0.1:8000/202405-mayo", + "status": "200 OK", + "line": 25, + "link_type": "markdown" + }, + { + "file": "meetups/2024/index.md", + "text": "Ver detalles", + "url": "202404-abril", + "full_url": "http://127.0.0.1:8000/202404-abril", + "status": "200 OK", + "line": 26, + "link_type": "markdown" + }, + { + "file": "meetups/2024/index.md", + "text": "Ver detalles", + "url": "202403-marzo", + "full_url": "http://127.0.0.1:8000/202403-marzo", + "status": "200 OK", + "line": 27, + "link_type": "markdown" + }, + { + "file": "meetups/2024/index.md", + "text": "Ver detalles", + "url": "202402-febrero", + "full_url": "http://127.0.0.1:8000/202402-febrero", + "status": "200 OK", + "line": 28, + "link_type": "markdown" + }, + { + "file": "meetups/2024/index.md", + "text": "Ver detalles", + "url": "202401-enero", + "full_url": "http://127.0.0.1:8000/202401-enero", + "status": "200 OK", + "line": 29, + "link_type": "markdown" + }, + { + "file": "meetups/2024/index.md", + "text": "ponentes y voluntarios reconocidos", + "url": "/comunidad/como-contribuir/", + "full_url": "http://127.0.0.1:8000/comunidad/como-contribuir/", + "status": "200 OK", + "line": 69, + "link_type": "markdown" + }, + { + "file": "meetups/2025/index.md", + "text": "Ver detalles", + "url": "202507-julio", + "full_url": "http://127.0.0.1:8000/202507-julio", + "status": "200 OK", + "line": 15, + "link_type": "markdown" + }, + { + "file": "meetups/2025/index.md", + "text": "Ver detalles", + "url": "202506-junio", + "full_url": "http://127.0.0.1:8000/202506-junio", + "status": "200 OK", + "line": 16, + "link_type": "markdown" + }, + { + "file": "meetups/2025/index.md", + "text": "Ver detalles", + "url": "202505-mayo", + "full_url": "http://127.0.0.1:8000/202505-mayo", + "status": "200 OK", + "line": 17, + "link_type": "markdown" + }, + { + "file": "meetups/2025/index.md", + "text": "Ver detalles", + "url": "202504-abril", + "full_url": "http://127.0.0.1:8000/202504-abril", + "status": "200 OK", + "line": 18, + "link_type": "markdown" + }, + { + "file": "meetups/2025/index.md", + "text": "Ver detalles", + "url": "202504-abril", + "full_url": "http://127.0.0.1:8000/202504-abril", + "status": "200 OK", + "line": 19, + "link_type": "markdown" + }, + { + "file": "meetups/2025/index.md", + "text": "Ver detalles", + "url": "202504-abril", + "full_url": "http://127.0.0.1:8000/202504-abril", + "status": "200 OK", + "line": 20, + "link_type": "markdown" + }, + { + "file": "meetups/2025/index.md", + "text": "Ver detalles", + "url": "202503-marzo", + "full_url": "http://127.0.0.1:8000/202503-marzo", + "status": "200 OK", + "line": 21, + "link_type": "markdown" + }, + { + "file": "meetups/2025/index.md", + "text": "Ver detalles", + "url": "202503-marzo", + "full_url": "http://127.0.0.1:8000/202503-marzo", + "status": "200 OK", + "line": 22, + "link_type": "markdown" + }, + { + "file": "meetups/2025/index.md", + "text": "Ver detalles", + "url": "202502-febrero", + "full_url": "http://127.0.0.1:8000/202502-febrero", + "status": "200 OK", + "line": 23, + "link_type": "markdown" + }, + { + "file": "meetups/2025/index.md", + "text": "Ver detalles", + "url": "202502-febrero", + "full_url": "http://127.0.0.1:8000/202502-febrero", + "status": "200 OK", + "line": 24, + "link_type": "markdown" + }, + { + "file": "meetups/2025/index.md", + "text": "Ver detalles", + "url": "202501-enero", + "full_url": "http://127.0.0.1:8000/202501-enero", + "status": "200 OK", + "line": 25, + "link_type": "markdown" + }, + { + "file": "meetups/2025/index.md", + "text": "Ver detalles", + "url": "202501-enero", + "full_url": "http://127.0.0.1:8000/202501-enero", + "status": "200 OK", + "line": 26, + "link_type": "markdown" + }, + { + "file": "meetups/2025/index.md", + "text": "ponentes y voluntarios reconocidos", + "url": "/comunidad/como-contribuir/", + "full_url": "http://127.0.0.1:8000/comunidad/como-contribuir/", + "status": "200 OK", + "line": 67, + "link_type": "markdown" + }, + { + "file": "comunidad/como-contribuir.md", + "text": "Ser Ponente", + "url": "ponentes/", + "full_url": "http://127.0.0.1:8000/ponentes/", + "status": "200 OK", + "line": 31, + "link_type": "markdown" + }, + { + "file": "comunidad/como-contribuir.md", + "text": "Ser Voluntario", + "url": "voluntarios/", + "full_url": "http://127.0.0.1:8000/voluntarios/", + "status": "200 OK", + "line": 37, + "link_type": "markdown" + }, + { + "file": "comunidad/como-contribuir.md", + "text": "Alianzas", + "url": "alianzas/", + "full_url": "http://127.0.0.1:8000/alianzas/", + "status": "200 OK", + "line": 55, + "link_type": "markdown" + }, + { + "file": "comunidad/como-contribuir.md", + "text": "formas de contribuir", + "url": "#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/", + "full_url": "http://127.0.0.1:8000/meetups/", + "status": "200 OK", + "line": 70, + "link_type": "markdown" + }, + { + "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/", + "status": "200 OK", + "line": 125, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 126, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 158, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 190, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 222, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 223, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 255, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 256, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 288, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 320, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 321, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 322, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 323, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 355, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 387, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 419, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 451, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 483, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 484, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 485, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 486, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 518, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 519, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 551, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 583, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 615, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 647, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 679, + "link_type": "html" + }, + { + "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/", + "status": "200 OK", + "line": 711, + "link_type": "html" + }, + { + "file": "comunidad/voluntarios.md", + "text": "Más Información", + "url": "como-contribuir/", + "full_url": "http://127.0.0.1:8000/como-contribuir/", + "status": "200 OK", + "line": 87, + "link_type": "html" + } + ] +} \ No newline at end of file diff --git a/docs/about.md b/docs/about.md index d5a0ac9..71e3f03 100644 --- a/docs/about.md +++ b/docs/about.md @@ -1,10 +1,10 @@ -
- Python CDMX Logo +
+ Python CDMX Logo
# Sobre Python CDMX -
+
Conectando la comunidad Python en la Ciudad de México
@@ -38,49 +38,23 @@ Creemos que el verdadero crecimiento profesional viene de la colaboración y el ## Formas de Participación ### Ser Ponente -Comparte tu experiencia y conocimiento con la comunidad. Consulta nuestra [guía para ponentes](comunidad/ponentes.md) 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.md). + +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 + Participa en nuestros eventos mensuales para aprender, conectar y crecer profesionalmente. --- -## Conecta con Nuestra Comunidad - - +--8<-- "components/community-links.md" --- -## También Te Puede Interesar - -| **Eventos** | **Participa** | **Comunidad** | -|:---|:---|:---| -| [Meetups 2025](meetups/2025/index.md) - Año actual | [Ser Ponente](comunidad/ponentes.md) - Comparte conocimiento | [Nuestros Ponentes](comunidad/ponentes.md) - Conoce a la comunidad | -| [Meetups 2024](meetups/2024/index.md) - Año anterior | [Ser Voluntario](comunidad/voluntarios.md) - Ayuda a organizar | [Alianzas](comunidad/alianzas.md) - Comunidades aliadas | -| [Archivo Completo](meetups/index.md) - Todos los meetups | [Cómo Contribuir](comunidad/como-contribuir.md) - Guía general | [Volver al Inicio](index.md) - Página principal | +--8<-- "components/quick-navigation.md" --- - -* Última actualización: {{ git_revision_date_localized }}* diff --git a/docs/components/README.md b/docs/components/README.md deleted file mode 100644 index b0635f4..0000000 --- a/docs/components/README.md +++ /dev/null @@ -1,76 +0,0 @@ -# Componentes Comunes para Meetups - -Este directorio contiene componentes reutilizables para las páginas de meetups. - -## 📁 Archivos disponibles - -### `networking.md` -Sección de networking que se incluye al final de cada meetup. - -### `community-links.md` -Enlaces a las redes sociales y plataformas de la comunidad. - -### `footer.md` -Footer común con información de última actualización. - -## 🎯 Beneficios - -- **Mantenimiento centralizado**: Cambios en un solo lugar se reflejan en todos los meetups -- **Consistencia**: Todos los eventos tienen el mismo estilo y estructura -- **Reutilización**: No hay que duplicar código -- **Facilidad de actualización**: Modificar enlaces o estilos es más sencillo - -## 📝 Cómo usar los componentes - -Actualmente los componentes están embebidos directamente en los archivos de meetups para evitar problemas con el plugin de snippets. - -### Ejemplo de uso: - -```markdown -## Contenido específico del meetup... - - -
-

💬 ¡Conecta con la comunidad!

-

- Después de la charla habrá un tiempo de networking donde podrás platicar con programadores de diferentes niveles e intereses. -

-
- - - -``` - -## 🔧 Modificaciones - -Si necesitas modificar algún componente: - -1. Edita el archivo correspondiente en este directorio -2. Copia el contenido actualizado a los meetups que lo usen -3. Mantén la consistencia visual y de estilo - -## 🗂️ Estructura de directorios - -``` -docs/ -├── components/ -│ ├── networking.md -│ ├── community-links.md -│ ├── footer.md -│ └── README.md -├── meetups/ -│ ├── 2025/ -│ │ ├── 202506-junio.md -│ │ └── ... -│ └── ... -└── ... -``` - -## ⚠️ Nota importante - -Los componentes están embebidos directamente en los archivos de meetups para evitar problemas con el plugin `pymdownx.snippets`. Esto asegura que el sitio funcione correctamente sin errores de compilación. diff --git a/docs/components/community-links.md b/docs/components/community-links.md index 7d175df..9a840bf 100644 --- a/docs/components/community-links.md +++ b/docs/components/community-links.md @@ -1,22 +1,10 @@ ## Conecta con Nuestra Comunidad -