352 lines
9.6 KiB
Markdown
Executable File
352 lines
9.6 KiB
Markdown
Executable File
# PLAN DE DESARROLLO: Lash Vanshy
|
|
|
|
## 1. Estructura del Proyecto
|
|
|
|
```
|
|
lash/
|
|
├── app/
|
|
│ ├── Http/
|
|
│ │ ├── Controllers/
|
|
│ │ │ ├── Frontend/
|
|
│ │ │ │ ├── HomeController.php
|
|
│ │ │ │ ├── GaleriaController.php # Modelos
|
|
│ │ │ │ ├── ProductoController.php
|
|
│ │ │ │ └── ContactoController.php
|
|
│ │ │ └── Admin/
|
|
│ │ │ ├── DashboardController.php
|
|
│ │ │ ├── GaleriaController.php
|
|
│ │ │ ├── ProductoController.php
|
|
│ │ │ ├── ContactoController.php
|
|
│ │ │ └── AdminUserController.php
|
|
│ │ ├── Middleware/
|
|
│ │ │ └── AdminAuth.php
|
|
│ │ └── Requests/
|
|
│ │ ├── GaleriaRequest.php
|
|
│ │ ├── ProductoRequest.php
|
|
│ │ └── AdminUserRequest.php
|
|
│ ├── Models/
|
|
│ │ ├── Galeria.php
|
|
│ │ ├── Producto.php
|
|
│ │ ├── Mensaje.php
|
|
│ │ ├── Configuracion.php
|
|
│ │ └── AdminUser.php
|
|
│ └── Providers/
|
|
├── database/
|
|
│ └── migrations/
|
|
├── public/
|
|
│ ├── assets/
|
|
│ │ ├── css/
|
|
│ │ ├── js/
|
|
│ │ └── images/
|
|
│ └── uploads/
|
|
│ ├── galeria/
|
|
│ └── productos/
|
|
├── resources/
|
|
│ ├── views/
|
|
│ │ ├── frontend/
|
|
│ │ │ ├── layouts/
|
|
│ │ │ ├── home/
|
|
│ │ │ ├── galeria/
|
|
│ │ │ ├── productos/
|
|
│ │ │ └── contacto/
|
|
│ │ └── admin/
|
|
│ │ ├── layouts/
|
|
│ │ ├── dashboard/
|
|
│ │ ├── galeria/
|
|
│ │ ├── productos/
|
|
│ │ ├── mensajes/
|
|
│ │ └── usuarios/
|
|
│ └── assets/
|
|
│ └── sass/
|
|
├── routes/
|
|
│ ├── web.php
|
|
│ └── admin.php
|
|
└── config/
|
|
```
|
|
|
|
---
|
|
|
|
## 2. Modelos de Base de Datos
|
|
|
|
### Tabla: admin_users
|
|
```sql
|
|
- id (bigint, PK)
|
|
- name (varchar 255)
|
|
- email (varchar 255, unique)
|
|
- password (varchar 255)
|
|
- rol (enum: 'super_admin', 'admin')
|
|
- avatar (varchar 255, nullable)
|
|
- created_at (timestamp)
|
|
- updated_at (timestamp)
|
|
```
|
|
|
|
### Tabla: galerias (Modelos - fotos/videos)
|
|
```sql
|
|
- id (bigint, PK)
|
|
- titulo (varchar 255)
|
|
- descripcion (text, nullable)
|
|
- tipo (enum: 'imagen', 'video')
|
|
- archivo (varchar 255)
|
|
- thumbnail (varchar 255, nullable) - para videos
|
|
- orden (int, default 0)
|
|
- activo (boolean, default true)
|
|
- created_at (timestamp)
|
|
- updated_at (timestamp)
|
|
```
|
|
|
|
### Tabla: productos
|
|
```sql
|
|
- id (bigint, PK)
|
|
- nombre (varchar 255)
|
|
- descripcion (text)
|
|
- precio (decimal 10,2)
|
|
- imagen (varchar 255, nullable)
|
|
- categoria (varchar 100)
|
|
- destacado (boolean, default false)
|
|
- activo (boolean, default true)
|
|
- orden (int, default 0)
|
|
- created_at (timestamp)
|
|
- updated_at (timestamp)
|
|
```
|
|
|
|
### Tabla: mensajes (contacto)
|
|
```sql
|
|
- id (bigint, PK)
|
|
- nombre (varchar 255)
|
|
- email (varchar 255)
|
|
- telefono (varchar 50, nullable)
|
|
- mensaje (text)
|
|
- leido (boolean, default false)
|
|
- created_at (timestamp)
|
|
- updated_at (timestamp)
|
|
```
|
|
|
|
### Tabla: configuraciones
|
|
```sql
|
|
- id (bigint, PK)
|
|
- clave (varchar 100, unique)
|
|
- valor (text)
|
|
- descripcion (varchar 255)
|
|
- created_at (timestamp)
|
|
- updated_at (timestamp)
|
|
```
|
|
|
|
---
|
|
|
|
## 3. Rutas y Endpoints
|
|
|
|
### Rutas Frontend (Públicas)
|
|
| Método | URL | Controlador | Acción |
|
|
|--------|-----|-------------|--------|
|
|
| GET | / | HomeController | index |
|
|
| GET | /modelos | GaleriaController | index |
|
|
| GET | /productos | ProductoController | index |
|
|
| GET | /contacto | ContactoController | index |
|
|
| POST | /contacto | ContactoController | send |
|
|
|
|
### Rutas Admin
|
|
| Método | URL | Controlador | Acción |
|
|
|--------|-----|-------------|--------|
|
|
| GET | /admin/login | AuthController | showLogin |
|
|
| POST | /admin/login | AuthController | login |
|
|
| POST | /admin/logout | AuthController | logout |
|
|
| GET | /admin | DashboardController | index |
|
|
| GET | /admin/modelos | GaleriaController | index |
|
|
| GET | /admin/modelos/create | GaleriaController | create |
|
|
| POST | /admin/modelos | GaleriaController | store |
|
|
| GET | /admin/modelos/{id}/edit | GaleriaController | edit |
|
|
| PUT | /admin/modelos/{id} | GaleriaController | update |
|
|
| DELETE | /admin/modelos/{id} | GaleriaController | destroy |
|
|
| GET | /admin/productos | ProductoController | index |
|
|
| GET | /admin/productos/create | ProductoController | create |
|
|
| POST | /admin/productos | ProductoController | store |
|
|
| GET | /admin/productos/{id}/edit | ProductoController | edit |
|
|
| PUT | /admin/productos/{id} | ProductoController | update |
|
|
| DELETE | /admin/productos/{id} | ProductoController | destroy |
|
|
| GET | /admin/mensajes | MensajeController | index |
|
|
| GET | /admin/mensajes/{id} | MensajeController | show |
|
|
| PUT | /admin/mensajes/{id}/leido | MensajeController | markRead |
|
|
| DELETE | /admin/mensajes/{id} | MensajeController | destroy |
|
|
| GET | /admin/usuarios | AdminUserController | index |
|
|
| GET | /admin/usuarios/create | AdminUserController | create |
|
|
| POST | /admin/usuarios | AdminUserController | store |
|
|
| GET | /admin/usuarios/{id}/edit | AdminUserController | edit |
|
|
| PUT | /admin/usuarios/{id} | AdminUserController | update |
|
|
| DELETE | /admin/usuarios/{id} | AdminUserController | destroy |
|
|
|
|
---
|
|
|
|
## 4. Componentes Frontend
|
|
|
|
### Estructura Visual (Rosa Pastel + Blanco)
|
|
|
|
**Paleta de colores:**
|
|
- Primario: Rosa pastel (#F8B4C4 o similar)
|
|
- Fondo: Blanco (#FFFFFF)
|
|
- Acento: Rosa más oscuro (#E89AAD)
|
|
- Texto: Gris oscuro (#4A4A4A)
|
|
- Secundario: Crema (#FFF5F7)
|
|
|
|
### Páginas Frontend
|
|
|
|
1. **Home** (`/`)
|
|
- Hero con imagen de pestañas
|
|
- Breve descripción del negocio
|
|
- Servicios destacados
|
|
- Call to action (reservar cita)
|
|
- Testimonios (gestionado desde admin)
|
|
- Footer con contacto básico
|
|
|
|
2. **Modelos (Galería)** (`/modelos`)
|
|
- Grid de imágenes/videos de trabajos
|
|
- Filtro por tipo (imagen/video)
|
|
- Lightbox para ampliar imágenes
|
|
- Videos con thumbnail reproducibles
|
|
|
|
3. **Productos** (`/productos`)
|
|
- Lista de servicios/tratamientos
|
|
- Precio visible
|
|
- Descripción del servicio
|
|
- Imagen representativa
|
|
- NO tiene carrito, solo mostrar
|
|
|
|
4. **Contacto** (`/contacto`)
|
|
- Formulario: nombre, email, teléfono, mensaje
|
|
- Datos de contacto (teléfono, ubicación)
|
|
- Mapa (opcional)
|
|
- Horario de atención
|
|
|
|
---
|
|
|
|
## 5. Módulos de Administración
|
|
|
|
### Dashboard
|
|
- Estadísticas básicas (mensajes nuevos, modelos, productos)
|
|
- Acceso rápido a secciones
|
|
|
|
### Gestión Modelos (CRUD)
|
|
- Listado con paginación
|
|
- Crear: título, descripción, tipo, archivo, orden
|
|
- Editar: todos los campos
|
|
- Eliminar (soft delete)
|
|
- Reordenar mediante drag & drop o campo orden
|
|
|
|
### Gestión Productos (CRUD)
|
|
- Listado con paginación
|
|
- Crear: nombre, descripción, precio, imagen, categoría, destacado
|
|
- Editar: todos los campos
|
|
- Eliminar
|
|
- Filtrar por categoría
|
|
- Marcar como destacado
|
|
|
|
### Gestión Mensajes
|
|
- Listado de mensajes recibidos
|
|
- Ver mensaje completo
|
|
- Marcar como leído/no leído
|
|
- Eliminar mensaje
|
|
- Contador de mensajes sin leer
|
|
|
|
### Gestión Administradores
|
|
- Listado de usuarios admin
|
|
- Crear nuevo admin (solo super_admin)
|
|
- Editar admin
|
|
- Eliminar admin
|
|
- Cambiar rol (admin/super_admin)
|
|
|
|
### Configuración
|
|
- Datos del negocio (nombre, teléfono, email, dirección)
|
|
- Redes sociales
|
|
- Textos personalizados del Home
|
|
|
|
---
|
|
|
|
## 6. Dependencias Necessárias
|
|
|
|
### Composer (Laravel)
|
|
```json
|
|
{
|
|
"require": {
|
|
"php": "^8.1",
|
|
"laravel/framework": "^10.0",
|
|
"intervention/image": "^2.7", // Manejo de imágenes
|
|
"laravel/sanctum": "^3.3" // Autenticación API
|
|
}
|
|
}
|
|
```
|
|
|
|
### NPM (Frontend)
|
|
```json
|
|
{
|
|
"devDependencies": {
|
|
"sass": "^1.69",
|
|
"bootstrap": "^5.3",
|
|
"axios": "^1.6"
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 7. Pasos de Implementación
|
|
|
|
### Fase 1: Configuración Inicial
|
|
1. Crear proyecto Laravel nuevo
|
|
2. Configurar conexión BD en `.env`
|
|
3. Configurar Apache (VirtualHost)
|
|
4. Instalar dependencias composer
|
|
5. Configurar黏膜 Storage para uploads
|
|
|
|
### Fase 2: Base de Datos
|
|
1. Crear migrations para todas las tablas
|
|
2. Ejecutar migraciones
|
|
3. Crear seeders con datos iniciales
|
|
|
|
### Fase 3: Modelos y Controladores Backend
|
|
1. Crear modelos Eloquent
|
|
2. Crear controladores de admin
|
|
3. Crear requests para validación
|
|
4. Implementar lógica CRUD
|
|
|
|
### Fase 4: Autenticación Admin
|
|
1. Implementar login/logout
|
|
2. Crear middleware de autenticación
|
|
3. Proteger rutas de admin
|
|
4. Manejo de sesiones seguras
|
|
|
|
### Fase 5: Vistas Frontend
|
|
1. Crear layouts (header, footer)
|
|
2. Implementar Home con diseño pastel
|
|
3. Implementar Galería Modelos
|
|
4. Implementar Productos
|
|
5. Implementar Contacto
|
|
|
|
### Fase 6: Vistas Admin
|
|
1. Crear layout admin
|
|
2. Dashboard con estadísticas
|
|
3. CRUD Modelos con upload de archivos
|
|
4. CRUD Productos con upload de imágenes
|
|
5. Gestión de Mensajes
|
|
6. Gestión de Usuarios Admin
|
|
|
|
### Fase 7: Funcionalidades Extras
|
|
1. Configuraciones editables
|
|
2. Reordenar elementos (drag & drop)
|
|
3. Exportar/marcar mensajes como leídos
|
|
|
|
### Fase 8: Seguridad y Optimización
|
|
1. Validación CSRF en formularios
|
|
2. Sanitización de inputs
|
|
3. Headers de seguridad
|
|
4. Optimización de imágenes
|
|
5. Cache de rutas
|
|
|
|
---
|
|
|
|
## 8. Consideraciones de Diseño
|
|
|
|
- **Estilo**: Elegante, minimalista, profesional
|
|
- **Colores**: Rosa pastel (#F8B4C4), Blanco, acentos en gris suave
|
|
- **Tipografía**: Sans-serif limpia (ej: Poppins, Open Sans)
|
|
- **Imágenes**: Alta calidad, optimizadas
|
|
- **Responsive**: Mobile-first, funcional en todos dispositivos
|
|
- **UX**: Navegación intuitiva, tiempos de carga rápidos |