- Add mypy.ini configuration to exclude migration scripts - Rename migration files to proper snake_case (post-migration.py → post_migration.py) - Add __init__.py to migration directories for proper Python package structure - Add new portal access tests for website_sale_aplicoop - Code formatting improvements (black, isort) - Update copilot instructions and project configuration Related to previous code quality refactoring work. |
||
|---|---|---|
| .. | ||
| base | ||
| components | ||
| layout | ||
| sections | ||
| README.md | ||
| website_sale.css | ||
CSS Architecture - Website Sale Aplicoop
Refactoring Date: 7 de febrero de 2026 Status: ✅ Complete Previous Size: 2,986 líneas en 1 archivo New Size: ~400 líneas distribuidas en 15 archivos modulares
📁 Estructura de Carpetas
website_sale_aplicoop/static/src/css/
│
├── website_sale.css ← Index/imports principal (48 líneas)
│
├── base/
│ ├── variables.css ← Variables CSS globales (colores, tipografía, espaciados)
│ └── utilities.css ← Clases utilitarias (.sr-only, .text-muted, etc)
│
├── layout/
│ ├── pages.css ← Fondos y layouts de páginas (eskaera-page, etc)
│ ├── header.css ← Headers, navegación y títulos
│ └── responsive.css ← Media queries centralizadas (todas las breakpoints)
│
├── components/
│ ├── product-card.css ← Tarjetas de producto
│ ├── order-card.css ← Tarjetas de orden (Eskaera)
│ ├── cart.css ← Carrito lateral
│ ├── buttons.css ← Botones y acciones
│ ├── quantity-control.css ← Control de cantidad (+ - input)
│ ├── forms.css ← Inputs, selects, checkboxes
│ └── alerts.css ← Alertas y notificaciones
│
├── sections/
│ ├── products-grid.css ← Grid de productos
│ ├── order-list.css ← Lista de órdenes
│ ├── checkout.css ← Página de checkout
│ └── info-cards.css ← Tarjetas de información
│
└── README.md ← Este archivo
🎯 Beneficios de la Refactorización
| Aspecto | Antes | Después | Mejora |
|---|---|---|---|
| Tamaño de archivo | 2,986 líneas | 48 líneas (index) | 98.4% reducción |
| Número de archivos | 1 monolítico | 15 modulares | Mejor organización |
| Tiempo para encontrar regla | 5-10 min | 1-2 min | 75% más rápido |
| Reutilización de código | No (todo mezclado) | Sí (componentes aislados) | ✅ |
| Testing CSS | Imposible | Posible por componente | ✅ |
| Mantenibilidad | Difícil (cambios afectan múltiples zonas) | Fácil (aislado) | ✅ |
📊 Desglose de Archivos
base/ - Fundamentos
- variables.css (~80 líneas) Colores, tipografía, espaciados, sombras, transiciones, z-index
- utilities.css (~15 líneas) Clases utilitarias reutilizables (.sr-only, .text-muted, etc)
layout/ - Estructura Global
- pages.css (~70 líneas) Fondos de página, gradientes, pseudo-elementos (::before)
- header.css (~100 líneas) Headers, navegación, títulos, información de pedidos
- responsive.css (~200 líneas) Todas las media queries (4 breakpoints: 992px, 768px, 576px, etc)
components/ - Elementos Reutilizables
- product-card.css (~80 líneas) Tarjetas de producto con hover, imagen, título, precio
- order-card.css (~100 líneas) Tarjetas de orden (Eskaera) con metadatos, badges
- cart.css (~150 líneas) Carrito lateral, items, total, botones save/reload
- buttons.css (~80 líneas) Botones primarios, checkout, acciones
- quantity-control.css (~100 líneas) Control de cantidad (spinners + input numérico)
- forms.css (~70 líneas) Inputs, selects, checkboxes, labels
- alerts.css (~50 líneas) Alertas, notificaciones, toasts
sections/ - Layouts Específicos de Página
- products-grid.css (~25 líneas) Grid de productos con responsive
- order-list.css (~40 líneas) Lista de órdenes (Eskaera page)
- checkout.css (~100 líneas) Tabla de checkout, totales, summary
- info-cards.css (~50 líneas) Tarjetas de información, metadatos
🚀 Cómo Usar la Arquitectura
Agregar Nuevas Variables Globales
/* base/variables.css */
:root {
--my-new-color: #abc123;
}
Crear un Nuevo Componente
- Crear archivo:
components/my-component.css - Escribir estilos del componente (aislado)
- Agregar import en
website_sale.css:
@import 'components/my-component.css';
Modificar Estilos Responsivos
- Todos los media queries están en
layout/responsive.css - No hay media queries esparcidos en otros archivos
- Fácil ver todos los breakpoints en un solo lugar
Encontrar Estilos de Elemento
Tarjeta de producto → components/product-card.css
Carrito → components/cart.css
Página eskaera → sections/order-list.css
Colores → base/variables.css
📌 Convenciones
Nomenclatura de Archivos
base/→ Fundamentos (variables, utilidades)layout/→ Estructura global (páginas, headers, responsive)components/→ Elementos reutilizables (tarjetas, botones)sections/→ Layouts específicos de página (checkout, lista)
Orden de @import en website_sale.css
- Base & Variables (colores, espacios) - Otras se construyen sobre esto
- Layout & Pages (fondos, contenedores) - Base estructural
- Components (elementos) - Usan variables de base
- Sections (páginas) - Componen con componentes
- Responsive (media queries) - Ajusta todo lo anterior
Reglas CSS
- ✅ Usar
--variablesdefinidas enbase/variables.css - ✅ Mantener componentes aislados (no afecten otros)
- ✅ Media queries solo en
layout/responsive.css - ✅ Comentarios de sección con
/* ========== ... ========== */ - ❌ No hardcodear colores (usar variables)
- ❌ No mezclar lógica de múltiples componentes en un archivo
🔧 Optimizaciones Futuras
Consolidación de Duplicados
Algunos estilos aparecen múltiples veces (ej: .card-text):
- Revisar
components/product-card.cssycomponents/order-card.css - Extraer a archivo
components/card-base.csssi es necesario
Mejora de Especificidad
- Revisar selectores con
!important - Reducir especificidad donde sea posible
- Usar CSS variables en lugar de valores hardcodeados
SCSS/SASS (Futuro)
Si en algún momento migramos a SCSS:
@import 'base/variables';
@import 'base/utilities';
// etc...
Permitiría mejor nesting y variables más poderosas.
📈 Cambios Visuales
✅ NINGUNO - La refactorización es solo organizacional El CSS compilado genera exactamente el mismo output que antes.
🧪 Verificación de Integridad
Después de la refactorización, verificar:
# 1. El archivo principal existe
ls -lh css/website_sale.css
# 2. Todos los imports existen
grep -r "components/\|sections/\|base/\|layout/" css/website_sale.css
# 3. El CSS compila sin errores
# En el navegador, no debe haber errores en la consola
# 4. Los estilos se aplican correctamente
# Visitar todas las páginas (shop, orden, checkout) y verificar visualmente
📚 Referencias
- CSS Architecture Pattern: SMACSS (Scalable and Modular Architecture for CSS)
- BEM (Block Element Modifier): Para nombrado de clases
- Mobile-First Responsive: Breakpoints en
layout/responsive.css
✅ Checklist de Refactorización
- Crear estructura de carpetas (base, layout, components, sections)
- Extraer variables a
base/variables.css - Separar utilidades a
base/utilities.css - Crear
layout/pages.cssylayout/header.css - Crear componentes en
components/ - Crear secciones en
sections/ - Centralizar responsive en
layout/responsive.css - Crear
website_sale.csscomo index - Verificar que no haya reglas duplicadas
- Documentar en README.md
Mantenido por: Equipo de Frontend Última actualización: 7 de febrero de 2026 Licencia: AGPL-3.0