Skip to main content

Documentation 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.

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 at /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 the curator 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

ContextFieldNotes
Logo (light mode)logo_idDisplayed in the frontend header
Logo (dark mode)logo_dark_idShown when the active theme is dark
Icon / Isotipoicon_idSquare icon, minimum 512×512 px
Faviconfavicon_idICO or PNG, 32×32 or 64×64 px
Logo Salelogo_sale_idShown in plant grid/detail when Evento Sale is active
Banner — home hero (desktop)extra_settings.home_hero_image_desktop_idUsed when hero type = image
Banner — home hero (mobile)extra_settings.home_hero_image_mobile_idUsed when hero type = image
Banner — home video posterextra_settings.home_hero_video_poster_idShown while video loads
Banner — contact hero (desktop)extra_settings.contact_hero_image_desktop_idContact page header
Banner — contact hero (mobile)extra_settings.contact_hero_image_mobile_idContact page header (mobile)
OG Imageextra_settings.og_image_idSocial sharing fallback image
Plant cover imagecover_image_id on PlantPrimary unit thumbnail
Plant interior imageinterior_image_id on PlantInterior detail image
Project imageproject_image_id on ProyectoManual override for project card image

Environment Variable

# Required for Glide image transformations
CURATOR_GLIDE_TOKEN=your-32-char-secret
This token signs all Glide transformation URLs. Without it, thumbnail generation fails silently.

SiteSettings

The SiteSettings 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.
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 tagged unidad_sale = true display “Precio Sale” labels and use porcentaje_maximo_unidad for 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.
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.
All four fields use CuratorPicker, so assets are selected from the centralized media library.
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, or sharp-duotone.
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.
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:site handle.
  • Meta robots por defectoindex,follow / noindex,follow / noindex,nofollow / noindex.
  • og:image — selected from Curator (extra_settings.og_image_id).
  • UTM defaultsutm_source_default, utm_medium_default, utm_campaign_default, utm_term_default, utm_content_default, utm_site_default for attribution baseline when no UTM parameters are present.
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, or round.
  • 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.
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).
Social network profile links.
  • Facebook, Instagram, Twitter/X, LinkedIn, YouTube URL fields. All are optional. Values are exposed via the public GET /api/v1/site-config endpoint under the social key.
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.
For GTM, place the GTM <script> block in Scripts Header and the <noscript> fallback in Scripts Footer. The tag_manager_id field in the SEO tab activates the first-party GTM integration in the React app; these script injection fields are for additional or override snippets.
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 a PlantReservation stays active before expiring (default 15 minutes).
  • Fuente de precio (extra_settings.price_source) — final or base. Determines which price field the API uses.
  • Fuente de porcentaje de descuento (extra_settings.price_percentage_source) — max_unit (plant-level) or web_discount (project-level).
  • Fuente de descuento para API (extra_settings.salesforce_discount_source) — project or plant. 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.
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 APIproject or plant (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_token and forrest_refresh_token encrypted in SiteSetting.extra_settings.salesforce_oauth. The salesforce:refresh-token command runs every 20 minutes (cron('0 */20 * * *')) to keep tokens fresh and sync the DB backup.
# Manual token refresh / reconnect
php artisan salesforce:refresh-token

# Verify authentication is working
php artisan salesforce:test-auth
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 HTML Textarea.
  • Mensaje de Mantenimiento — when using RichEditor, the toolbar includes the Attach Curator Media plugin so images can be embedded directly from the file library.
You can also toggle maintenance mode via Tinker without logging into the panel:
php artisan tinker
// Enable maintenance mode
\App\Models\SiteSetting::set('maintenance_mode', true);

// Set a custom message
\App\Models\SiteSetting::set(
    'maintenance_message',
    '<h1>Estamos en mantenimiento</h1><p>Volvemos pronto.</p>'
);

// Disable maintenance mode
\App\Models\SiteSetting::set('maintenance_mode', false);
Enabling maintenance mode immediately affects all public-facing pages. If you have active users in a checkout flow, they will see the maintenance dialog. Use FrontendPreviewLink tokens to grant whitelisted access during maintenance periods.

Build docs developers (and LLMs) love