- renombrar openspec/ a _openspec/ (carpeta auxiliar) - mover specs de features a changes/ - crear specs base: arquitectura-limpia, estandares-codigo, nomenclatura - migrar _planificacion/ con design-system y roi-theme-template - agregar especificacion recaptcha anti-spam (proposal, tasks, spec) - corregir rutas y referencias en todas las specs Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
109 lines
4.6 KiB
Markdown
109 lines
4.6 KiB
Markdown
# Project Context
|
|
|
|
## Purpose
|
|
ROI Theme es un tema WordPress profesional siguiendo Clean Architecture para el sitio analisisdepreciosunitarios.com. Proporciona un sistema de componentes configurables con panel de administración y renderizado frontend dinámico.
|
|
|
|
## Tech Stack
|
|
- **CMS**: WordPress 6.x
|
|
- **Lenguaje**: PHP 8.x (strict types)
|
|
- **Patrón**: Clean Architecture (Domain, Application, Infrastructure)
|
|
- **Frontend**: Bootstrap 5, Bootstrap Icons
|
|
- **Base de Datos**: MySQL (tabla normalizada `wp_roi_theme_component_settings`)
|
|
- **CLI**: WP-CLI para sincronización de schemas
|
|
|
|
## Project Conventions
|
|
|
|
### Code Style
|
|
- `declare(strict_types=1)` en todos los archivos PHP
|
|
- Namespaces: `ROITheme\[Context]\[Component]\[Layer]`
|
|
- Clases finales por defecto
|
|
- Propiedades `private`/`protected`
|
|
- Escaping WordPress: `esc_html()`, `esc_attr()`, `esc_url()`, `esc_textarea()`
|
|
|
|
### Nomenclatura (NO NEGOCIABLE)
|
|
| Contexto | Formato | Ejemplo |
|
|
|-----------------------------|--------------|----------------------------------|
|
|
| component_name (JSON/BD) | kebab-case | "featured-image" |
|
|
| Nombre archivo schema | kebab-case | featured-image.json |
|
|
| Carpeta de módulo | PascalCase | FeaturedImage/ |
|
|
| Namespace PHP | PascalCase | ROITheme\Public\FeaturedImage\...|
|
|
| Clase Renderer/FormBuilder | PascalCase | FeaturedImageRenderer |
|
|
|
|
### Architecture Patterns
|
|
- **Clean Architecture**: Domain → Application → Infrastructure
|
|
- Domain NO depende de capas superiores
|
|
- Domain NO puede tener WordPress, echo/print, HTML
|
|
- Application NO puede tener WordPress
|
|
- Infrastructure implementa interfaces de Domain
|
|
- DI via constructor (interfaces, no clases concretas)
|
|
|
|
### Estructura del Tema
|
|
```
|
|
roi-theme/
|
|
├── Schemas/ # JSON schemas (kebab-case)
|
|
├── Shared/ # Código compartido
|
|
│ ├── Domain/Contracts/ # Interfaces
|
|
│ ├── Application/UseCases/ # Casos de uso
|
|
│ └── Infrastructure/ # Implementaciones
|
|
├── Public/[PascalCase]/ # Renderers frontend
|
|
├── Admin/[PascalCase]/ # FormBuilders admin
|
|
└── functions.php # Bootstrap
|
|
```
|
|
|
|
### Testing Strategy
|
|
- Validación de arquitectura: `php Shared/Infrastructure/Scripts/validate-architecture.php [nombre]`
|
|
- Tests unitarios pendientes de implementar
|
|
|
|
### Git Workflow
|
|
- Conventional Commits: `feat:`, `fix:`, `refactor:`, `docs:`
|
|
- Branch principal: `main`
|
|
- Tags para releases: `v1.0.0`, `v2.0.0`
|
|
|
|
## Domain Context
|
|
El sistema maneja componentes UI configurables para un sitio de análisis de precios unitarios (construcción). Cada componente tiene:
|
|
- **Schema JSON**: Define campos configurables
|
|
- **Renderer**: Genera HTML + CSS dinámico desde BD
|
|
- **FormBuilder**: Panel admin para configurar valores
|
|
|
|
### Flujo de 5 Fases para Componentes
|
|
|
|
> **Nota**: `[nombre]` = kebab-case (ej: `contact-form`), `[Nombre]` = PascalCase (ej: `ContactForm`)
|
|
|
|
1. Schema JSON → `Schemas/[nombre].json`
|
|
2. Sincronización → `wp roi-theme sync-component [nombre]`
|
|
3. Renderer → `Public/[Nombre]/Infrastructure/Ui/[Nombre]Renderer.php`
|
|
4. FormBuilder → `Admin/[Nombre]/Infrastructure/Ui/[Nombre]FormBuilder.php`
|
|
5. Validación → `validate-architecture.php [nombre]`
|
|
|
|
## Important Constraints
|
|
- CERO CSS hardcodeado en PHP (usar CSSGeneratorService)
|
|
- NO usar global $wpdb en Domain/Application
|
|
- NO instanciar servicios directamente (usar DI)
|
|
- NO modificar campos en BD manualmente
|
|
- Variables CSS del tema: `--color-navy-dark`, `--color-orange-primary`
|
|
|
|
## External Dependencies
|
|
- WordPress 6.x core
|
|
- Bootstrap 5 (CSS/JS)
|
|
- Bootstrap Icons
|
|
- WP-CLI (`C:\xampp\php_8.0.30_backup\wp-cli.phar`)
|
|
|
|
## Referencias Documentación
|
|
|
|
### OpenSpec - Especificaciones del Proyecto
|
|
| Archivo | Descripción | Ubicación |
|
|
|---------|-------------|-----------|
|
|
| **WORKFLOW-ROI-THEME.md** | Flujo de trabajo obligatorio, regla de oro | `_openspec/WORKFLOW-ROI-THEME.md` |
|
|
| **AGENTS.md** | Agentes disponibles y cuándo usarlos | `_openspec/AGENTS.md` |
|
|
| **arquitectura-limpia** | Clean Architecture, capas, estructura | `_openspec/specs/arquitectura-limpia.md` |
|
|
| **estandares-codigo** | SOLID, PHP, WordPress, seguridad | `_openspec/specs/estandares-codigo.md` |
|
|
| **nomenclatura** | Convenciones de nombres completas | `_openspec/specs/nomenclatura.md` |
|
|
|
|
### Documentación de Planificación
|
|
- Template HTML: `_planificacion/roi-theme-template/index.html`
|
|
- Design System: `_planificacion/01-design-system/`
|
|
|
|
---
|
|
|
|
**Última actualización:** 2026-01-08
|