Skip to main content
Esta guía explica cómo gestionar productos desde el dashboard, incluyendo creación, edición, imágenes y límites por plan.

Acceder al Panel de Productos

1

Ingresa al dashboard

Presiona Alt + S (desktop) o mantén presionado el logo 3 segundos (móvil), luego ingresa tu PIN.
2

Abre la pestaña Productos

En la barra de navegación del dashboard verás las tabs: Info · Productos · Servicios · Diseño · Analytics · ConfigHaz clic en Productos.

Crear un Producto

1

Haz clic en 'Nuevo Producto'

Verás un formulario con los siguientes campos:
  • Nombre (obligatorio) — Máximo 100 caracteres
  • Descripción (opcional) — Máximo 500 caracteres
  • Precio en REF (obligatorio) — Valor de referencia
  • Badge — Etiqueta visual: hot, new o promo
  • Destacado — Checkbox para marcar como featured
  • Activo — Checkbox para visibilidad pública
2

Completa el formulario

Ejemplo para SYNTIstudio (barbería):
Nombre: Corte clásico
Descripción: Corte tradicional con máquina y tijera, incluye lavado
Precio REF: 8
Badge: hot
Destacado: ✓
Activo: ✓
Ejemplo para SYNTIcat (tienda de ropa):
Nombre: Camisa polo azul marino
Descripción: 100% algodón, tallas S-XL disponibles
Precio REF: 25
Badge: new
3

Guarda el producto

El sistema ejecuta:
POST /tenant/{tenantId}/products
Validaciones aplicadas:
  • Verifica límite del plan (20/50/ilimitado)
  • Asigna position automáticamente (último + 1)
  • Guarda en tabla products con tenant_id
Respuesta exitosa:
{
  "success": true,
  "message": "Producto creado",
  "product": { ... }
}

Límites por Plan

SYNTIstudio:
  • Plan Oportunidad: 20 productos
  • Plan Crecimiento: 50 productos
  • Plan Visión: Ilimitado
SYNTIcat:
  • Plan Básico: 20 productos
  • Plan Semestral: 100 productos
  • Plan Anual: Ilimitado
Si alcanzas el límite, verás este mensaje:
"Has alcanzado el límite de {N} productos en tu plan. Actualiza para agregar más."

Editar un Producto

1

Localiza el producto

En la lista de productos, haz clic en el botón “Editar” (ícono de lápiz).
2

Modifica los campos necesarios

Puedes cambiar cualquier campo excepto el ID interno.Endpoint usado:
PUT /tenant/{tenantId}/products/{productId}
3

Guarda los cambios

Los cambios se reflejan inmediatamente en tu página pública.

Subir Imagen Principal

1

Haz clic en 'Subir imagen'

Desde el card del producto, busca el botón de upload.
2

Selecciona la imagen

Formatos permitidos: JPG, PNG, WebPTamaño máximo: 2 MBDimensiones recomendadas: 800×600 px (ratio 4:3)
3

El sistema procesa la imagen

Endpoint:
POST /tenant/{tenantId}/upload/product/{productId}
El sistema:
  • Valida formato y peso
  • Genera nombre único: prod-{productId}-{timestamp}.{ext}
  • Guarda en storage/app/public/tenants/{tenantId}/
  • Actualiza campo image_filename en base de datos
La imagen queda disponible en:
/storage/tenants/{tenantId}/prod-{productId}-{timestamp}.jpg

Galería de Imágenes (Plan Visión)

Solo disponible en Plan Visión de SYNTIstudio. Permite hasta 3 fotos por producto con slider.
1

Accede a la galería del producto

En el card del producto verás una sección “Galería (0/3)”.
2

Sube imágenes adicionales

Haz clic en “Agregar a galería” y selecciona hasta 3 imágenes.Endpoint:
POST /tenant/{tenantId}/upload/product/{productId}/gallery
Cada imagen se guarda en tabla product_images con:
  • product_id
  • image_filename
  • position (orden en el slider)
3

Eliminar imagen de galería

Haz clic en la X sobre la miniatura.Endpoint:
DELETE /tenant/{tenantId}/upload/product/{productId}/gallery/{imageId}
Esto elimina el archivo físico y el registro en BD.

Reordenar Productos

1

Activa modo reordenamiento

En la lista de productos, haz clic en “Reordenar” (ícono de flechas).
2

Arrastra y suelta

Los productos se muestran con handles para drag & drop.El orden define cómo aparecen en tu página pública.
3

Guarda el nuevo orden

Al soltar, se ejecuta:
POST /tenant/{tenantId}/products/reorder
Body: {
  "positions": [
    { "id": 12, "position": 0 },
    { "id": 8, "position": 1 },
    { "id": 15, "position": 2 }
  ]
}
El campo position se actualiza en base de datos.

Eliminar un Producto

1

Haz clic en 'Eliminar'

Desde el card del producto, busca el botón rojo con ícono de basura.
2

Confirma la eliminación

Aparece un modal de confirmación:
Esta acción es permanente y elimina:
  • Registro del producto en base de datos
  • Imagen principal (si existe)
  • Imágenes de galería (si existen)
  • Todos los archivos asociados del storage
3

El sistema ejecuta

DELETE /tenant/{tenantId}/products/{productId}
Lógica de eliminación (DashboardController.php:548):
  1. Elimina imagen principal:
if ($product->image_filename) {
    $imagePath = storage_path('app/public/tenants/' . $tenantId . '/' . $product->image_filename);
    if (file_exists($imagePath)) {
        unlink($imagePath);
    }
}
  1. Elimina galería (Plan Visión):
$galleryImages = ProductImage::where('product_id', $productId)->get();
foreach ($galleryImages as $galleryImage) {
    // Elimina archivo físico
    unlink(storage_path(...));
}
  1. Elimina producto:
$product->delete();

Badges y Estados

Badges Disponibles

Los badges son etiquetas visuales que aparecen sobre la imagen del producto:
  • hot → Fuego (producto popular/más vendido)
  • new → Estrella (producto nuevo)
  • promo → Etiqueta (en promoción)

Toggle de Estados

Producto Activo/Inactivo: Haz clic en el switch “Activo” para ocultar/mostrar el producto en la página pública sin eliminarlo. Producto Destacado: Marca el checkbox “Destacado” para que aparezca en la sección de productos destacados (si tu tema lo soporta).

API Endpoints de Referencia

AcciónMétodoEndpoint
Listar productosGET/tenant/{tenantId}/dashboard
Crear productoPOST/tenant/{tenantId}/products
Editar productoPUT/tenant/{tenantId}/products/{productId}
Eliminar productoDELETE/tenant/{tenantId}/products/{productId}
Subir imagenPOST/tenant/{tenantId}/upload/product/{productId}
Subir galeríaPOST/tenant/{tenantId}/upload/product/{productId}/gallery
Eliminar galeríaDELETE/tenant/{tenantId}/upload/product/{productId}/gallery/{imageId}
Todos los endpoints requieren autenticación. El dashboard usa cookies de sesión Laravel.

Build docs developers (and LLMs) love