9.6 KiB
Executable File
9.6 KiB
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
- 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)
- 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
- 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)
- 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
- 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
-
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
-
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
-
Productos (
/productos)- Lista de servicios/tratamientos
- Precio visible
- Descripción del servicio
- Imagen representativa
- NO tiene carrito, solo mostrar
-
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)
{
"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)
{
"devDependencies": {
"sass": "^1.69",
"bootstrap": "^5.3",
"axios": "^1.6"
}
}
7. Pasos de Implementación
Fase 1: Configuración Inicial
- Crear proyecto Laravel nuevo
- Configurar conexión BD en
.env - Configurar Apache (VirtualHost)
- Instalar dependencias composer
- Configurar黏膜 Storage para uploads
Fase 2: Base de Datos
- Crear migrations para todas las tablas
- Ejecutar migraciones
- Crear seeders con datos iniciales
Fase 3: Modelos y Controladores Backend
- Crear modelos Eloquent
- Crear controladores de admin
- Crear requests para validación
- Implementar lógica CRUD
Fase 4: Autenticación Admin
- Implementar login/logout
- Crear middleware de autenticación
- Proteger rutas de admin
- Manejo de sesiones seguras
Fase 5: Vistas Frontend
- Crear layouts (header, footer)
- Implementar Home con diseño pastel
- Implementar Galería Modelos
- Implementar Productos
- Implementar Contacto
Fase 6: Vistas Admin
- Crear layout admin
- Dashboard con estadísticas
- CRUD Modelos con upload de archivos
- CRUD Productos con upload de imágenes
- Gestión de Mensajes
- Gestión de Usuarios Admin
Fase 7: Funcionalidades Extras
- Configuraciones editables
- Reordenar elementos (drag & drop)
- Exportar/marcar mensajes como leídos
Fase 8: Seguridad y Optimización
- Validación CSRF en formularios
- Sanitización de inputs
- Headers de seguridad
- Optimización de imágenes
- 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