PageSourceSearch

https://smfdigitales.com/_next/static/chunks/2z3ohbhmjfs5p.js

js smfdigitales.com collected 2026-10-04 01:55:38 UTC 42,542 bytes, 1 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18581,(e,a,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useMergedRef",{enumerable:!0,get:function(){return i}});let r=e.r(71645);function i(e,a){let t=(0,r.useRef)(null),i=(0,r.useRef)(null);return(0,r.useCallback)(r=>{if(null===r){let e=t.current;e&&(t.current=null,e());let a=i.current;a&&(i.current=null,a())}else e&&(t.current=n(e,r)),a&&(i.current=n(a,r))},[e,a])}function n(e,a){if("function"!=typeof e)return e.current=a,()=>{e.current=null};{let t=e(a);return"function"==typeof t?t:()=>e(null)}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),a.exports=t.default)},95057,(e,a,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={formatUrl:function(){return s},formatWithValidation:function(){return l},urlObjectKeys:function(){return c}};for(var i in r)Object.defineProperty(t,i,{enumerable:!0,get:r[i]});let n=e.r(90809)._(e.r(98183)),o=/https?|ftp|gopher|file/;function s(e){let{auth:a,hostname:t}=e,r=e.protocol||"",i=e.pathname||"",s=e.hash||"",c=e.query||"",l=!1;a=a?encodeURIComponent(a).replace(/%3A/i,":")+"@":"",e.host?l=a+e.host:t&&(l=a+(~t.indexOf(":")?`[${t}]`:t),e.port&&(l+=":"+e.port)),c&&"object"==typeof c&&(c=String(n.urlQueryToSearchParams(c)));let d=e.search||c&&`?${c}`||"";return r&&!r.endsWith(":")&&(r+=":"),e.slashes||(!r||o.test(r))&&!1!==l?(l="//"+(l||""),i&&"/"!==i[0]&&(i="/"+i)):l||(l=""),s&&"#"!==s[0]&&(s="#"+s),d&&"?"!==d[0]&&(d="?"+d),i=i.replace(/[?#]/g,encodeURIComponent),d=d.replace("#","%23"),`${r}${l}${i}${d}${s}`}let c=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function l(e){return s(e)}},73668,(e,a,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isLocalURL",{enumerable:!0,get:function(){return n}});let r=e.r(18967),i=e.r(52817);function n(e){if(!(0,r.isAbsoluteUrl)(e))return!0;try{let a=(0,r.getLocationOrigin)(),t=new URL(e,a);return t.origin===a&&(0,i.hasBasePath)(t.pathname)}catch(e){return!1}}},84508,(e,a,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"errorOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},22016,(e,a,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={default:function(){return x},useLinkStatus:function(){return v}};for(var i in r)Object.defineProperty(t,i,{enumerable:!0,get:r[i]});let n=e.r(90809),o=e.r(43476),s=n._(e.r(71645)),c=e.r(95057),l=e.r(8372),d=e.r(18581),p=e.r(18967),u=e.r(5550);e.r(33525);let m=e.r(88540),g=e.r(91949),f=e.r(73668),h=e.r(9396);function x(a){var t,r;let i,n,x,[v,y]=(0,s.useOptimistic)(g.IDLE_LINK_STATUS),w=(0,s.useRef)(null),{href:_,as:j,children:k,prefetch:z=null,passHref:P,replace:S,shallow:D,scroll:C,onClick:N,onMouseEnter:A,onTouchStart:I,legacyBehavior:F=!1,onNavigate:B,transitionTypes:M,ref:L,unstable_dynamicOnHover:T,...E}=a;i=k,F&&("string"==typeof i||"number"==typeof i)&&(i=(0,o.jsx)("a",{children:i}));let R=s.default.useContext(l.AppRouterContext),q=!1!==z,W=!1!==z?null===(r=z)||"auto"===r?h.FetchStrategy.PPR:h.FetchStrategy.Full:h.FetchStrategy.PPR,O="string"==typeof(t=j||_)?t:(0,c.formatUrl)(t);if(F){if(i?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});n=s.default.Children.only(i)}let G=F?n&&"object"==typeof n&&n.ref:L,V=s.default.useCallback(e=>(null!==R&&(w.current=(0,g.mountLinkInstance)(e,O,R,W,q,y)),()=>{w.current&&((0,g.unmountLinkForCurrentNavigation)(w.current),w.current=null),(0,g.unmountPrefetchableInstance)(e)}
1),[q,O,R,W,y]),H={ref:(0,d.useMergedRef)(V,G),onClick(a){F||"function"!=typeof N||N(a),F&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(a),!R||a.defaultPrevented||function(a,t,r,i,n,o,c){if("u">typeof window){let l,{nodeName:d}=a.currentTarget;if("A"===d.toUpperCase()&&((l=a.currentTarget.getAttribute("target"))&&"_self"!==l||a.metaKey||a.ctrlKey||a.shiftKey||a.altKey||a.nativeEvent&&2===a.nativeEvent.which)||a.currentTarget.hasAttribute("download"))return;if(!(0,f.isLocalURL)(t)){i&&(a.preventDefault(),location.replace(t));return}if(a.preventDefault(),o){let e=!1;if(o({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:p}=e.r(99781);s.default.startTransition(()=>{p(t,i?"replace":"push",!1===n?m.ScrollBehavior.NoScroll:m.ScrollBehavior.Default,r.current,c)})}}(a,O,w,S,C,B,M)},onMouseEnter(e){F||"function"!=typeof A||A(e),F&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),R&&q&&(0,g.onNavigationIntent)(e.currentTarget,!0===T)},onTouchStart:function(e){F||"function"!=typeof I||I(e),F&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),R&&q&&(0,g.onNavigationIntent)(e.currentTarget,!0===T)}};return(0,p.isAbsoluteUrl)(O)?H.href=O:F&&!P&&("a"!==n.type||"href"in n.props)||(H.href=(0,u.addBasePath)(O)),x=F?s.default.cloneElement(n,H):(0,o.jsx)("a",{...E,...H,children:i}),(0,o.jsx)(b.Provider,{value:v,children:x})}e.r(84508);let b=(0,s.createContext)(g.IDLE_LINK_STATUS),v=()=>(0,s.useContext)(b);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),a.exports=t.default)},85950,e=>{"use strict";var a=e.i(43476),t=e.i(71645),r=e.i(57688);let i=[{slug:"pacobel-property-management",title:"Pacobel Property Management",title_en:"Pacobel Property Management",client:"Pacobel Solutions",category:"En Producción",featured:!0,shortDescription:"Plataforma web integral para Property Management 360º: mudanzas, reformas y limpiezas en Mallorca.",shortDescription_en:"Comprehensive web platform for 360º Property Management: moving, renovations, and cleaning in Mallorca.",fullDescription:"Fricción Inicial: El cliente requería consolidar un embudo digital unificado y profesional tras migrar desde una infraestructura web previa.\nArquitectura Desplegada: Infraestructura nativa B2B en Next.js SSG con 12 redirecciones 301 preservando SEO histórico. Google Consent Mode v2 Basic y formulario de cualificación directa.\nImpacto Cuantitativo: Lighthouse 100/100, latencia < 0.8s, consolidación de marca premium en Baleares.",fullDescription_en:"Corporate development for Pacobel, specializing in Property Management in the Balearic Islands. The platform centralizes lead generation for the entire property lifecycle, conveying professionalism and trust.",targetAudience:"Propietarios, compradores y arrendadores de viviendas que buscan gestión integral sin fricciones operativas.",targetAudience_en:"Homeowners, buyers, and landlords seeking hassle-free comprehensive property management.",keyFeatures:["Centralización de servicios 360º (Reformas, Limpieza, Mudanzas)","12 redirecciones 301 preservando la autoridad del dominio previo","Optimización de captación B2C y B2B en el sector inmobiliario","Google Consent Mode v2 Basic integrado con Firebase Hosting"],keyFeatures_en:["360º services centralization (Renovations, Cleaning, Moving)","12 301 redirects preserving previous domain organic authority","B2C and B2B lead generation optimization in real estate","Google Consent Mode v2 Basic integrated with Firebase Hosting"],architectureNote:"Next.js SSG (output: export) desplegado en Firebase Hosting con CDN global y caché inmutable.",impact:"Lanzamiento de marca robusta para captar al cliente inmobiliario premium en Baleares.",impact_en:"Robust brand launch to capture premium real estate clients in the Balearics.",badges:["Proyecto en Vivo","Property Management","Mallorca"],mainImage:"/images/proyectos/pacobel/main.png",techStack:["Next.js","React","Tailwind CSS","SEO Local"],url:"https://pacobel.com/"},{slug:"instalaciones-valma",title:"Portal Valma Climatización",title_en:"Valma HVAC Portal",client:"Instalaciones Valma",category:"En Producción",featured:!0,shortDescription:"Plataforma web de alta conversión para empresa líder de climatización y reformas en Mallorca.",shortDe
1scription_en:"High-conversion web platform for a leading HVAC and renovation firm in Mallorca.",fullDescription:"Fricción Inicial: Necesidad de un embudo automatizado para captar clientes de alto poder adquisitivo (aerotermia y reformas integrales) sin fugas de presupuesto.\nArquitectura Desplegada: Estándar de oro corporativo SSG. Configuración tipada con Zod en empresa.ts, cabeceras estrictas CSP sin unsafe-inline, honeypot anti-spam y formulario con filtrado cualitativo.\nImpacto Cuantitativo: Lighthouse 95+, carga ultrarrápida en móviles 4G de campo, reducción drástica de rebote.",fullDescription_en:"Full digital engineering for Instalaciones Valma. Minimalist corporate design paired with optimized lead generation architecture for high-value clients in Mallorca.",targetAudience:"Propietarios residenciales, promotores y arquitectos en busca de instalaciones de aerotermia y reformas integrales de alta gama.",targetAudience_en:"Homeowners, developers, and architects seeking aerothermal HVAC installations and high-end renovations.",keyFeatures:["Captación automatizada de presupuestos con filtros de cualificación","Validación exhaustiva de datos de empresa mediante esquema Zod","Cabeceras de seguridad CSP blindadas en Firebase Hosting","Honeypot integrado para neutralizar spam en formularios"],keyFeatures_en:["Automated budget inquiry capture with qualification filters","Strict company metadata validation via Zod schemas","Hardened CSP security headers on Firebase Hosting","Integrated honeypot mechanism to neutralize form bot spam"],architectureNote:"Next.js App Router estático con validación estricta Zod y despliegue sin backend expuesto.",impact:"Consolidación de marca de referencia en Baleares y agilidad superior en cierre de presupuestos.",impact_en:"Brand leadership consolidation in the Balearic Islands and faster quotation closing times.",badges:["Proyecto en Vivo","Lead Generation","Baleares"],mainImage:"/images/proyectos/valma/CARTEL VALMA.webp",techStack:["Next.js","React","Tailwind CSS","Zod","SEO Local"],url:"https://instalacionesvalma-d6044.web.app/"},{slug:"bioquimika-web-corporativa",title:"Portal BioQuímika Corporativo",title_en:"BioQuímika Corporate Portal",client:"BioQuímica Sanidad Ambiental",category:"En Producción",featured:!0,shortDescription:"Migración técnica integral de WordPress a arquitectura Next.js de alta velocidad B2B.",shortDescription_en:"Complete technical migration from legacy WordPress to high-speed Next.js architecture.",fullDescription:"Fricción Inicial: Plataforma WordPress lenta con 27 URLs indexadas con riesgo de pérdida de posicionamiento orgánico histórico.\nArquitectura Desplegada: Migración headless con 27 redirecciones 301, marcado estructurado JSON-LD con registro sanitario oficial ROESB 1076-IBA, tracking Google Ads y GTM sin scripts invasivos.\nImpacto Cuantitativo: +400% de velocidad de carga (LCP < 1.0s), 100% de autoridad SEO preservada.",fullDescription_en:"Total re-engineering of BioQuímika digital presence. Migrated an outdated platform to a modern headless Next.js stack free of heavy plugin dependencies.",targetAudience:"Empresas, hostelería, comunidades e industrias que requieren servicios avanzados de sanidad ambiental y química aplicada.",targetAudience_en:"Businesses, hospitality, and industrial facilities requiring environmental health & applied chemistry services.",keyFeatures:["Marcado JSON-LD con acreditación oficial ROESB 1076-IBA","27 redirecciones 301 mapeadas para retención total de SEO histórico","Pipeline de optimización nativa a WebP en todo el catálogo técnico","Tracking de conversiones para Google Ads y Google Analytics 4"],keyFeatures_en:["JSON-LD schema markup with official ROESB 1076-IBA sanitary registry","27 301 redirects mapped for complete historical SEO authority retention","Native WebP image optimization across the entire technical catalog","Conversion tracking for Google Ads and Google Analytics 4"],architectureNote:"Next.js SSG headless sin servidor de base de datos expuesto, eliminando superficie de ataque.",impact:"+400% de velocidad de carga y posicionamiento de liderazgo orgánico en Mallorca.",impact_en:"+400% load speed boost and organic market leadership ranking in Mallorca.",badges:["Proyecto en Vivo","Sanidad Ambiental","Core Web Vitals 100%"],mainImage:"/images/proyectos/bioquimika/bioquimika_main_cover.webp",techStack:["Next.js","React","TypeScript","Tailwind CSS","Schema.org"],url:"https://bioquimika.com/"},{slug:"instalaciones-electricas-bestard",title:"Instalaciones Eléctricas Bestard",title_en:"Bestard Electrical Installations",client:"Instalaciones Eléctricas Bestard",category:"En Producción",featured:!0,shortDescription:"Plataforma web de captación para servicios de electricidad industrial, boletines y fotovoltaica en Mallorca.",shortDe
1scription_en:"Lead generation platform for industrial electrical services, certifications, and solar PV in Mallorca.",fullDescription:"Fricción Inicial: Necesidad de canalizar peticiones urgentes de boletines eléctricos y obras de fotovoltaica de clientes industriales y residenciales.\nArquitectura Desplegada: Arquitectura estática en Next.js con selector interactivo de municipios de cobertura en Mallorca, galería técnica de cuadros eléctricos y botones directos de llamada/WhatsApp.\nImpacto Cuantitativo: Captación directa en tiempo real y posicionamiento geolocalizado en toda la isla.",fullDescription_en:"Digital presence for Instalaciones Eléctricas Bestard. Streamlined quotation engine for domestic, industrial, and solar photovoltaic electrical projects across Mallorca.",targetAudience:"Particulares, comunidades de propietarios y naves industriales que requieren boletines eléctricos, urgencias y legalizaciones.",targetAudience_en:"Homeowners, community associations, and industrial plants requiring official electrical certificates and solar installations.",keyFeatures:["Filtro dinámico de cobertura por municipios de Mallorca","Galería de instalaciones ejecutadas con comparativas de calidad","Embudo directo a WhatsApp y llamada telefónica sin fricción","Optimización de metadatos locales para búsquedas comarcales"],keyFeatures_en:["Dynamic service coverage filter across Mallorca municipalities","Executed project gallery with quality standards breakdown","Zero-friction direct call & WhatsApp conversion funnel","Local metadata optimization for regional Balearic search queries"],architectureNote:"Next.js con componentes cliente livianos y exportación estática optimizada para redes móviles.",impact:"Canal digital activo de captación de contratos de mantenimiento y proyectos fotovoltaicos.",impact_en:"Active digital pipeline generating continuous maintenance contracts and solar projects.",badges:["Proyecto en Vivo","Electricidad Industrial","Mallorca"],mainImage:"/images/proyectos/bestard/main.webp",techStack:["Next.js","React","Tailwind CSS","SEO Local"],url:"https://instalacioneselectricasb-b17ab.web.app/"},{slug:"portal-gaming-caxxulo",title:"Portal Caxxulo Gaming",title_en:"Caxxulo Gaming Portal",client:"Caxxulo (Creator Brand)",category:"En Producción",featured:!0,shortDescription:"Hub digital inmersivo para centralización de audiencia y acuerdos B2B de patrocinio para streamer.",shortDescription_en:"Immersive digital hub for audience centralization and B2B sponsorship deals for streamer.",fullDescription:"Fricción Inicial: Necesidad de una plataforma propietaria para profesionalizar la imagen del creador frente a marcas y patrocinadores comerciales.\nArquitectura Desplegada: Interfaz cyberpunk inmersiva con animaciones aceleradas por hardware (Framer Motion), arquitectura de audio web con Howler.js y panel de media kit corporativo.\nImpacto Cuantitativo: Centralización de tráfico directo de directos y canalización formal de propuestas de sponsors.",fullDescription_en:"Personal brand ecosystem designed to project professional authority for content creator Caxxulo. Features a futuristic dark UI aligned with modern gaming culture.",targetAudience:"Comunidad de seguidores, marcas patrocinadoras y agencias de eSports que buscan acuerdos de colaboración.",targetAudience_en:"Audience community, sponsor brands, and eSports organizations seeking commercial partnerships.",keyFeatures:["Integración de feeds y directos de plataformas de streaming","Media Kit interactivo para marcas y patrocinadores","Diseño sonoro y micro-interacciones con Framer Motion","Sección de merchandising y enlaces de comunidad"],keyFeatures_en:["Live stream feeds and broadcast hub integration","Interactive Media Kit for brand partners & sponsors","Sound design & micro-interactions powered by Framer Motion","Merchandising & community hub section"],architectureNote:"Front-end reactivo construido con Next.js y animaciones optimizadas para GPU.",impact:"Centralización de tráfico orgánico en una plataforma propia monetizable y profesional.",impact_en:"Organic traffic centralization into a proprietary monetizable platform.",badges:["Proyecto en Vivo","Marca Personal","Gaming & eSports"],mainImage:"/images/proyectos/caxxulo/caxxulo_v2026.webp",techStack:["Next.js","React","Tailwind CSS","Framer Motion","Howler.js"],url:"https://caxxulo.com/"},{slug:"bar-son-bruy",title:"Son Bruy The Bar - Ecosistema Arcade & Carta Digital",title_en:"Son Bruy The Bar - Arcade Ecosystem & Digital Menu",client:"Son Bruy The Bar (Palma de Mallorca)",category:"En Producción",featured:!0,shortDescription:"Plataforma de fidelización y dinamización para hostelería con motor arcade retro en Phaser 3 y ranking en tiempo real en Firestore.",shortDe
1scription_en:"Customer loyalty platform for hospitality featuring a retro Phaser 3 arcade engine and real-time Firestore leaderboards.",fullDescription:"Fricción Inicial: El emblemático local de Palma (Carrer de Jaume Ferran, referente de billar y aperitivo desde mediados de los 70 con Álex y Gil tras la barra) requería una herramienta de dinamización digital para potenciar el tardeo y conectar a la clientela con retos comunitarios.\nArquitectura Desplegada: Suite interactiva en canvas 2D con motor Phaser 3 (supervivencia esquivando comandas, pinball de aceitunas, air hockey y shooter contra personajes del bar), base de datos reactiva en Google Cloud Firestore para rankings en vivo, módulo viral de retos vía WhatsApp y carta gastronómica digital interactiva.\nImpacto Cuantitativo: Dinamización directa en sala, competición comunitaria por el récord mensual y plantilla modular escalable a nuevos locales.",fullDescription_en:"Interactive digital loyalty suite for historic Palma venue Son Bruy The Bar (Carrer Jaume Ferran). Combines a custom Phaser 3 multi-game arcade system with real-time Firestore rankings, viral WhatsApp social challenges, and an interactive digital menu.",targetAudience:"Clientela de tardeo en Palma, aficionados al billar y al aperitivo clásico, y comensales en local que compiten en torneos mensuales.",targetAudience_en:"Palma tardeo patrons, pool and aperitif regulars, and in-venue customers competing in real-time monthly leaderboards.",keyFeatures:["Motor arcade multi-juego en canvas 2D con Phaser 3 (Supervivencia, Pinball, Air Hockey y Shooter)","Ranking y torneos mensuales en tiempo real con Firebase Firestore","Carta gastronómica digital integrada con selección de variats y tapas locales","Sistema de desafío viral directo para compartir puntuaciones por WhatsApp"],keyFeatures_en:["Multi-game 2D canvas arcade engine powered by Phaser 3 (Survival, Pinball, Air Hockey, Shooter)","Real-time monthly tournaments and leaderboards using Firebase Firestore","Integrated interactive digital menu featuring traditional Mallorcan tapas and variats","Direct WhatsApp viral challenge mechanic to drive customer re-engagement"],architectureNote:"Desarrollo desacoplado en Phaser 3 con renderizado WebGL/Canvas y base de datos reactiva en Firestore.",impact:"Ecosistema de gamificación en sala con alta recurrencia de clientes y dinamización del tardeo en Palma.",impact_en:"In-venue gamification ecosystem driving customer retention and organic social engagement in Palma.",badges:["Proyecto en Vivo","Palma de Mallorca","Phaser Arcade"],mainImage:"/images/proyectos/son-bruy/main.jpg",techStack:["Phaser 3","Canvas WebGL","Firebase Firestore","Firebase Auth","Tailwind CSS"],url:"https://testeatuweb2.web.app/"},{slug:"reliev3d-rotulos",title:"Reliev3D - Rótulos Corpóreos & 3D",title_en:"Reliev3D - Dimensional Signage & 3D",client:"Reliev3D Baleares",category:"Tecnología 3D",featured:!0,shortDescription:"Plataforma especializada en fabricación aditiva, señalética corpórea y rotulación 3D para empresas.",shortDescription_en:"Specialized platform in additive manufacturing, dimensional corporate signage, and 3D lettering.",fullDescription:"Fricción Inicial: Empresas y comercios necesitaban visualizar posibilidades de rótulos corpóreos y piezas técnicas antes de contratar la fabricación física.\nArquitectura Desplegada: Web corporativa de alto impacto visual orientada al sector industrial y publicitario, con galería de materiales (PLA, PETG, resina), tiempos de entrega y captación directa para presupuestos a medida.\nImpacto Cuantitativo: Posicionamiento como taller tecnológico de referencia en rotulación tridimensional en Baleares.",fullDescription_en:"High-impact digital platform for Reliev3D. Showcases 3D corporate signage, additive manufacturing capabilities, and custom lettering solutions for businesses in the Balearics.",targetAudience:"Negocios, agencias de publicidad, arquitectos y comercios que buscan rótulos corpóreos y piezas tridimensionales.",targetAudience_en:"Retail businesses, advertising agencies, architects, and companies seeking dimensional branding and signage.",keyFeatures:["Catálogo visual de acabados, texturas y materiales de impresión 3D","Calculadora de requerimientos para rótulos y piezas a medida","Despliegue ultrarrápido y optimización de recursos gráficos en WebP","Canal de cualificación de presupuestos de fabricación física"],keyFeatures_en:["Visual catalog of 3D printing finishes, textures, and technical materials","Inquiry specification wizard for custom signs and parts","Ultra-fast delivery and WebP graphic pipeline optimization","Lead qualification channel for physical fabrication orders"],architectureNote:"Arquitectura estática en Next.js con soporte multimedia WebP/AVIF y despliegue en CDN global.",impact:"Atracción continua de pedidos corporativos de rotulación física y piezas técnicas.",impact_en:"Continuous corporate order generation for physical 3D signage and technical components.",badges:["Proyecto en Vivo","Impresión 3D","Rótulos Corpóreos"],mainImage:"/images/proyectos/reliev3d/main.webp",techStack:["Next.js","React","Tailwind CSS","SEO Local"],url:"https://reliev3d.web.app/"},{slug:"trevia-configurador-3d",title:"Trevia 3D - Configurador & Slicer Paramétrico",title_en:"Trevia 3D - Parametric Slicer & Configurator",client:"Adrimaker3D / Trevia",category:"Tecnología 3D",featured:!0,shortDescription:"Motor de cálculo volumétrico en Web Workers, decodificador .3mf y cotización instantánea 3D.",shortDe
1scription_en:"Client-side volumetric engine with Web Workers, .3mf decoding, and instant 3D pricing.",fullDescription:"Fricción Inicial: Los servicios de impresión 3D sufrían demoras de hasta 48 horas en cotizar modelos STL/.3mf manualmente y calcular costes de filamento multicolor.\nArquitectura Desplegada: Plataforma deep-tech en Next.js + Three.js con cálculo del teorema de la divergencia de Gauss en Web Workers para cálculo exacto de volumen en milisegundos, decodificación binaria de archivos .3mf, simulación de purga multicolor para Bambu Lab AMS y pasarela de pago Stripe integrada.\nImpacto Cuantitativo: Automatización total del 100% del proceso de cotización y cobro sin intervención humana.",fullDescription_en:"Deep-tech web platform for on-demand 3D printing. Implements real Gauss divergence theorem for exact mesh volume calculation in Web Workers, binary .3mf decoding, multicolor Bambu AMS purge estimation, and Stripe checkout.",targetAudience:"Ingenieros, diseñadores de producto, makers y empresas que necesitan fabricar prototipos o tiradas cortas bajo demanda.",targetAudience_en:"Engineers, product designers, makers, and companies requiring instant-quote on-demand 3D printing manufacturing.",keyFeatures:["Cálculo matemático de volumen por Teorema de Gauss en Web Worker desacoplado","Decodificación y análisis de geometría binaria (.3mf y STL) en cliente","Algoritmo de estimación de desperdicio de purga para sistemas Bambu Lab AMS","Checkout automatizado mediante integración directa con Stripe"],keyFeatures_en:["Mathematical volume computation via Gauss Divergence in client Web Workers","Client-side binary geometry parsing and rendering (.3mf and STL)","Purge waste estimation algorithm for Bambu Lab AMS multi-material setups","Automated instant payment processing with Stripe integration"],architectureNote:"Next.js + Three.js + Web Workers desacoplados de la UI para mantener 60 FPS durante cálculos intensivos de mallas.",impact:"Reducción del tiempo de cotización de 48 horas a menos de 2 segundos de forma desatendida.",impact_en:"Quotation turnaround dropped from 48 hours to under 2 seconds completely unattended.",badges:["Deep Tech","WebGL / Three.js","Web Workers","E-Commerce"],mainImage:"/images/proyectos/trevia3d/main.webp",techStack:["Next.js","Three.js","WebGL","Web Workers","Stripe API"],url:"https://melendezimpresion3d.web.app/"},{slug:"app-control-obras",title:"Control de Obras & Operativa de Campo",title_en:"Field Operations & Construction ERP App",client:"Software Propietario SMF",category:"Software & I+D",featured:!0,shortDescription:"ERP Local-First PWA para partes diarios, control de costes de obra y firma digital sin cobertura.",shortDescription_en:"Local-First PWA ERP for daily work orders, site cost tracking, and digital signatures with zero coverage.",fullDescription:"Fricción Inicial: Empresas de reformas e instalaciones sufrían pérdida de albaranes en papel, errores en el cómputo de horas de operarios y descontrol en la rentabilidad de las obras.\nArquitectura Desplegada: Aplicación web progresiva (PWA) Local-First construida con React 19, LocalForage (IndexedDB), Zustand 5 para gestión de estado offline y sincronización diferida con Supabase. Permite registro de jornadas, imputación de materiales, firma biométrica táctil en pantalla y exportación de partes oficiales en PDF.\nImpacto Cuantitativo: Eliminación del 100% del papel en obra y ahorro promedio de 15 horas semanales de gestión administrativa.",fullDescription_en:"Proprietary enterprise operational software for construction and HVAC firms. Local-first architecture using React 19, IndexedDB, and Zustand ensuring complete offline functionality in basements or rural sites with deferred sync.",targetAudience:"Empresas de construcción, reformas integrales, instaladores y contratistas con cuadrillas trabajando sobre el terreno.",targetAudience_en:"Construction firms, general contractors, HVAC installers, and field operations teams requiring robust tracking.",keyFeatures:["Arquitectura Local-First 100% funcional sin conexión a internet (sótanos y zonas rurales)","Firma digital en pantalla sobre canvas con trazabilidad de validación","Cálculo en tiempo real de desviaciones presupuestarias (coste estimado vs real)","Generación automatizada de informes diarios y partes de trabajo en PDF"],keyFeatures_en:["100% offline Local-First architecture designed for zero-connectivity environments","On-screen canvas digital signature capture with validation tracking","Real-time budget variance analysis (estimated vs actual job c
1osts)","Automated daily work order and field report PDF generation"],architectureNote:"React 19 + Zustand 5 + LocalForage (IndexedDB) con sincronización reactiva en segundo plano.",impact:"Ahorro de hasta 15 horas semanales por jefe de obra y erradicación de fugas de costes en compras.",impact_en:"Up to 15 hours saved weekly per project manager and complete elimination of untracked job site costs.",badges:["Software B2B","Local-First PWA","Control de Costes"],mainImage:"/images/proyectos/control-obras/control_obras_1.webp",techStack:["React 19","Zustand 5","IndexedDB","Tailwind CSS","PWA"]}];var n=e.i(83773);e.s(["default",0,function(){let{language:e,t:o}=(0,n.useLanguage)(),[s,c]=(0,t.useState)("Todos"),[l,d]=(0,t.useState)(null);(0,t.useEffect)(()=>{let e=e=>{"Escape"===e.key&&d(null)};return l?(document.body.style.overflow="hidden",window.addEventListener("keydown",e)):(document.body.style.overflow="",window.removeEventListener("keydown",e)),()=>{document.body.style.overflow="",window.removeEventListener("keydown",e)}},[l]);let p="Todos"===s||"All"===s?i:i.filter(e=>e.category===s||"In Production"===s&&"En Producción"===e.category||"3D Technology"===s&&"Tecnología 3D"===e.category||"Software & R&D"===s&&"Software & I+D"===e.category);return(0,a.jsxs)("section",{id:"showroom",className:"relative bg-white py-28 md:py-32 border-t-2 border-zinc-900 overflow-hidden",children:[(0,a.jsx)("div",{className:"absolute inset-0 z-0 pointer-events-none bg-tech-grid"}),(0,a.jsxs)("div",{className:"max-w-7xl mx-auto px-6 md:px-12 relative z-10",children:[(0,a.jsxs)("div",{className:"flex flex-col md:flex-row md:items-end justify-between mb-12 gap-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"inline-flex items-center gap-2 px-3.5 py-1 bg-white border-2 border-zinc-900 shadow-[4px_4px_0px_0px_#000] text-zinc-900 text-xs font-mono font-bold mb-3 transform rotate-1",children:[(0,a.jsx)("span",{className:"w-2 h-2 rounded-full border-2 border-zinc-900 bg-zinc-900 animate-pulse"}),o("showroom_tag")]}),(0,a.jsx)("h2",{className:"text-4xl sm:text-6xl font-black font-display text-zinc-900 tracking-tight transform -rotate-1",children:o("showroom_title")}),(0,a.jsx)("p",{className:"text-zinc-600 mt-4 text-sm sm:text-lg font-sans font-medium max-w-2xl leading-relaxed",children:o("showroom_subtitle")}),(0,a.jsxs)("div",{className:"mt-6 p-4 bg-[#fef9c3] border-2 border-zinc-900 shadow-[4px_4px_0px_0px_#000] max-w-2xl transform rotate-[0.5deg]",children:[(0,a.jsx)("div",{className:"flex items-center gap-2 text-[11px] font-mono font-black uppercase tracking-wider text-zinc-900 mb-1",children:(0,a.jsx)("span",{className:"px-1.5 py-0.5 bg-white border border-zinc-900 text-[10px]",children:o("showroom_bridge_badge")})}),(0,a.jsx)("p",{className:"text-xs sm:text-sm text-zinc-900 font-sans font-medium leading-relaxed",children:o("showroom_bridge_desc")})]})]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2 p-2 bg-zinc-100 border-2 border-zinc-900 shadow-[4px_4px_0px_0px_#000]",children:("en"===e?["All","In Production","3D Technology","Software & R&D"]:["Todos","En Producción","Tecnología 3D","Software & I+D"]).map(e=>(0,a.jsx)("button",{onClick:()=>c(e),className:`px-4 py-2 text-xs font-mono font-bold transition-all border-2 border-transparent ${s===e?"bg-blue-600 text-white border-zinc-900 shadow-[2px_2px_0px_0px_#000]":"text-zinc-600 hover:text-blue-600 hover:border-zinc-900 hover:bg-white hover:shadow-[2px_2px_0px_0px_#000]"}`,children:e},e))})]}),(0,a.jsx)("div",{className:"flex overflow-x-auto snap-x snap-mandatory gap-6 sm:gap-8 pb-8 -mx-6 px-6 sm:mx-0 sm:px-0 sm:grid sm:grid-cols-2 lg:grid-cols-3 [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]",children:p.map((t,i)=>(0,a.jsx)("button",{onClick:()=>d(t),"aria-label":"en"===e?`View project ${t.title_en||t.title}`:`Ver proyecto ${t.title}`,className:"text-left w-full min-w-[85vw] sm:min-w-0 snap-center group cursor-pointer bg-white border-2 border-zinc-900 overflow-hidden hover:-translate-y-1.5 hover:-translate-x-1.5 flex flex-col justify-between shadow-[8px_8px_0px_0px_#000] hover:shadow-[14px_14px_0px_0px_#000] transition-all focus:outline-none focus:ring-4 focus:ring-blue-600",children:(0,a.jsxs)("article",{className:"flex flex-col h-full w-full",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"relative h-48 w-full overflow-hidden bg-zinc-100 border-b-2 border-zinc-900",children:[(0,a.jsx)(r.default,{src:t.mainImage,alt:t.title,fill:!0,priority:0===i,sizes:"(max-width: 768px) 100vw, 33vw",className:"object-cover transition-all duration-500 group-hover:scale-105"}),(0,a.jsx)("span",{className:"absolute top-3 left-3 text-[10px] font-mono font-bold uppercase tracking-widest px-2.5 py-1 bg-white border-2 border-zinc-900 shadow-[2px_2px_0px_0px_#000] text-zinc-900",children:"en"===e?"En Producción"===t.category?"In Production":"Tecnología 3D"===t.category?"3D Technology":"Software & R&D":t.category})]}),(0,a.jsxs)("div",{className:"p-5",children:[(0,a.jsx)("h3",{className:"text-xl font-black font-sans text-zinc-900 group-hover:text-blue-600 group-hover:underline decoration-wav
1y transition-colors truncate mb-1",children:"en"===e&&t.title_en||t.title}),(0,a.jsxs)("p",{className:"text-[11px] text-zinc-500 font-mono font-bold mb-3 flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"w-2 h-2 rounded-full border-2 border-zinc-900 bg-white"}),t.client]}),(0,a.jsx)("p",{className:"text-sm text-zinc-600 font-sans leading-relaxed line-clamp-2",children:"en"===e&&t.shortDescription_en||t.shortDescription})]})]}),(0,a.jsxs)("div",{className:"mt-auto px-5 pb-4 pt-3 border-t-2 border-zinc-900 border-dashed bg-[#f8f9fa] flex items-center justify-between group-hover:bg-[#22d3ee] transition-colors",children:[(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:t.badges.slice(0,2).map((e,t)=>(0,a.jsx)("span",{className:"text-[10px] font-mono font-bold text-zinc-900 bg-white px-2 py-0.5 border-2 border-zinc-900 shadow-[1px_1px_0px_0px_#000]",children:e},t))}),(0,a.jsx)("span",{className:"text-xs font-mono font-black text-zinc-900 group-hover:text-zinc-900 group-hover:translate-x-1 transition-all flex items-center gap-1",children:"en"===e?"Inspect →":"Inspeccionar →"})]})]})},t.slug))})]}),l&&(0,a.jsx)("div",{className:"fixed inset-0 z-[99999] bg-white/90 backdrop-blur-md flex items-center justify-center p-4 sm:p-6 overflow-hidden","data-lenis-prevent":"true",children:(0,a.jsxs)("div",{className:"bg-white border-4 border-zinc-900 max-w-4xl w-full relative overflow-hidden shadow-[16px_16px_0px_0px_#000] my-auto max-h-[90vh] flex flex-col transform rotate-0 sm:rotate-[0.5deg]",children:[(0,a.jsxs)("div",{className:"relative h-48 sm:h-64 w-full shrink-0 overflow-hidden bg-zinc-100 border-b-4 border-zinc-900",children:[(0,a.jsx)(r.default,{src:l.mainImage,alt:l.title,fill:!0,className:"object-cover"}),(0,a.jsx)("div",{className:"absolute inset-0 bg-gradient-to-t from-white via-white/40 to-transparent"}),(0,a.jsx)("button",{onClick:()=>d(null),className:"absolute top-4 right-4 text-zinc-900 bg-white border-2 border-zinc-900 p-2 shadow-[4px_4px_0px_0px_#000] hover:translate-y-px hover:translate-x-px hover:shadow-[2px_2px_0px_0px_#000] transition-all z-20",children:(0,a.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",strokeWidth:3,viewBox:"0 0 24 24",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})}),(0,a.jsxs)("div",{className:"absolute bottom-4 left-6 right-6 z-10",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mb-2",children:[(0,a.jsx)("span",{className:"text-[10px] font-mono font-bold uppercase tracking-wider px-3 py-1 bg-white border-2 border-zinc-900 shadow-[2px_2px_0px_0px_#000] text-zinc-900",children:"en"===e?"En Producción"===l.category?"In Production":"Tecnología 3D"===l.category?"3D Technology":"Software & R&D":l.category}),(0,a.jsxs)("span",{className:"text-xs text-zinc-900 font-mono font-bold bg-white px-2.5 py-1 border-2 border-zinc-900 shadow-[2px_2px_0px_0px_#000]",children:["en"===e?"Client:":"Cliente:"," ",l.client]})]}),(0,a.jsx)("h2",{className:"text-3xl sm:text-5xl font-black font-display text-zinc-900 tracking-tight",children:"en"===e&&l.title_en||l.title})]})]}),(0,a.jsx)("div",{className:"p-6 sm:p-8 space-y-8 overflow-y-auto overscroll-contain custom-scrollbar bg-[#f8f9fa]","data-lenis-prevent":"true",children:(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-8",children:[(0,a.jsxs)("div",{className:"md:col-span-2 space-y-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-xs font-mono font-black text-zinc-900 uppercase tracking-widest mb-3 bg-white inline-block px-2 py-0.5 border-2 border-zinc-900 shadow-[2px_2px_0px_0px_#000]",children:"en"===e?"Vision & Overview":"Visión & Descripción General"}),(0,a.jsx)("p",{className:"text-sm sm:text-base text-zinc-700 leading-relaxed font-sans font-medium",children:"en"===e&&l.fullDescription_en||l.fullDescription})]}),(0,a.jsxs)("div",{className:"p-5 bg-white border-2 border-zinc-900 shadow-[4px_4px_0px_0px_#000] space-y-2 transform -rotate-1",children:[(0,a.jsxs)("h5",{className:"text-[10px] font-mono font-black text-zinc-900 uppercase tracking-widest flex items-center gap-1.5",children:[(0,a.jsxs)("svg",{className:"w-3.5 h-3.5 text-blue-600 shrink-0",fill:"none",stroke:"currentColor",strokeWidth:2.5,viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,a.jsx)("circle",{cx:"12",cy:"12",r:"6"}),(0,a.jsx)("circle",{cx:"12",cy:"12",r:"2"})]}),(0,a.jsx)("span",{children:"en"===e?"Target Audience / Client Profile:":"Destinado a / Perfil de Cliente:"})]}),(0,a.jsx)("p",{className:"text-sm text-zinc-700 font-medium leading-relaxed",children:"en"===e&&l.targetAudience_en||l.targetAudience})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-xs font-mono font-black text-zinc-900 uppercase tracking-widest mb-3 bg-white inline-block px-2 py-0.5 border-2 border-zinc-900 shadow-[2px_2px_0px_0px_#000]",children:"en"===e?"Key Features & Highlights:":"Puntos Clave & Funcionalidades:"}),(0,a.jsx)("ul",{className:"space-y-3",children:("en"===e&&l.keyFeatures_en?l.keyFeatures_en:l.keyFeatures).map((e,t)=>(0,a.jsxs)("li",{className:"text-sm text-zinc-700 font-medium flex items-start gap-2.5",children:[(0,a.jsx)("span",{className:"text-zinc-900 font-black mt-0.5",children:"✦"}),(0,a.jsx)("span",{children:e})]},t))})]})]}),(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"p-5 bg-blue-600 text-white border-2 border-zinc-900 shadow-[4px_4px_0px_0px_#000] transform rotate-1",children:[(0,a.jsxs)("span",{className:"font-black text-white mb-2 font-mono uppercase tracking-wider text-[10px] flex items-center gap-1.5",children:[(0,a.jsx)("svg",{className:"w-3.5 h-3.5 text-cyan-300 shrink-0",fill:"none",stroke:"currentColor",strokeWidth:3,viewBox:"0 0 24 24",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3.75 13.5l10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75z"})}),(0,a.jsx)("span",{children:"en"===e?"Impact & Results:":"Impacto & Resultado:"})]}),(0,a.jsx)("p",{className:"text-sm leading-relaxed font-medium",children:"en"===e&&l.impact_en||l.impact})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-[10px] font-mono font-black text-zinc-900 uppercase tracking-widest mb-3",children:"en"===e?"Tech Stack:":"Stack Tecnológico:"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:l.techStack.map((e,t)=>(0,a.jsx)("span",{className:"text-[10px] font-mono font-bold text-zinc-900 bg-white border-2 border-zinc-900 px-2.5 py-1 shadow-[2px_2px_0px_0px_#000]",children:e},t))})]}),l.architectureNote&&(0,a.jsxs)("div",{className:"p-4 bg-zinc-100 border-2 border-zinc-900 border-dashed text-[11px] text-zinc-700 font-mono font-bold leading-normal",children:[(0,a.jsx)("span",{className:"text-zinc-900 block text-[9px] font-black uppercase tracking-wider mb-1",children:"en"===e?"Architecture:":"Arquitectura:"}),l.architectureNote]})]})]})}),(0,a.jsxs)("div",{className:"p-6 border-t-4 border-zinc-900 bg-white flex flex-col md:flex-row items-center justify-between shrink-0 gap-4",children:[(0,a.jsxs)("div",{className:"flex flex-col sm:flex-row items-center gap-4 w-full md:w-auto",children:[l.url?(0,a.jsxs)("a",{href:l.url,target:"_blank",rel:"noopener noreferrer",className:"w-full sm:w-auto px-6 py-3 bg-white text-zinc-900 text-xs font-bold font-mono tracking-wider up
1percase border-2 border-zinc-900 shadow-[4px_4px_0px_0px_#000] hover:translate-y-px hover:translate-x-px hover:shadow-[2px_2px_0px_0px_#000] transition-all flex items-center justify-center gap-2 group",children:[(0,a.jsx)("span",{children:"en"===e?"Launch Live Demo":"Desplegar demo en vivo"}),(0,a.jsx)("span",{className:"text-blue-600 group-hover:translate-x-1 transition-transform",children:"↗"})]}):(0,a.jsxs)("span",{className:"text-xs font-mono font-bold text-zinc-500 flex items-center gap-2 bg-zinc-100 px-3 py-1.5 border-2 border-zinc-900 border-dashed w-full sm:w-auto justify-center",children:[(0,a.jsx)("span",{className:"w-2 h-2 border-2 border-zinc-900 bg-white"}),"en"===e?"Corporate / Private Software":"Software corporativo / privado"]}),(0,a.jsx)("a",{href:"/#contacto",onClick:()=>d(null),className:"w-full sm:w-auto px-6 py-3 bg-[#2563eb] text-white text-xs font-bold font-mono tracking-wider uppercase border-2 border-zinc-900 shadow-[4px_4px_0px_0px_#000] hover:translate-y-px hover:translate-x-px hover:shadow-[2px_2px_0px_0px_#000] transition-all flex items-center justify-center",children:"en"===e?"Apply to my business":"Aplicar en mi negocio"})]}),(0,a.jsx)("button",{onClick:()=>d(null),className:"w-full md:w-auto px-5 py-2.5 bg-white text-zinc-900 border-2 border-zinc-900 text-xs font-mono font-bold shadow-[4px_4px_0px_0px_#000] hover:translate-y-px hover:translate-x-px hover:shadow-[2px_2px_0px_0px_#000] transition-all",children:"en"===e?"Close Inspector":"Cerrar inspector"})]})]})})]})}],85950)}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.