# 📋 Rutas Estándar para Adaptación de Demos

## 🎯 Propósito

Este documento define las **rutas estándar** que deben usarse al adaptar demos de Porto HTML a Blade templates en CD-System. Esto asegura consistencia, evita errores y facilita el proceso de adaptación.

---

## 📌 Rutas Frontend Básicas (Páginas Principales)

### Páginas del Demo
```blade
{{-- Homepage --}}
route('front.homepage')
route('front.welcome')  {{-- Alias de homepage --}}

{{-- About --}}
route('front.about')

{{-- Contact --}}
route('front.contact')
route('front.contact.store')  {{-- POST para formulario de contacto --}}
```

**Ejemplo:**
```blade
<a href="{{ route('front.homepage') }}">Home</a>
<a href="{{ route('front.about') }}">About Us</a>
<a href="{{ route('front.contact') }}">Contact</a>

<form action="{{ route('front.contact.store') }}" method="POST">
    @csrf
    {{-- campos del formulario --}}
</form>
```

---

## 🔧 Rutas de Módulos

### 1. Servicios (Services Module)

```blade
{{-- Lista de servicios --}}
route('frontend.services.index')

{{-- Detalle de servicio (IMPORTANTE: usar 'detail', NO 'show') --}}
route('frontend.services.detail', $service->slug)
```

**Ejemplo:**
```blade
@if(is_module_active('services'))
    @foreach($services as $service)
        <a href="{{ route('frontend.services.detail', $service->slug) }}">
            {{ $service->title }}
        </a>
    @endforeach
    
    <a href="{{ route('frontend.services.index') }}">Ver Todos los Servicios</a>
@endif
```

**⚠️ ERROR COMÚN:**
```blade
❌ route('frontend.services.show', $service->slug)  {{-- NO EXISTE --}}
✅ route('frontend.services.detail', $service->slug) {{-- CORRECTO --}}
```

---

### 2. Proyectos (Projects Module)

```blade
{{-- Lista de proyectos --}}
route('frontend.projects.index')
route('frontend.projects.portfolio')  {{-- Vista de portfolio --}}

{{-- Proyecto por categoría --}}
route('frontend.projects.category', $category->slug)

{{-- Proyecto por tag --}}
route('frontend.projects.tag', $tag->slug)

{{-- Detalle de proyecto --}}
route('frontend.projects.show', $project->slug)
```

**Ejemplo:**
```blade
@if(is_module_active('projects'))
    @foreach($featuredProjects as $project)
        <a href="{{ route('frontend.projects.show', $project->slug) }}">
            {{ $project->title }}
        </a>
    @endforeach
    
    <a href="{{ route('frontend.projects.index') }}">Ver Todos los Proyectos</a>
@endif
```

---

### 3. Blog (Blog Module)

```blade
{{-- Lista de posts --}}
route('blog.index')

{{-- Post por categoría --}}
route('blog.category', $category->slug)

{{-- Detalle de post (IMPORTANTE: usar 'post', NO 'show') --}}
route('blog.post', $post->slug)
```

**Ejemplo:**
```blade
@if(is_module_active('blog'))
    @foreach($recentPosts as $post)
        <a href="{{ route('blog.post', $post->slug) }}">
            {{ $post->title }}
        </a>
    @endforeach
    
    <a href="{{ route('blog.index') }}">Ver Todos los Posts</a>
@endif
```

**⚠️ ERROR COMÚN:**
```blade
❌ route('frontend.blog.show', $post->slug)  {{-- NO EXISTE --}}
❌ route('frontend.blog.post', $post->slug)   {{-- NO EXISTE --}}
✅ route('blog.post', $post->slug)            {{-- CORRECTO --}}
```

---

### 4. News (News Module - CD-Base)

```blade
{{-- Lista de noticias --}}
route('frontend.news.index')

{{-- Noticia por categoría --}}
route('frontend.news.category', $category->slug)

{{-- Archivo por año/mes --}}
route('frontend.news.archive', $year, $month)

{{-- Búsqueda --}}
route('frontend.news.search')

{{-- Detalle de noticia --}}
route('frontend.news.show', $news->slug)
```

