iLeben uses Filament Curator as the single, centralized file manager for every image and media asset on the platform. All uploads live in one place atDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/scooller/Leben-site/llms.txt
Use this file to discover all available pages before exploring further.
/admin/media, keyed by records in the curator table, and are referenced by foreign keys throughout the application — logo fields, favicon, banners, and plant images all point to the same Media model. Alongside Curator, the SiteSettings page (/admin/site-settings) provides 13 configuration tabs that govern everything from branding and typography to payment gateway toggles, maintenance mode, and Salesforce sync behavior.
Filament Curator
Overview
Curator provides a single-file manager that replaces ad-hoc file uploads scattered across the application. Every image and document uploaded through Curator receives a record in thecurator database table containing the path, MIME type, dimensions, and other metadata. The CuratorMedia model extends the base Awcodes\Curator\Models\Media class and adds computed attributes for thumbnailUrl, mediumUrl, largeUrl, and a base64 LQIP placeholder cached with Cache::rememberForever.
Accessing the File Manager
Navigate to Media in the Filament sidebar, or open/admin/media directly. The media library displays all uploaded files in a grid. Clicking a file opens it in the CropperJS editor, where you can resize and crop without leaving the panel.
Where Curator Is Used
| Context | Field | Notes |
|---|---|---|
| Logo (light mode) | logo_id | Displayed in the frontend header |
| Logo (dark mode) | logo_dark_id | Shown when the active theme is dark |
| Icon / Isotipo | icon_id | Square icon, minimum 512×512 px |
| Favicon | favicon_id | ICO or PNG, 32×32 or 64×64 px |
| Logo Sale | logo_sale_id | Shown in plant grid/detail when Evento Sale is active |
| Banner — home hero (desktop) | extra_settings.home_hero_image_desktop_id | Used when hero type = image |
| Banner — home hero (mobile) | extra_settings.home_hero_image_mobile_id | Used when hero type = image |
| Banner — home video poster | extra_settings.home_hero_video_poster_id | Shown while video loads |
| Banner — contact hero (desktop) | extra_settings.contact_hero_image_desktop_id | Contact page header |
| Banner — contact hero (mobile) | extra_settings.contact_hero_image_mobile_id | Contact page header (mobile) |
| OG Image | extra_settings.og_image_id | Social sharing fallback image |
| Plant cover image | cover_image_id on Plant | Primary unit thumbnail |
| Plant interior image | interior_image_id on Plant | Interior detail image |
| Project image | project_image_id on Proyecto | Manual override for project card image |
Environment Variable
SiteSettings
TheSiteSettings Filament page (App\Filament\Pages\SiteSettings) is a single-record settings editor backed by the site_settings table (always record ID = 1). It is accessible only to admin users. The form is organized into 13 tabs, each covering a distinct area of site configuration.
General
General
Core site identity fields and catalog visibility controls.
- Nombre del Sitio (
site_name) — displayed in the frontend header and browser tab. - Descripción (
site_description) — short description used in SEO and the API. - URL del Sitio General (
site_url) — base URL for link generation. - Evento Sale (
evento_sale) — boolean toggle. When active, plants taggedunidad_sale = truedisplay “Precio Sale” labels and useporcentaje_maximo_unidadfor price calculation instead of the project-level web discount. - Mostrar plantas (
mostrar_plantas) — when disabled, the public catalog shows a “Próximamente” message instead of units. - Plantas por página (
plants_per_page) — default API page size (1–100, default 12). - Catálogo no disponible — configurable title and RichEditor message shown when
mostrar_plantas = false. - Logo Sale (
logo_sale_id) — CuratorPicker, visible only when Evento Sale is enabled. - Menú del Footer (
footer_menu) — repeater with label, URL, and new-tab toggle for each entry. - Texto Legal del Footer (
footer_legal_text) — RichEditor for legal disclaimers.
Banner
Banner
Branding
Branding
Upload and manage brand assets.
- Logo Principal (
logo_id) — recommended PNG with transparent background. - Logo Modo Oscuro (
logo_dark_id) — alternative logo for dark-themed panels. - Ícono/Isotipo (
icon_id) — square icon, minimum 512×512 px. - Favicon (
favicon_id) — ICO or PNG, 32×32 or 64×64 px.
CuratorPicker, so assets are selected from the centralized media library.Colores
Colores
Theme engine and semantic color mapping.
- Tema Web Awesome (
webawesome_theme) — selects the global design theme. Available themes:default,awesome,shoelace,active,brutalist,glossy,matter,mellow,playful,premium,tailspin. - Paleta de Colores (
webawesome_palette) — fine-grained tonal mapping. Pro palettes:natural,elegant,mild,anodized,vogue,rudimentary. - Color Principal de la Marca (
brand_color) — hex color picker, default#eb0029. - Colores Semánticos — individual selects for
semantic_brand_color,semantic_neutral_color,semantic_success_color,semantic_warning_color,semantic_danger_color. These map to Web Awesome CSS custom property tokens. - Familia de Iconos (
icon_family) — controls Font Awesome / Web Awesome rendering style:classic,sharp,duotone, orsharp-duotone.
Tipografía
Tipografía
Google Fonts integration and font assignment.
- URL del Stylesheet de Google Fonts (
google_fonts_stylesheet) — paste the full Google Fonts URL including all weights. Loaded in the<head>by the frontend. - Fuente del Cuerpo (
font_family_body) — maps to--wa-font-family-body. - Fuente de Encabezados (
font_family_heading) — maps to--wa-font-family-heading.
SEO
SEO
Meta tags, Open Graph, and Google Tag Manager.
- Palabras Clave (
meta_keywords) — comma-separated keywords. - Autor (
meta_author) — meta author string. - Google Tag Manager ID (
tag_manager_id) — container ID (format:GTM-XXXXXXX). Injected into the frontend head and body, enabling GA4, Facebook Pixel, and other tags. - Título SEO por defecto — fallback
<title>for pages without an explicit title. - Open Graph título / descripción por defecto — fallback OG metadata for social sharing.
- Twitter / X @usuario — Twitter Cards
twitter:sitehandle. - Meta robots por defecto —
index,follow/noindex,follow/noindex,nofollow/noindex. - og:image — selected from Curator (
extra_settings.og_image_id). - UTM defaults —
utm_source_default,utm_medium_default,utm_campaign_default,utm_term_default,utm_content_default,utm_site_defaultfor attribution baseline when no UTM parameters are present.
QR
QR
Global QR code appearance settings used for Short Links and Frontend Preview Links.
- Tamaño (
extra_settings.qr.size) — pixel size of the generated QR code (default 300). - Margen (
extra_settings.qr.margin) — quiet zone around the code (options: 0, 1, 3, 7, 9; default 1). - Estilo (
extra_settings.qr.style) — dot rendering style:square,dot, orround. - Corrección (
extra_settings.qr.correction) — error correction level:L(7%),M(15%),Q(25%),H(30%; default). - Color principal (
extra_settings.qr.color) — foreground color (RGBA color picker). - Color de fondo (
extra_settings.qr.back_color) — background color (RGBA color picker). - Usar degradado (
extra_settings.qr.hasGradient) — enables a two-color gradient fill; reveals gradient pickers when active. - Degradado desde / hasta — start and end colors for the gradient.
- Tipo de degradado — direction:
vertical,horizontal,diagonal,inverse_diagonal,radial.
Contacto
Contacto
Contact page content and notification routing.
- Email de Contacto (
contact_email) — public contact address. - Teléfono (
contact_phone) — displayed in the site footer and contact page. - Dirección (
contact_address) — physical office address. - Título / Subtítulo / Contenido de la página de Contacto — RichEditor for the contact page hero text.
- Email de notificación (
contact_notification_email) — internal address that receives a copy of each contact form submission. - Campos del formulario (
contact_form_fields) — repeater to configure which fields appear on the public contact form (key, label, type, placeholder, required).
Redes Sociales
Redes Sociales
Personalización
Personalización
Custom CSS and script injection.
- CSS Personalizado (
custom_css) — injected into the<head>of every frontend page. - Scripts Header (
header_scripts) — raw HTML injected before</head>. Use for Google Tag Manager snippet or third-party analytics. - Scripts Footer (
footer_scripts) — raw HTML injected before</body>. Use for chat widgets, remarketing pixels, or deferred scripts.
Pasarelas de Pago
Pasarelas de Pago
Enable and configure the three supported payment gateways.
- Transbank (
gateway_transbank_enabled) — toggle plus a JSON config block (gateway_transbank_config). - Mercado Pago (
gateway_mercadopago_enabled) — toggle plus JSON config (gateway_mercadopago_config). - Manual (
gateway_manual_enabled) — toggle plus JSON config (gateway_manual_config). Manual payments accept a free-text reference. - Email de prueba de pago (
gateway_proof_contact_email) — internal recipient for manual payment proof notifications. - Timeout de reserva (
gateway_reservation_timeout_minutes) — how long aPlantReservationstays active before expiring (default 15 minutes). - Fuente de precio (
extra_settings.price_source) —finalorbase. Determines which price field the API uses. - Fuente de porcentaje de descuento (
extra_settings.price_percentage_source) —max_unit(plant-level) orweb_discount(project-level). - Fuente de descuento para API (
extra_settings.salesforce_discount_source) —projectorplant. When both sides have a value, this controls priority with the other as fallback.
Payment gateway configuration (
config, price_source, price_percentage_source) is not returned by GET /api/v1/site-config to unauthenticated callers. It is only visible when the request carries a valid Sanctum API token with a non-expired expires_at.Salesforce
Salesforce
Control Salesforce OAuth connection and sync behavior.
- Frecuencia de sincronización automática (
salesforce_sync_interval_minutes) — configures the scheduler interval for automatic plant sync (minimum 5 minutes, default 1440 = daily). - Tipos de planta a sincronizar (
salesforce_sync_plant_types) — multi-select filter; only unit types in this list are imported from Salesforce (DEPARTAMENTO,ESTACIONAMIENTO,BODEGA,LOCAL). - Campos excluidos de sincronización (Proyectos / Plantas) — multi-select of syncable fields. Any field added here is skipped when updating existing records, preserving local overrides.
- Fuente de descuento para API —
projectorplant(see Pasarelas de Pago above for details). - Estado de conexión OAuth — placeholder block showing current token status, last connection timestamp, and auth method.
- Conectar con Salesforce (header action) — opens the Salesforce OAuth WebServer flow in a new tab. After authorization, the callback persists both
forrest_tokenandforrest_refresh_tokenencrypted inSiteSetting.extra_settings.salesforce_oauth. Thesalesforce:refresh-tokencommand runs every 20 minutes (cron('0 */20 * * *')) to keep tokens fresh and sync the DB backup.
Mantenimiento
Mantenimiento
Put the site into maintenance mode with a custom message.
- Activar Modo de Mantenimiento (
maintenance_mode) — when enabled, the React frontend renders a full-screen<wa-dialog>(Web Awesome) with the maintenance message. The dialog cannot be closed by the user. - Editar como HTML (
maintenance_use_html) — switches the message editor from the RichEditor (with Curator media attachments) to a raw HTMLTextarea. - Mensaje de Mantenimiento — when using RichEditor, the toolbar includes the Attach Curator Media plugin so images can be embedded directly from the file library.