|
| 1 | +# Python CDMX Project Memory |
| 2 | + |
| 3 | +> **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. |
| 4 | +
|
| 5 | +## Project Overview |
| 6 | +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. |
| 7 | + |
| 8 | +**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. |
| 9 | + |
| 10 | +## Architecture & Technology Stack |
| 11 | +- **Framework**: MkDocs Material |
| 12 | +- **Styling**: Optimized custom CSS with Material Design principles |
| 13 | +- **Content**: Markdown files with reusable HTML components |
| 14 | +- **Deployment**: Static site generation |
| 15 | +- **Content Management**: Manual markdown editing + automated scripts |
| 16 | +- **Icons**: FontAwesome 6.4.0 via CDN |
| 17 | + |
| 18 | +## File Structure & Organization |
| 19 | +- `docs/` - All content and assets |
| 20 | +- `docs/css/custom.css` - Main styling file (~450 lines, heavily optimized) |
| 21 | +- `docs/index.md` - Homepage with hero section, motto, and participation cards |
| 22 | +- `docs/components/` - Reusable markdown components |
| 23 | + - `community-links.md` - Social media links with brand colors |
| 24 | + - `quick-navigation.md` - Page navigation cards system |
| 25 | +- `docs/meetups/` - Event documentation organized by year |
| 26 | +- `docs/comunidad/` - Community pages (volunteers, speakers, etc.) |
| 27 | +- `scripts/` - Python automation scripts for content generation |
| 28 | + |
| 29 | +## Design System & CSS Guidelines |
| 30 | + |
| 31 | +### Color Palette |
| 32 | +```css |
| 33 | +/* Primary Colors */ |
| 34 | +--python-green: #4CAF50 |
| 35 | +--python-green-dark: #45a049 |
| 36 | +--python-white: #ffffff |
| 37 | + |
| 38 | +/* Social Media Brand Colors */ |
| 39 | +--telegram-color: #0088cc |
| 40 | +--meetup-color: #ed1c40 |
| 41 | +--youtube-color: #ff0000 |
| 42 | +--github-color: #333333 |
| 43 | +--instagram-color: #e4405f |
| 44 | +--linkedin-color: #0077b5 |
| 45 | +``` |
| 46 | + |
| 47 | +### CSS Architecture |
| 48 | +- **Variables-first approach**: All colors, transitions, and spacing use CSS custom properties |
| 49 | +- **MkDocs Material integration**: Leverages native variables (`var(--md-primary-fg-color)`) |
| 50 | +- **Responsive design**: Single breakpoint at 768px for mobile |
| 51 | +- **Component-based**: Clear separation of concerns |
| 52 | +- **Heavily optimized**: Eliminated duplications, reduced code by 35% |
| 53 | + |
| 54 | +### Component Classes |
| 55 | + |
| 56 | +#### Core Layout |
| 57 | +- `.hero-section` - Main landing area with logo and buttons |
| 58 | +- `.community-motto` - Highlighted community slogan with decorative quotes |
| 59 | +- `.participation-grid` - 2-column grid (1 on mobile) with centered 3rd card |
| 60 | + |
| 61 | +#### Cards & Content |
| 62 | +- `.participation-card` - Large centered icons with call-to-action buttons |
| 63 | +- `.community-highlight` - Special highlighted sections |
| 64 | +- `.upcoming-events` - Event highlight sections |
| 65 | + |
| 66 | +#### Navigation & Buttons |
| 67 | +- `.action-buttons` - Hero button containers |
| 68 | +- `.btn`, `.btn-primary` - Standard action buttons (green) |
| 69 | +- `.btn-nav` - Discrete navigation buttons (minimal style) |
| 70 | +- `.quick-navigation` - End-of-page navigation grid |
| 71 | +- `.quick-navigation-title` - Navigation section titles |
| 72 | + |
| 73 | +#### Community Links |
| 74 | +- `.community-links` - Social media grid with brand colors |
| 75 | +- `.community-link` - Individual social platform buttons with hover effects |
| 76 | +- Specific classes: `.telegram`, `.meetup`, `.youtube`, `.github`, `.instagram`, `.linkedin` |
| 77 | + |
| 78 | +## Development Workflow |
| 79 | + |
| 80 | +### CSS Modifications |
| 81 | +1. **NEVER use inline styles** - Always use classes in custom.css |
| 82 | +2. Use existing CSS variables for consistency |
| 83 | +3. Follow the established sections in custom.css: |
| 84 | + - Variables CSS personalizadas |
| 85 | + - Sección Hero |
| 86 | + - Sistema de botones |
| 87 | + - Tarjetas y grillas |
| 88 | + - Enlaces de comunidad |
| 89 | + - Lema y navegación |
| 90 | + - Iconografía |
| 91 | + - Media queries responsivas |
| 92 | +4. Test in both light and dark modes |
| 93 | +5. Ensure mobile responsiveness at 768px breakpoint |
| 94 | + |
| 95 | +### Content Updates |
| 96 | +- Event pages: Follow existing year/month structure in `docs/meetups/` |
| 97 | +- Images: Store in appropriate `docs/images/` subdirectories |
| 98 | +- Community content: Update respective pages in `docs/comunidad/` |
| 99 | +- Components: Use `--8<-- "components/component-name.md"` for includes |
| 100 | + |
| 101 | +### Theme Configuration |
| 102 | +```yaml |
| 103 | +# mkdocs.yml |
| 104 | +palette: |
| 105 | + - scheme: default |
| 106 | + primary: green |
| 107 | + accent: green |
| 108 | + - scheme: slate |
| 109 | + primary: green |
| 110 | + accent: green |
| 111 | +``` |
| 112 | + |
| 113 | +## Key Components & Usage |
| 114 | + |
| 115 | +### Community Motto |
| 116 | +```html |
| 117 | +<div class="community-motto"> |
| 118 | + Vine por el código, me quedé por la comunidad |
| 119 | +</div> |
| 120 | +``` |
| 121 | + |
| 122 | +### Participation Cards (Modern Design) |
| 123 | +```html |
| 124 | +<div class="participation-grid"> |
| 125 | + <div class="participation-card"> |
| 126 | + <h3><i class="fas fa-microphone"></i> Ser Ponente</h3> |
| 127 | + <p>Description text</p> |
| 128 | + <a href="/link/" class="btn-primary">Action Button</a> |
| 129 | + </div> |
| 130 | +</div> |
| 131 | +``` |
| 132 | + |
| 133 | +### Community Links |
| 134 | +```html |
| 135 | +<div class="community-links"> |
| 136 | + <a href="#" class="community-link telegram"> |
| 137 | + <i class="fab fa-telegram"></i> Telegram |
| 138 | + </a> |
| 139 | + <a href="#" class="community-link github"> |
| 140 | + <i class="fab fa-github"></i> GitHub |
| 141 | + </a> |
| 142 | +</div> |
| 143 | +``` |
| 144 | + |
| 145 | +### Quick Navigation |
| 146 | +```html |
| 147 | +<h2 class="quick-navigation-title"> |
| 148 | + <i class="fas fa-arrow-right"></i> Continúa Explorando |
| 149 | +</h2> |
| 150 | +<div class="quick-navigation"> |
| 151 | + <a href="/meetups/2025/" class="btn-nav"> |
| 152 | + <i class="fas fa-calendar"></i> Meetups 2025 |
| 153 | + </a> |
| 154 | +</div> |
| 155 | +``` |
| 156 | + |
| 157 | +### Button Types |
| 158 | +```html |
| 159 | +<!-- Primary action buttons --> |
| 160 | +<a href="/path/" class="btn btn-primary">Primary Action</a> |
| 161 | + |
| 162 | +<!-- Discrete navigation buttons --> |
| 163 | +<a href="/path/" class="btn-nav">Navigate</a> |
| 164 | +``` |
| 165 | + |
| 166 | +## CSS Variables Reference |
| 167 | + |
| 168 | +### Spacing & Layout |
| 169 | +```css |
| 170 | +--button-radius: 3.125rem |
| 171 | +--card-radius: 0.75rem |
| 172 | +``` |
| 173 | + |
| 174 | +### Transitions |
| 175 | +```css |
| 176 | +--transition-base: all 0.3s ease |
| 177 | +--transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) |
| 178 | +``` |
| 179 | + |
| 180 | +### Usage Pattern |
| 181 | +```css |
| 182 | +.new-component { |
| 183 | + background: var(--python-green); |
| 184 | + border-radius: var(--card-radius); |
| 185 | + transition: var(--transition-base); |
| 186 | + color: var(--python-white); |
| 187 | +} |
| 188 | +``` |
| 189 | + |
| 190 | +## Best Practices |
| 191 | + |
| 192 | +### Styling |
| 193 | +- **Never add inline styles** to markdown/HTML |
| 194 | +- Always use existing component classes or create new ones in custom.css |
| 195 | +- Maintain design consistency with existing components |
| 196 | +- Use CSS variables for all colors and measurements |
| 197 | +- Follow the established section order in custom.css |
| 198 | + |
| 199 | +### Content Structure |
| 200 | +- Use semantic HTML structure |
| 201 | +- Include proper alt text for images |
| 202 | +- Maintain consistent tone (Spanish for main content) |
| 203 | +- Use reusable components via includes |
| 204 | +- Follow existing patterns for event documentation |
| 205 | + |
| 206 | +### Performance & Optimization |
| 207 | +- CSS heavily optimized: removed duplications, unused code eliminated |
| 208 | +- Images optimized before adding to repository |
| 209 | +- Use MkDocs Material features when possible |
| 210 | +- CSS is organized for maximum maintainability |
| 211 | + |
| 212 | +## Responsive Design |
| 213 | +- **Primary breakpoint**: 768px |
| 214 | +- **Mobile-first approach**: Base styles for mobile, enhanced for desktop |
| 215 | +- **Grid systems**: Auto-adapt to smaller screens |
| 216 | +- **Typography**: Uses clamp() for responsive scaling |
| 217 | + |
| 218 | +## Maintenance Notes |
| 219 | +- CSS file currently ~450 lines (optimized from 692 lines) |
| 220 | +- All social media colors centralized in variables |
| 221 | +- Unified button system with three variants (primary, standard, navigation) |
| 222 | +- Single responsive breakpoint for consistency |
| 223 | +- Dark/light mode handled automatically by MkDocs Material variables |
| 224 | +- Community links use brand-specific colors with smooth hover transitions |
| 225 | +- Participation cards use large centered icons for modern appearance |
| 226 | + |
| 227 | +## Critical Information for New Developers |
| 228 | + |
| 229 | +### DO NOT MODIFY These Files (Auto-generated or Core) |
| 230 | +- `mkdocs.yml` - Core configuration (only change colors if needed) |
| 231 | +- Any files in `scripts/metadata_json/` - Auto-generated meetup data |
| 232 | +- Files generated by scripts - Check with team first |
| 233 | + |
| 234 | +### Key Design Decisions & Rationale |
| 235 | +1. **Single CSS File**: All custom styles in `docs/css/custom.css` to maintain simplicity |
| 236 | +2. **Variable-First Approach**: Every color, transition, and spacing uses CSS variables for easy theming |
| 237 | +3. **Material Design Integration**: Leverages MkDocs Material variables for automatic dark/light mode |
| 238 | +4. **Component Includes**: Reusable components in `docs/components/` for consistency |
| 239 | +5. **Spanish Content**: Main content in Spanish as this is a Mexico City community |
| 240 | +6. **Social Brand Colors**: Each platform uses official brand colors for recognition |
| 241 | +7. **Mobile-First**: 768px breakpoint chosen to match modern device patterns |
| 242 | + |
| 243 | +### Common Troubleshooting |
| 244 | +- **Styles not applying**: Check if using CSS variables correctly |
| 245 | +- **Dark mode issues**: Ensure using `var(--md-*)` variables instead of hardcoded colors |
| 246 | +- **Mobile layout broken**: Verify media query is at 768px, not other breakpoints |
| 247 | +- **Button inconsistency**: Use `.btn-primary` for actions, `.btn-nav` for navigation |
| 248 | +- **Icon not showing**: Verify FontAwesome class name and CDN is loading |
| 249 | + |
| 250 | +### When to Create New Components |
| 251 | +- **Reusable elements**: If used in 2+ places, create a component |
| 252 | +- **Complex styling**: If requires 5+ CSS rules, consider a new class |
| 253 | +- **Brand consistency**: Always check existing patterns before creating new styles |
| 254 | + |
| 255 | +### Integration Points |
| 256 | +- **MkDocs Material**: Uses `extra_css` in mkdocs.yml to load custom.css |
| 257 | +- **FontAwesome**: Loaded via CDN import in CSS file |
| 258 | +- **Component System**: Uses `--8<--` syntax for markdown includes |
| 259 | +- **Color System**: Inherits from mkdocs.yml palette configuration |
| 260 | + |
| 261 | +## Recent Major Updates |
| 262 | +- Complete CSS optimization (35% code reduction) |
| 263 | +- New community motto component with decorative quotes |
| 264 | +- Modernized participation cards with centered icons |
| 265 | +- Added discrete navigation button system |
| 266 | +- Centralized all social media brand colors |
| 267 | +- Consolidated media queries into single responsive section |
| 268 | +- Eliminated unused gradients and duplicate code |
| 269 | +- Added quick navigation component for page endings |
| 270 | + |
| 271 | +## Working with Claude AI |
| 272 | + |
| 273 | +### Using This Memory File |
| 274 | +When starting a new conversation with Claude: |
| 275 | +1. **Always attach this file** - It contains all project context |
| 276 | +2. **Reference specific sections** - Point Claude to relevant parts |
| 277 | +3. **Update this file** - Add any new components or major changes |
| 278 | +4. **Include current state** - Attach relevant files Claude needs to see |
| 279 | + |
| 280 | +### Effective Prompts for Claude |
| 281 | +``` |
| 282 | +"I'm working on the Python CDMX website. I need to [specific task]. |
| 283 | +Please refer to the CLAUDE.md file for project guidelines and existing patterns." |
| 284 | +``` |
| 285 | + |
| 286 | +### What to Include in Conversations |
| 287 | +- This CLAUDE.md file (always) |
| 288 | +- Current CSS file if making style changes |
| 289 | +- Relevant markdown files if changing content |
| 290 | +- Screenshots if debugging visual issues |
| 291 | + |
| 292 | +### Maintaining This Documentation |
| 293 | +- **Add new components** to the Component Classes section |
| 294 | +- **Update CSS variables** when adding new ones |
| 295 | +- **Document design decisions** in the Key Design Decisions section |
| 296 | +- **Add troubleshooting tips** based on common issues encountered |
| 297 | + |
| 298 | +## Quick Start for New Developers |
| 299 | +1. **Read this file completely** - Understanding the architecture is crucial |
| 300 | +2. **Test in both modes** - Always verify light and dark mode compatibility |
| 301 | +3. **Use existing patterns** - Check similar components before creating new ones |
| 302 | +4. **Follow CSS structure** - Add new styles in the appropriate section |
| 303 | +5. **Test responsive** - Verify 768px breakpoint behavior |
| 304 | +6. **Attach this file to Claude** - Use this memory for consistency and guidance |
| 305 | + |
| 306 | +## Project Continuation Checklist |
| 307 | +- [ ] CLAUDE.md file read and understood |
| 308 | +- [ ] Current project state reviewed |
| 309 | +- [ ] Testing environment set up (light/dark mode, mobile/desktop) |
| 310 | +- [ ] Existing component patterns studied |
| 311 | +- [ ] CSS variable system understood |
| 312 | +- [ ] MkDocs Material integration grasped |
0 commit comments