**Ejemplo:**
```blade
@if(is_module_active('news'))
    @foreach($recentNews as $news)
        <a href="{{ route('frontend.news.show', $news->slug) }}">
            {{ $news->title }}
        </a>
    @endforeach
    
    <a href="{{ route('frontend.news.index') }}">Ver Todas las Noticias</a>
@endif
```

---

### 5. Team (Team Members Module)

```blade
{{-- Lista de miembros --}}
route('frontend.team.index')

{{-- Perfil de miembro --}}
route('frontend.team.profile', $member->slug)
```

**Ejemplo:**
```blade
@if(is_module_active('team'))
    @foreach($teamMembers as $member)
        <a href="{{ route('frontend.team.profile', $member->slug) }}">
            {{ $member->name }}
        </a>
    @endforeach
@endif
```

---

### 6. Newsletter (Newsletter Module)

```blade
{{-- Suscripción a newsletter --}}
route('front.newsletter.subscribe')  {{-- POST --}}
```

**Ejemplo:**
```blade
<form action="{{ route('front.newsletter.subscribe') }}" method="POST">
    @csrf
    <input type="email" name="email" required>
    <button type="submit">Suscribirse</button>
</form>
```

---

## 📝 Checklist de Verificación

Al adaptar un demo, verifica que todas las rutas usen el formato correcto:

- [ ] **Páginas básicas:** `front.homepage`, `front.about`, `front.contact`
- [ ] **Servicios:** `frontend.services.detail` (NO `show`)
- [ ] **Proyectos:** `frontend.projects.show`
- [ ] **Blog:** `blog.post` (NO `frontend.blog.show`)
- [ ] **News:** `frontend.news.show`
- [ ] **Team:** `frontend.team.profile`
- [ ] **Formularios:** `front.contact.store`, `front.newsletter.subscribe`

---

## 🔍 Comandos de Verificación

### Ver todas las rutas disponibles:
```bash
php artisan route:list | grep frontend
php artisan route:list | grep front\.
php artisan route:list | grep blog\.
```

### Buscar rutas incorrectas en vistas:
```bash
# Buscar rutas incorrectas de servicios
grep -r "frontend.services.show" resources/views/

# Buscar rutas incorrectas de blog
grep -r "frontend.blog.show\|frontend.blog.post" resources/views/
```

---

## 📚 Referencias

- **Archivo de rutas de servicios:** `routes/modules/services.php`
- **Archivo de rutas de proyectos:** `routes/modules/projects.php`
- **Archivo de rutas de blog:** `routes/modules/blog.php`
- **Archivo de rutas frontend básicas:** `routes/modules/cd-base.php`

---

## ✅ Ejemplos de Uso Correcto

### En un loop de servicios:
```blade
@forelse($services as $service)
    <a href="{{ route('frontend.services.detail', $service->slug) }}">
        {{ $service->title }}
    </a>
@empty
    <a href="{{ route('frontend.services.index') }}">Ver Servicios</a>
@endforelse
```

### En un loop de proyectos:
```blade
@forelse($featuredProjects as $project)
    <a href="{{ route('frontend.projects.show', $project->slug) }}">
        {{ $project->title }}
    </a>
@empty
    <a href="{{ route('frontend.projects.index') }}">Ver Proyectos</a>
@endforelse
```

### En un loop de blog:
```blade
@forelse($recentPosts as $post)
    <a href="{{ route('blog.post', $post->slug) }}">
        {{ $post->title }}
    </a>
@empty
    <a href="{{ route('blog.index') }}">Ver Blog</a>
@endforelse
```

---

## 🚨 Errores Comunes y Soluciones

| ❌ Incorrecto | ✅ Correcto | Módulo |
|--------------|------------|--------|
| `route('frontend.services.show', $slug)` | `route('frontend.services.detail', $slug)` | Services |
| `route('frontend.blog.show', $slug)` | `route('blog.post', $slug)` | Blog |
| `route('frontend.blog.post', $slug)` | `route('blog.post', $slug)` | Blog |
| `route('frontend.news.post', $slug)` | `route('frontend.news.show', $slug)` | News |

---

**Última actualización:** {{ date('Y-m-d') }}
**Versión:** 1.0.0

