Initial commit: Lash Vanshy - Complete project with admin panel, gallery, products, and contact
This commit is contained in:
352
PLAN_TECNICO.md
Executable file
352
PLAN_TECNICO.md
Executable file
@@ -0,0 +1,352 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user