{"lang":"es","t":{"nav":{"about":"Nosotros","projects":"Proyectos","price":"Precios","contact":"Contacto"},"hero":{"badge":"Creando productos digitales","title1":"DevMotion","title2":"Studio","subtitle":"Transformamos ideas de negocio en productos digitales que generan ganancias. Drupal, React, Shopify - ciclo completo de desarrollo en 4-8 semanas.","stats":{"projects":"Proyectos Exitosos","projectsDesc":"Para empresas en Ucrania y Europa","years":"Años de Experiencia","yearsDesc":"Desarrollo y soporte empresarial","onTime":"Entregado a Tiempo","onTimeDesc":"Plazos y presupuesto fijos"}},"portfolio":{"subtitle":"Resultados reales para nuestros clientes","title1":"Porta","title2":"folio","viewAll":"Todos los Proyectos"},"technologies":{"subtitle":"Stack moderno. Con IA integrada. Listo para producción.","title1":"Tecno","title2":"logías","viewAll":"Todos los Servicios"},"cta":{"subtitle":"¿Listo para escalar tu negocio?","title1":"Tu proyecto -","title2":"¿siguiente?","description":"Completa el formulario - obtén una estimación en 24 horas. Gratis.","button":"Obtener Estimación","viewProjects":"Ver Proyectos","copyright":"© DevMotion Studio / 2026"},"projects":{"pageTitle":"Nuestros Proyectos","pageSubtitle":"Resultados reales para negocios reales. Aquí están algunos de nuestros trabajos recientes.","filterLabel":"Filtrar","filterAll":"Todos","filterCorporate":"Corporativo","filterEcommerce":"E-commerce","filterPortals":"Portales","categories":{"corporate":"Sitios Corporativos","ecommerce":"E-commerce","portals":"Portales","promo":"Sitios Promocionales","web-apps":"Aplicaciones Web","webgl":"Demo WebGL"},"filterWebgl":"WebGL Demo"},"pricing":{"pageTitle":"Nuestros Precios","pageSubtitle":"Precios transparentes para cada tamaño de negocio. Sin costos ocultos.","startingFrom":"desde","goodFor":"Ideal para:","cards":[{"title":"Landing Page","price":"€1.500","features":["Diseño responsivo","Hasta 5 secciones","Formulario de contacto","SEO básico","1 mes de soporte","Hosting (Hetzner) - 1 año gratis"],"goodFor":"Pequeñas empresas, startups, lanzamientos de productos","buttonText":"Iniciar Proyecto"},{"title":"Sitio Corporativo","price":"€5.000","features":["CMS Drupal/Symfony/React","Hasta 15 páginas","Módulo de blog","Formularios de contacto","Optimización SEO completa","3 meses de soporte","Hosting (Hetzner) - 1 año gratis"],"goodFor":"Medianas empresas, sitios corporativos, empresas de servicios","buttonText":"Iniciar Proyecto"},{"title":"E-commerce","price":"€10.000","features":["Shopify o solución personalizada","Catálogo de productos","Integración de pagos","Cálculo de envíos","Cuentas de clientes","6 meses de soporte"],"goodFor":"Tiendas online, marketplaces, plataformas B2B","buttonText":"Iniciar Proyecto"}]},"process":{"title1":"Cómo","title2":"trabajamos","steps":[{"number":"01","title":"Descubrimiento","description":"Analizamos tus requisitos, investigamos tu mercado y creamos una hoja de ruta detallada."},{"number":"02","title":"Diseño","description":"Creamos un prototipo interactivo para que puedas ver y sentir tu proyecto antes del desarrollo."},{"number":"03","title":"Desarrollo","description":"Demos semanales e iteraciones. Estás involucrado en cada paso del proceso de desarrollo."},{"number":"04","title":"Lanzamiento","description":"Despliegue, capacitación y soporte continuo. Estamos contigo a largo plazo."}]},"faq":{"title1":"¿Tienes","title2":"preguntas?","items":[{"question":"¿Cuánto tiempo toma desarrollar un sitio web?","answer":"El tiempo de desarrollo depende de la complejidad del proyecto. Una landing page toma 2-3 semanas, un sitio corporativo 4-8 semanas, y una plataforma e-commerce 8-16 semanas. Siempre proporcionamos un cronograma detallado antes de comenzar."},{"question":"¿Qué tecnologías utilizan?","answer":"Nos especializamos en Drupal para CMS empresarial, React para aplicaciones web modernas, Shopify para e-commerce, y Symfony para desarrollo backend personalizado. Todos nuestros proyectos usan Tailwind CSS para diseños hermosos y responsivos."},{"question":"¿Proporcionan hosting y soporte?","answer":"¡Sí! Ofrecemos hosting en la nube de Hetzner con excelente rendimiento y precios competitivos. Todos nuestros proyectos incluyen soporte post-lanzamiento, y ofrecemos paquetes de mantenimiento continuo."},{"question":"¿Cuál es su proceso de desarrollo?","answer":"Seguimos un enfoque ágil con 4 fases principales: Análisis (requisitos y hoja de ruta), Diseño (prototipo interactivo), Desarrollo (demos semanales e iteraciones), y Lanzamiento (despliegue y capacitación)."},{"question":"¿Cuánto cuesta?","answer":"El precio depende del alcance del proyecto. Las landing pages comienzan desde €1.500, sitios corporativos desde €5.000, y e-commerce desde €10.000. Contáctanos para una estimación gratuita - te daremos una cotización detallada en 24 horas."},{"question":"¿Trabajan con clientes internacionales?","answer":"¡Absolutamente! Trabajamos con clientes de Ucrania, Europa y más allá. Toda la comunicación puede ser en inglés o ucraniano. Usamos herramientas modernas para colaboración remota."}]},"contact":{"pageTitle":"Contacto","pageSubtitle":"¿Listo para iniciar tu proyecto? Ponte en contacto.","formTitle":"Obtén una estimación gratis","formSubtitle":"3 pasos breves — y prepararemos una estimación preliminar","responseTime":"Respondemos en 24 horas, normalmente mucho antes.","info":{"email":"Email","phone":"Teléfono","telegram":"Telegram","location":"Ubicación"},"form":{"name":"Tu nombre","email":"Email","phone":"Teléfono (opcional)","service":"¿Qué necesitas?","serviceSelect":"Selecciona un servicio","message":"Cuéntanos sobre tu proyecto","messagePlaceholder":"Describe tu proyecto, objetivos, plazos...","submit":"Enviar Solicitud","sending":"Enviando...","required":"requerido"},"validation":{"nameRequired":"El nombre es requerido","emailRequired":"El email es requerido","emailInvalid":"Por favor ingresa un email válido","serviceRequired":"Por favor selecciona un servicio","messageRequired":"El mensaje es requerido","messageMin":"El mensaje debe tener al menos 10 caracteres"},"success":{"title":"¡Solicitud Enviada!","message":"Gracias por contactarnos. Te responderemos en 24 horas con una estimación del proyecto.","button":"Entendido"},"services":["Landing Page","Sitio Corporativo","Tienda E-commerce","Aplicación Web Personalizada","Aplicación Móvil","Otro"]},"services":{"whatIs":"¿Qué es","whyChoose":"¿Por qué elegir","advantages":"Ventajas","startProject":"Inicia Tu Proyecto","drupalSites":{"title":"Sitios web populares construidos con Drupal","description":"Drupal impulsa algunos de los sitios web más visitados y confiables del mundo. Aquí hay solo algunos ejemplos de organizaciones que eligieron Drupal para su presencia digital.","tesla":"Vehículos eléctricos y energía limpia","nasa":"Exploración espacial e investigación","economist":"Noticias y análisis globales","oxford":"Universidad líder mundial","pfizer":"Compañía farmacéutica global","bbc":"Corporación de radiodifusión británica"},"items":[{"title":"AI Integration","slug":"ai-integration","tagline":"Claude, OpenAI, búsqueda semántica. IA en producción, no un demo.","shortDescription":"Integramos Anthropic Claude, OpenAI, Google AI y OpenRouter en sistemas reales de producción — no demos de juguete. Parsers IA personalizados, búsqueda semántica con embeddings, pipelines RAG, automatización inteligente. El modelo es una herramienta. El producto es lo que importa.","storyDescription":"La integración IA bien hecha es ingeniería poco glamorosa: diseño de prompts, rutas de fallback, monitoreo de costos, evaluaciones, presupuestos de latencia. Llevamos enviando funcionalidades IA en producción desde 2024 — parsers Drupal con Claude, servicios FastAPI de inferencia, búsqueda semántica multilingüe. Sabemos qué modelo elegir para cada caso, y cuándo no usar uno.","features":[{"title":"Claude · OpenAI · Google AI","description":"Integraciones multi-proveedor con Anthropic SDK, OpenAI SDK y OpenRouter. Elegimos el modelo correcto para cada tarea — y cambiamos cuando los costos o capacidades cambian."},{"title":"Búsqueda Semántica","description":"Elasticsearch + embeddings multilingual-e5 para búsqueda que entiende significado, no solo palabras clave. Funciona entre idiomas de forma nativa."},{"title":"Parsers IA Personalizados","description":"Plataformas Drupal 11 en producción con parsers IA que extraen datos estructurados de inputs caóticos del mundo real — artículos, documentos, HTML scrapeado."}],"tags":["Claude","OpenAI","Búsqueda Semántica"]},{"title":"Next.js","slug":"nextjs","tagline":"React moderno con SSR, edge runtime y Server Components. Rápido por defecto.","shortDescription":"Next.js 16 es el framework React para producción. Server Components para renderizado sin JS donde no lo necesitas, interactividad instantánea donde sí. SSR para SEO, SSG para velocidad, edge functions para rendimiento global. Construimos dashboards SaaS, plataformas de contenido y sitios de marketing que se lanzan.","storyDescription":"Next.js con App Router es React en 2026 — Server Components, streaming, fetching async de datos y deploy en edge por defecto. Hemos construido productos SaaS Next.js 16 con backends Symfony, billing Stripe y routing i18n. Core Web Vitals rápidos desde el inicio.","features":[{"title":"App Router + Server Components","description":"Renderiza en el servidor cuando tiene sentido, hidrata en el cliente cuando no. Bundles más pequeños, páginas más rápidas, mejor UX."},{"title":"SEO-Ready","description":"SSR y SSG de fábrica. Tu contenido es indexable, tus páginas son rápidas, tus Core Web Vitals están en verde desde el día uno."},{"title":"Edge Runtime","description":"Despliega globalmente con Vercel, Cloudflare o tu propia infra. Respuestas sub-100ms en cualquier parte del mundo."}],"tags":["Frontend","SSR","React"]},{"title":"FastAPI","slug":"fastapi","tagline":"Backend Python para servicios IA, búsqueda semántica y APIs de alto rendimiento.","shortDescription":"FastAPI es el framework web Python moderno. Lo usamos para servicios de inferencia IA, APIs de búsqueda semántica y pipelines de datos que necesitan el ecosistema Python (sentence-transformers, scikit-learn, pandas) junto con rendimiento HTTP async de producción.","storyDescription":"Algunos problemas tienen forma de Python. Modelos ML, pipelines NLP, embeddings, computación científica — todo el ecosistema ML vive en Python, e intentar hacerlo desde PHP o Node es ir contra corriente. FastAPI nos da HTTP async de producción, docs OpenAPI auto-generados y async/await limpio — envolviendo las fortalezas de Python en un framework web serio.","features":[{"title":"Capa de Servicio IA","description":"Envuelve modelos de embeddings, bases de datos vectoriales y llamadas LLM detrás de una API async limpia. El frontend PHP/Node no necesita saber que Python existe."},{"title":"Auto-Documentado","description":"OpenAPI/Swagger generado automáticamente desde type hints. Los contratos de tipos se convierten en contratos de API, sin documentación separada que se desincronice."},{"title":"Ecosistema Python","description":"NumPy, Pandas, sentence-transformers, Hugging Face Transformers, scikit-learn — todo el toolkit ML, a un import de distancia."}],"tags":["Python","IA","API"]},{"title":"Drupal","tagline":"CMS empresarial para proyectos que escalan. Desde portales gubernamentales hasta grandes tiendas online.","shortDescription":"Drupal es el CMS de código abierto líder mundial, impulsando millones de sitios web y aplicaciones. Desde portales gubernamentales hasta marcas globales, Drupal proporciona la flexibilidad, seguridad y escalabilidad que los proyectos empresariales demandan.","storyDescription":"Cuando tu proyecto necesita manejar miles de tipos de contenido, integrarse con docenas de sistemas y servir a millones de usuarios - ahí es cuando Drupal brilla. Hemos trabajado con Drupal por más de 5 años.","features":[{"title":"Seguridad Bancaria","description":"Drupal es confiado por gobiernos y grandes corporaciones. Actualizaciones de seguridad regulares."},{"title":"Flexibilidad Ilimitada","description":"Tipos de contenido personalizados, flujos de trabajo complejos, arquitectura multi-sitio."},{"title":"Soporte a Largo Plazo","description":"Versiones principales soportadas por años. Tu inversión está protegida."}],"tags":["CMS","Empresarial","Seguridad"]},{"title":"React","tagline":"Aplicaciones web modernas con experiencia de usuario excepcional. Rápidas, responsivas, escalables.","shortDescription":"React es la biblioteca JavaScript más popular para construir interfaces de usuario. Creada por Facebook, impulsa el front-end de las aplicaciones más grandes del mundo.","storyDescription":"Cuando necesitas una aplicación que se sienta nativa, responda instantáneamente y proporcione una experiencia de usuario excepcional - React es la respuesta.","features":[{"title":"Velocidad Relámpago","description":"Virtual DOM y actualizaciones inteligentes aseguran que tu aplicación siempre sea responsiva."},{"title":"Arquitectura de Componentes","description":"Componentes reutilizables significan desarrollo más rápido y diseño consistente."},{"title":"Ecosistema Masivo","description":"Miles de paquetes y herramientas para acelerar el desarrollo."}],"tags":["Frontend","SPA","JavaScript"]},{"title":"Shopify","tagline":"Soluciones e-commerce que venden. Temas personalizados, apps e integraciones.","shortDescription":"Shopify impulsa más de 2 millones de tiendas online en todo el mundo. Desde pequeñas boutiques hasta marcas empresariales.","storyDescription":"Nos especializamos en crear experiencias Shopify personalizadas que destacan. Ya sea que necesites un tema único, una app personalizada o una integración compleja.","features":[{"title":"Temas Personalizados","description":"Diseños únicos que reflejan tu marca y optimizan las conversiones."},{"title":"Desarrollo de Apps","description":"Apps Shopify personalizadas para extender funcionalidad y automatizar tu negocio."},{"title":"Experiencia en Integraciones","description":"Conecta Shopify con tus sistemas existentes - ERP, CRM, almacenamiento."}],"tags":["E-commerce","Tienda Online","Apps"]},{"title":"Symfony","tagline":"Framework PHP profesional para aplicaciones empresariales complejas y APIs.","shortDescription":"Symfony es un conjunto de componentes PHP reutilizables y un framework de aplicaciones web. Es la base de muchos proyectos populares.","storyDescription":"Para lógica empresarial compleja, APIs de alta carga e integraciones empresariales, Symfony proporciona la estructura y herramientas que necesitas.","features":[{"title":"Arquitectura Empresarial","description":"Código limpio y mantenible siguiendo mejores prácticas y patrones de diseño."},{"title":"Desarrollo de APIs","description":"APIs RESTful y GraphQL que son rápidas, seguras y bien documentadas."},{"title":"Rendimiento Escalable","description":"Optimizado para aplicaciones de alta carga con caché, colas y más."}],"tags":["PHP","Backend","API"]},{"title":"Tailwind","tagline":"CSS utility-first para desarrollo UI rápido y consistente.","shortDescription":"Tailwind CSS es un framework CSS utility-first que permite construir diseños personalizados sin salir de tu HTML.","storyDescription":"Usamos Tailwind CSS para crear diseños hermosos y responsivos más rápido que nunca. Sin más peleas con especificidad CSS.","features":[{"title":"Desarrollo Rápido","description":"Construye interfaces 10x más rápido con clases de utilidad."},{"title":"Consistencia Perfecta","description":"Tokens de diseño aseguran espaciado, colores y tipografía consistentes."},{"title":"CSS de Producción Diminuto","description":"PurgeCSS elimina estilos no utilizados, resultando en bundles CSS muy pequeños."}],"tags":["CSS","Diseño","UI"]},{"title":"Hetzner","tagline":"Hosting en la nube europeo con valor y rendimiento excepcionales.","shortDescription":"Hetzner es un proveedor de nube alemán que ofrece uno de los mejores valores en la industria. Con centros de datos en Alemania y Finlandia.","storyDescription":"Alojamos los proyectos de nuestros clientes en Hetzner por su excepcional confiabilidad y valor. Cumplimiento GDPR, ingeniería alemana y precios sensatos.","features":[{"title":"Cumple con GDPR","description":"Centros de datos europeos aseguran que tus datos permanezcan en Europa."},{"title":"Valor Excepcional","description":"Obtén 2-3x más recursos por el mismo precio comparado con AWS o Google Cloud."},{"title":"Infraestructura Confiable","description":"Ingeniería alemana con confiabilidad de grado empresarial. 99.9% de uptime garantizado."}],"tags":["Nube","Hosting","Europa"]}]},"promo":{"badge":"Hecho En Casa","title":"Usamos Lo Que Vendemos.","subtitle":"Tres productos en vivo en producción. El stack que recomendamos a los clientes es el mismo que mueve nuestras propias apps — así que cuando decimos que funciona, ya lo hemos depurado a las 3 AM.","shopcsv":{"title":"ShopCSV","status":"En vivo · Shopify App Store","description":"Edita miles de productos Shopify en una hoja de cálculo. Sin dramas con CSV, sin accidentes masivos a las 3 AM.","stat":"Filas que puedes editar a la vez","cta":"Probar Gratis"},"platform":{"title":"App Platform","status":"Mueve nuestros SaaS","description":"Infraestructura multi-tenant con OAuth, facturación y datos aislados por tenant. Construida una vez. Cada app nueva la hereda gratis.","stat":"Construye una vez, lanza muchas","cta":"Ver Plataforma"},"settle":{"title":"Settle","status":"En vivo · 4 chains EVM L2","description":"Facturación crypto para freelancers. Pagos en stablecoins directos a tu wallet. Sin bancos. Sin fronteras. Sin SWIFT de 3 días.","stat":"L2s · Base · Polygon · Arb · OP","cta":"Visitar Settle"},"lab":{"title":"Tu Idea Aquí","status":"Borrador · Para lanzar","description":"¿Tienes una idea SaaS que desearías que existiera? Construimos productos de producción end-to-end — desde la llamada de arquitectura hasta el systemd que lo corre a las 4 AM.","stat":"Tarjeta en esta página","cta":"Cuéntanos"}},"shopcsv":{"subtitle":"Nuestra App Shopify","title1":"Shop","title2":"CSV","description":"Poderosa herramienta de importación/exportación CSV para tiendas Shopify. Edición masiva de productos, gestión de inventario y automatización.","features":["Importación/exportación masiva de productos","Gestión de inventario","Importaciones programadas","Mapeo de campos personalizado"],"cta":"Probar ShopCSV"},"symfonyApp":{"badge":"Construido con Symfony","title":"Shopify App Platform","subtitle":"Plataforma multi-app impulsada por Symfony 7.2","description":"Construimos una Plataforma de Apps Shopify completa usando Symfony 7.2 como framework backend. Esto demuestra nuestra experiencia en construir aplicaciones SaaS robustas y escalables con tecnología PHP de nivel empresarial.","feature1":"Framework PHP más reciente","feature2":"Gestión de base de datos","feature3":"Integración OAuth","feature4":"UI/UX moderno","architecture":"Arquitectura de la Aplicación","cta":"Ver Plataforma"},"reactPortfolio":{"badge":"Construido con React","title":"Nuestros Proyectos React","description":"Usamos React para construir aplicaciones web modernas, rápidas e interactivas. Esto es lo que hemos creado con tecnología React.","projects":{"devmotion":{"title":"DevMotion Studio","description":"Este mismo sitio web que estás viendo. Construido con React 19, Vite 7 y Tailwind CSS v4.","tech":["React 19","Vite 7","Tailwind CSS 4","React Router 7"]},"shopcsv":{"title":"ShopCSV Frontend","description":"Interfaz de la app Shopify con edición de productos tipo hoja de cálculo. Frontend React + TypeScript.","tech":["React","TypeScript","AG Grid","Shopify Polaris"]}},"cta":"Ver Proyecto"},"hetznerPortfolio":{"badge":"Alojado en Hetzner","title":"Proyectos que Alojamos","description":"Todos nuestros proyectos funcionan en infraestructura Hetzner Cloud. Alojamiento confiable, rápido y compatible con GDPR en centros de datos europeos.","projects":{"devmotion":{"title":"DevMotion Studio","description":"Este sitio web funciona en Hetzner Cloud con copias de seguridad automáticas y 99.9% uptime.","specs":["Hetzner Cloud","Alemania DC","Backups Auto","SSL/TLS"]},"shopify":{"title":"Shopify App Platform","description":"Infraestructura backend de nuestras apps Shopify con MySQL y caché Redis.","specs":["Hetzner Cloud","MySQL","Redis Cache","Load Balanced"]}},"cta":"Ver Proyecto"},"tailwindPortfolio":{"badge":"Estilizado con Tailwind","title":"Proyectos Tailwind CSS","description":"Usamos Tailwind CSS para desarrollo rápido de UI con diseños consistentes y hermosos. Estos proyectos muestran nuestra experiencia.","projects":{"devmotion":{"title":"DevMotion Studio","description":"Sitio web moderno de agencia con animaciones personalizadas, diseño responsive y tema oscuro.","features":["Animaciones Custom","Tema Oscuro","Responsive","Tailwind v4"]},"shopcsv":{"title":"Interfaz ShopCSV","description":"UI limpia y funcional para gestión de productos Shopify con componentes Tailwind.","features":["Dashboard UI","Tablas de Datos","Formularios","Tailwind v3"]}},"cta":"Ver Proyecto"},"footer":{"quote":"Somos un equipo de profesionales creativos unidos por una pasión compartida por el branding, diseño web y marketing digital. Nuestro enfoque no es solo crear soluciones hermosas y modernas, sino construir marcas audaces y memorables.","contactTitle":"Contáctanos:","phone":"Teléfono","email":"E-mail"},"notFound":{"title":"¡Ups! Página no encontrada","subtitle":"Parece que esta página se fue de vacaciones sin avisar.","home":"Inicio","projects":"Proyectos","contact":"Contacto"},"marquee":{"items":["DESARROLLO WEB","E-COMMERCE","APPS SHOPIFY"]},"projectPages":{"polylog":{"seoTitle":"Polylog — Caso de estudio de SaaS de chatbots multiagente | DevMotion","seoDescription":"Cómo construimos Polylog, una plataforma de chatbots multi-tenant y multiagente — RAG híbrido en Elasticsearch, constructor visual de flujos, widget integrable y facturación Stripe.","title":"Polylog","subtitle":"Caso de estudio","heroDescription":"Una plataforma de chatbots multi-tenant y multiagente. Los clientes se registran, suben conocimiento, diseñan flujos de conversación visualmente, integran un widget en su web y enrutan los leads a Telegram, WhatsApp, email o webhook — todo desde un panel.","visitSite":"Abrir demo en vivo","startProject":"Crear algo similar","stats":[{"value":"100+","label":"Idiomas (RAG cross-lingual)"},{"value":"9","label":"Servicios en Docker"},{"value":"Multi","label":"Tenant + multiagente"},{"value":"RAG","label":"Respuestas con fuentes"}],"aboutLabel":"Sobre el proyecto","aboutTitle":"Un widget, muchos agentes, todos los idiomas","aboutText":["Polylog permite a una empresa lanzar un chatbot fundamentado y con su marca en minutos: sube PDFs, rastrea una web o pega texto, diseña la conversación visualmente y coloca una etiqueta de script en la página. Cada fila y consulta está aislada por tenant, y un solo widget puede alojar varios agentes — por ejemplo un consultor de viajes y uno de ventas a la vez.","Las respuestas se recuperan con búsqueda híbrida (BM25 + vectores densos + RRF) sobre Elasticsearch, reordenadas por un cross-encoder, con embeddings bge-m3 que funcionan en más de 100 idiomas. Un verificador de grounding comprueba cada respuesta contra las fuentes recuperadas y bloquea afirmaciones sin fundamento antes de que el visitante las vea."],"challengeTitle":"El reto","challengeText":"Lanzar un SaaS donde clientes no técnicos construyan ellos mismos un chatbot fiable — preciso, multilingüe y a salvo de alucinaciones — manteniendo los datos de cada tenant estrictamente aislados y todo auto-alojable.","solutionTitle":"La solución","solutionText":"Un backend FastAPI con Postgres + Elasticsearch por tenant, un panel Next.js con constructor visual de flujos @xyflow, un widget en Shadow DOM que transmite por SSE, facturación Stripe con límites del lado servidor y una capa de confianza de grounding/citas. Nueve servicios orquestados con Docker Compose.","featuresLabel":"Características clave","featuresTitle":"Todo lo que necesitas en una plataforma","features":[{"title":"Conocimiento RAG híbrido","description":"Sube archivos, rastrea URLs o pega texto. BM25 + vectores densos + RRF en Elasticsearch, rerank con cross-encoder, embeddings cross-lingual bge-m3."},{"title":"Constructor visual de flujos","description":"Nodos de mensaje, opción, captura, condición, API, respuesta IA, handoff e intención en un canvas @xyflow, con prueba en vivo."},{"title":"Widget integrable","description":"Aislado en Shadow DOM, transmite respuestas por SSE, renderiza botones, formularios de leads, citas y tarjetas de producto — localizado al visitante."},{"title":"Multi-tenant y multiagente","description":"Cada fila y consulta aislada por tenant_id; conocimiento y flujos por agent_id. Un widget puede alojar varios agentes."},{"title":"Canales y leads","description":"Enruta los leads a Telegram, WhatsApp, email o webhook — credenciales cifradas en reposo, nunca en variables de entorno."},{"title":"Capa de confianza","description":"Un verificador comprueba cada respuesta contra los fragmentos recuperados y bloquea afirmaciones sin fundamento, con citas y registro de auditoría."}],"screenshotsLabel":"Capturas","screenshotsTitle":"Míralo en acción","desktopLabel":"Escritorio — landing y widget","mobileLabel":"Móvil","techLabel":"Tecnologías","techTitle":"Construido sobre un stack moderno y preciso","techDescription":"Un backend Python tipado, un panel React 19 y recuperación sobre Elasticsearch — orquestado como nueve servicios Docker con facturación Stripe.","techItems":[{"icon":"▲","name":"Next.js 15","role":"Panel + landing (next-intl)"},{"icon":"⚡","name":"FastAPI","role":"Backend Python por tenant"},{"icon":"🔎","name":"Elasticsearch","role":"Recuperación híbrida (BM25 + densa + RRF)"},{"icon":"💳","name":"Stripe","role":"Checkout + límites de plan"}],"ctaTitle":"¿Quieres un chatbot fundamentado para tu producto?","ctaDescription":"Chat multilingüe y multiagente con conocimiento RAG, captura de leads y una capa de confianza que bloquea alucinaciones — integrable en cualquier web.","ctaButton":"Contactar","ctaViewProjects":"Ver todos los proyectos"},"tripsquick":{"seoTitle":"TripsQuick — Plataforma de aguas de pesca en EE. UU. con mapas de profundidad e IA | DevMotion","seoDescription":"Cómo construimos TripsQuick: nueve fuentes públicas en una página por lago o río, mapas de profundidad de sondeos oficiales de USACE y NOAA, 267 especies, previsión de picada y un asistente con IA.","title":"TripsQuick","subtitle":"Caso de Estudio","heroDescription":"Una plataforma de aguas de pesca en EE. UU.: una página por lago o río con mapas de profundidad oficiales, especies, repoblaciones, rampas, previsión de picada y un asistente con IA al que basta con preguntar.","visitSite":"Visitar Web","startProject":"Crear Algo Similar","stats":[{"value":"78.208","label":"Lagos, ríos y bahías"},{"value":"12.945","label":"Cartas de profundidad"},{"value":"267","label":"Especies de peces"},{"value":"63.127","label":"Puntos de pesca: rampas, muelles y orilla"}],"aboutLabel":"Sobre el Proyecto","aboutTitle":"Pregunta al agua","aboutText":["Los pescadores en EE. UU. tenían los datos, pero dispersos: sondeos oficiales, análisis del agua, repoblaciones y rampas están en webs distintas y en formatos distintos.","TripsQuick reúne nueve fuentes públicas en una página por lago o río. Todo es gratis; se paga por la comodidad: previsión a una semana, alertas, mapas sin conexión y un asistente ilimitado."],"challengeTitle":"El Desafío","challengeText":"Convertir datos públicos en bruto en mapas de profundidad fiables, sin dibujar nunca más agua de la que realmente se midió.","solutionTitle":"La Solución","solutionText":"Un servidor propio con Python + PostGIS descarga las fuentes (contornos NHD y sondeos eHydro), construye isóbatas con intervalos adaptativos y las empaqueta en teselas vectoriales. Donde no hay sondeo, el mapa se queda vacío en lugar de adivinar.","featuresLabel":"Características Clave","featuresTitle":"Qué obtiene el pescador","features":[{"title":"Mapas de profundidad","description":"Isóbatas a partir de sondeos oficiales de USACE, NOAA y los estados, nunca más hondas de lo medido."},{"title":"Una página por masa de agua","description":"Nueve fuentes públicas unidas: contornos, profundidades, análisis, repoblaciones y rampas."},{"title":"Previsión de picada","description":"Un índice diario y una previsión a una semana para cada lago o río."},{"title":"Asistente con IA","description":"Se pregunta con palabras normales; el agente usa las herramientas por sí mismo: búsqueda, previsión, mapa y ruta a la rampa."},{"title":"Ruta hasta la profundidad","description":"GraphHopper traza la ruta desde la rampa hasta la profundidad adecuada."},{"title":"267 especies","description":"Una guía de especies enlazada con las aguas donde vive cada pez."}],"screenshotsLabel":"Capturas de Pantalla","screenshotsTitle":"Véalo en Acción","desktopLabel":"Versión de Escritorio","mobileLabel":"Versión Móvil","techLabel":"Tecnología","techTitle":"Construido sobre datos abiertos y archivos simples","techDescription":"Las teselas vectoriales se empaquetan con tippecanoe en PMTiles y nginx las sirve como archivos estáticos mediante peticiones Range: todo el detalle de cerca, teselas ligeras al alejarse, sin CDN ni almacenamiento de objetos. El asistente construye sus tarjetas de respuesta con esos datos, así que cada respuesta se basa en hechos.","techItems":[{"name":"Next.js","role":"Aplicación web, EN / ES"},{"name":"Python + PostGIS","role":"Pipeline de datos, isóbatas"},{"name":"tippecanoe → PMTiles","role":"Teselas vectoriales"},{"name":"nginx Range requests","role":"Entrega de teselas sin CDN"},{"name":"Elasticsearch","role":"Búsqueda de aguas"},{"name":"GraphHopper","role":"Ruta de la rampa a la profundidad"},{"name":"Agente LLM","role":"Asistente con herramientas"}],"ctaTitle":"¿Tienes datos que deberían ser un producto?","ctaDescription":"Datos públicos, sensores o un archivo desordenado: convertimos datos en bruto en mapas, búsqueda y herramientas de IA de uso diario.","ctaButton":"Contáctanos","ctaViewProjects":"Ver Todos los Proyectos"},"sonrisa-blanca":{"seoTitle":"Sonrisa Blanca — Web para Estudio de Blanqueamiento Dental | Caso de Estudio DevMotion Studio","seoDescription":"Cómo diseñamos y construimos un sitio web atrevido y enfocado en conversión para Sonrisa Blanca — un estudio de blanqueamiento dental cosmético en Cartagena, España.","title":"Sonrisa Blanca","subtitle":"Caso de Estudio","heroDescription":"Una landing page atrevida y de alta conversión para un estudio de blanqueamiento dental cosmético en Cartagena, España. Tipografía impactante, resultados reales de antes y después, y reservas online sin fricción — todo diseñado para convertir visitantes en citas.","visitSite":"Visitar Web","startProject":"Crear Algo Similar","stats":[{"value":"3","label":"Planes de Precio"},{"value":"15+","label":"Tonos Más Blanco"},{"value":"98%","label":"Satisfacción Clientes"},{"value":"60min","label":"Duración Sesión"}],"aboutLabel":"Sobre el Proyecto","aboutTitle":"Donde la Confianza Se Encuentra con la Sonrisa","aboutText":["Sonrisa Blanca necesitaba un sitio web que igualara la transformación que ofrecen — atrevido, hermoso e imposible de ignorar. Sin esterilidad clínica, sin fotos de stock. Solo resultados reales, personas reales y un camino claro hacia la reserva.","Creamos una landing page con tipografía sobredimensionada, tonos cálidos y un ritmo visual que guía la mirada desde el hero hasta el botón de reserva. Cada sección responde una pregunta que el visitante ni sabía que tenía."],"challengeTitle":"El Desafío","challengeText":"Construir un sitio web para un servicio cosmético que se sienta premium sin ser pretencioso. El sitio tenía que mostrar resultados reales de antes y después, presentar tres niveles de precio con claridad e impulsar reservas online — todo mientras destaca en un mercado local competitivo en España.","solutionTitle":"La Solución","solutionText":"Una narrativa guiada por el scroll que abre con impacto, construye confianza con testimonios y resultados, presenta precios sin ambigüedad y cierra con un flujo de reserva sin fricción. La tipografía atrevida y la fotografía cálida hacen el trabajo pesado — el diseño vende la sonrisa.","featuresLabel":"Características Clave","featuresTitle":"Diseñado para Convertir","features":[{"title":"Tipografía Atrevida","description":"Tipografía sobredimensionada y expresiva que capta la atención y da a la marca una identidad inconfundible en cualquier pantalla."},{"title":"Galería Antes y Después","description":"Transformaciones reales de clientes mostradas en formato deslizable que construyen confianza y deseo al instante."},{"title":"Precios por Niveles","description":"Tres paquetes claros (Express, Premium, Exclusive) con precios transparentes que eliminan la hesitación."},{"title":"Reserva Online","description":"Sistema de citas integrado que permite a los visitantes reservar directamente desde el sitio — sin llamadas, sin fricción."},{"title":"Prueba Social","description":"Testimonios, fotos del equipo y resultados verificados integrados en la página para construir credibilidad en cada scroll."},{"title":"Diseño Mobile-First","description":"Optimizado para cómo la gente realmente navega — en su móvil, en sus momentos libres, listos para tocar y reservar."}],"screenshotsLabel":"Capturas de Pantalla","screenshotsTitle":"Véalo en Acción","desktopLabel":"Versión de Escritorio","mobileLabel":"Versión Móvil","techLabel":"Tecnología","techTitle":"Bajo el Capó","techDescription":"Sonrisa Blanca está construido con un stack moderno y ligero enfocado en velocidad y conversión. Cada milisegundo cuenta cuando un visitante está a un toque de reservar.","techItems":[{"icon":"⚛️","name":"React","role":"Framework UI"},{"icon":"🎨","name":"Tailwind CSS","role":"Sistema de Diseño"},{"icon":"📱","name":"Responsive","role":"Mobile-First"},{"icon":"🔍","name":"SEO Optimizado","role":"Búsqueda Local"}],"ctaTitle":"¿Necesitas una Landing que Convierta?","ctaDescription":"Ya sea un estudio de belleza, clínica dental o cualquier negocio local — creamos landing pages que convierten visitantes en clientes. Diseño limpio, mensaje claro, resultados reales.","ctaButton":"Contáctanos","ctaViewProjects":"Ver Todos los Proyectos"},"settle":{"seoTitle":"Settle — SaaS de Facturación Crypto para Freelancers | Caso de Estudio DevMotion Studio","seoDescription":"Cómo construimos Settle, una plataforma de facturación crypto no custodial. Los freelancers envían facturas y reciben pagos en USDC/USDT/DAI en Base, Polygon, Arbitrum y Optimism.","title":"Settle","subtitle":"Caso de Estudio","heroDescription":"Cobra en stablecoins. Sin bancos. Sin esperas. Sin fronteras. Un SaaS de facturación con UX de nivel Stripe que permite a los freelancers recibir USDC, USDT y DAI en L2s EVM baratas — totalmente no custodial, sin smart contracts que auditar, sin riesgo de money-transmitter.","visitSite":"Visitar Web","startProject":"Crear Algo Similar","stats":[{"value":"4","label":"Chains L2 Activas"},{"value":"3","label":"Stablecoins Soportadas"},{"value":"0%","label":"Riesgo Custodial"},{"value":"<30s","label":"Detección de Pago"}],"aboutLabel":"Sobre el Proyecto","aboutTitle":"UX de Nivel Stripe sobre Rails Crypto","aboutText":["Los freelancers en Ucrania, Argentina, Nigeria, Brasil, México y docenas de otros mercados pierden 5-10% de cada factura por demoras SWIFT, transferencias congeladas y spreads de cambio. Ya usan crypto en privado — pero las herramientas son incómodas, custodiales o construidas para nativos Web3.","Settle envuelve pagos no custodiales en stablecoins con la UX pulida y profesional que los freelancers esperan de Stripe. Los fondos van directamente de la billetera del cliente a la del freelancer. Nunca tocamos el dinero — solo hacemos que se sienta sin esfuerzo."],"challengeTitle":"El Desafío","challengeText":"Construir un producto de pagos que se vea y se sienta como Stripe, pero sobre L2s EVM. Mantenerse completamente no custodial para evitar la regulación money-transmitter. Detectar pagos on-chain de forma confiable en cuatro chains con diferentes tiempos de bloque. Hacerlo accesible a freelancers que nunca han usado una billetera crypto.","solutionTitle":"La Solución","solutionText":"Backend Symfony que solo lee de las chains (nunca escribe), dashboard React para gestión de facturas, checkout con Twig + viem para el flujo de pago, y un daemon PHP que sondea Base/Polygon/Arbitrum/Optimism por eventos ERC-20 Transfer. Los contratos están explícitamente en allowlist. Todos los montos usan bcmath/gmp — nunca floats. La arquitectura es aburrida a propósito.","featuresLabel":"Características Clave","featuresTitle":"Construido para Pagos del Mundo Real","features":[{"title":"No Custodial por Diseño","description":"Los fondos van directamente de la billetera del cliente a la del freelancer. Settle nunca retiene tu dinero — cero riesgo custodial, cero ambigüedad regulatoria."},{"title":"Cuatro L2s EVM Activas","description":"Base, Polygon, Arbitrum y Optimism — todas en mainnet. Gas barato (céntimos por pago), finalidad rápida (5-30 confirmaciones)."},{"title":"USDC · USDT · DAI","description":"Las tres stablecoins que los freelancers realmente quieren. Los contratos de tokens están explícitamente en allowlist — la coincidencia solo por símbolo está prohibida."},{"title":"Listener On-Chain","description":"Un daemon PHP sondea cada chain vía eth_getLogs, decodifica eventos ERC-20 Transfer y los empareja con facturas abiertas en segundos. Idempotente y reanudable."},{"title":"Recibos PDF + Email","description":"Cada factura pagada genera un recibo PDF con marca entregado vía Resend con DKIM, SPF y DMARC. Fallback plaintext y List-Unsubscribe incluidos."},{"title":"Marketing Multilingüe","description":"Sitio de marketing completo en inglés, ucraniano y español con hreflang, sitemap, JSON-LD y OG tags. Construido para los mercados donde este producto realmente importa."}],"screenshotsLabel":"Capturas de Pantalla","screenshotsTitle":"Véalo en Acción","desktopLabel":"Versión de Escritorio","mobileLabel":"Versión Móvil","techLabel":"Tecnología","techTitle":"Bajo el Capó","techDescription":"Un stack deliberadamente aburrido elegido por fiabilidad, longevidad y cero riesgo de deploy. Symfony no escribe nada on-chain — solo lee. Todas las transacciones se firman en el navegador del usuario. Sin smart contracts personalizados. Sin superficie money-transmitter.","techItems":[{"icon":"🐘","name":"Symfony 7.1","role":"Framework Backend"},{"icon":"⚛️","name":"React + TypeScript","role":"Dashboard SPA"},{"icon":"🦊","name":"viem + wagmi","role":"Conexión de Billetera"},{"icon":"💎","name":"L2s EVM","role":"Base · Polygon · Arbitrum · Optimism"}],"ctaTitle":"¿Construyendo un Producto Web3?","ctaDescription":"Desde dashboards DeFi hasta SaaS crypto-nativo, construimos apps Web3 de producción con la misma disciplina de ingeniería que el fintech tradicional. Sin vibes, sin rugs, sin sorpresas.","ctaButton":"Contáctanos","ctaViewProjects":"Ver Todos los Proyectos"},"mariasydorchuk":{"seoTitle":"Clínica María Sydorchuk — Web Multilingüe de Medicina Estética | Caso de Estudio DevMotion Studio","seoDescription":"Cómo construimos un sitio multilingüe para una clínica de medicina estética en Cartagena, España — Next.js 16, soporte RTL completo para árabe, comparador antes/después y un flujo de reserva que convierte.","title":"Clínica María Sydorchuk","subtitle":"Caso de Estudio","heroDescription":"Un sitio de marketing multilingüe para una clínica de medicina estética en Cartagena, España — diseñado para conectar cuatro idiomas, dos sistemas de escritura y una sola marca elegante. Tipografía audaz, comparadores antes/después y un flujo de reserva sin fricción que convierte la curiosidad en citas.","visitSite":"Visitar Web","startProject":"Crear Algo Similar","stats":[{"value":"4","label":"Idiomas (ES/EN/UK/AR)"},{"value":"14","label":"Categorías de Tratamiento"},{"value":"50+","label":"Tratamientos con Precio"},{"value":"100%","label":"Mobile-First"}],"aboutLabel":"Sobre el Proyecto","aboutTitle":"Belleza que Habla Todos los Idiomas","aboutText":["Cartagena es una ciudad portuaria — las pacientes llegan desde todo el mundo hispanohablante, desde Ucrania, desde Marruecos. La clínica de María Sydorchuk necesitaba un sitio que las recibiera a todas en su idioma, incluyendo una experiencia completa en árabe de derecha a izquierda.","Diseñamos y lanzamos un sitio en Next.js 16 que hace el trabajo pesado en silencio: rutas con prefijo de idioma, RTL automático en árabe con chevrons espejo y propiedades CSS lógicas, una paleta crema/bronce inspirada en el interior de la clínica, y una lista de precios transparente que nadie más en la zona se atreve a publicar."],"challengeTitle":"El Desafío","challengeText":"Lanzar un sitio que maneje cuatro idiomas y dos direcciones de escritura sin sentirse como un ejercicio de traducción — y que convierta visitantes en citas reservadas con un único formulario de Nombre + Teléfono, sin checkout, sin fricción.","solutionTitle":"La Solución","solutionText":"Next.js 16 con App Router, next-intl para rutas con prefijo, Tailwind v4 con propiedades CSS lógicas para un RTL limpio, transiciones de página con Motion y un hero con Embla fade-slider con sets desktop/mobile responsivos. Tipografía Manrope audaz emparejada con Noto Naskh para árabe — un solo lenguaje de diseño en dos sistemas de escritura.","featuresLabel":"Características Clave","featuresTitle":"Diseñado para Convertir","features":[{"title":"Cuatro Idiomas, Dos Sistemas","description":"Español, inglés, ucraniano y árabe marroquí. La página se voltea elegantemente a RTL con propiedades CSS lógicas — sin segundo diseño, sin código paralelo."},{"title":"Tipografía Editorial Audaz","description":"Manrope como caballo de batalla, Noto Naskh para árabe, una paleta crema/bronce inspirada en el interior de la clínica. Pesos pesados, espacio generoso, sin esterilidad clínica."},{"title":"Galería Antes/Después","description":"Transformaciones reales de clientes en un comparador deslizable — img-comparison-slider con cromado crema/bronce que combina con el resto del sitio."},{"title":"Precios Transparentes","description":"50+ tratamientos en 14 categorías, todos los precios publicados en EUR. Ningún 'pide presupuesto' en el sitio — un diferenciador competitivo en medicina estética."},{"title":"Hero con Embla","description":"Transiciones fade con sets de desktop (1920×1080) y móvil (750×1000) que cambian en el breakpoint. Carouseles con gestos de rueda en las tarjetas de la home."},{"title":"Reserva Sin Formularios","description":"Nombre + Teléfono con un toque, sin checkout, sin fricción. La franja de reserva vive en el footer y en una tarjeta CTA oscura — ambas convierten en silencio."}],"screenshotsLabel":"Capturas de Pantalla","screenshotsTitle":"Véalo en Acción","desktopLabel":"Versión de Escritorio","mobileLabel":"Versión Móvil","techLabel":"Tecnología","techTitle":"Bajo el Capó","techDescription":"Un stack moderno de Next.js 16 para sitios de contenido que necesitan sentirse premium, cargar al instante y servir cuatro locales — incluyendo uno que se lee de derecha a izquierda. Las propiedades lógicas de Tailwind v4 hacen el trabajo pesado; una hoja de estilos, dos sistemas de escritura, sin design system extra.","techItems":[{"icon":"▲","name":"Next.js 16","role":"App Router + i18n"},{"icon":"🎨","name":"Tailwind v4","role":"CSS lógico para RTL"},{"icon":"🌐","name":"next-intl","role":"4 locales, rutas con prefijo"},{"icon":"💫","name":"Motion","role":"Transiciones + menú"}],"ctaTitle":"¿Necesitas un Sitio Multilingüe que Convierta?","ctaDescription":"Ya sea una clínica, una marca hostelera o cualquier negocio que sirve múltiples mercados — lanzamos sitios multilingües que se sienten nativos en cada idioma, y un flujo de reserva afinado para conversión, no para presumir.","ctaButton":"Contáctanos","ctaViewProjects":"Ver Todos los Proyectos"},"rybalka":{"seoTitle":"Rybalka Club — Comunidad de Pesca + Asistente IA | Caso de Estudio DevMotion Studio","seoDescription":"Cómo construimos Rybalka Club para Ucrania — una comunidad de pesca con mapa en vivo, pronóstico de mordida, feed social y un asistente IA con base de conocimiento multilingüe y citas de fuentes.","title":"Rybalka Club","subtitle":"Caso de Estudio","heroDescription":"Un radar de pesca en vivo para Ucrania — mapa de spots, pronóstico de mordida, feed social de capturas, un manual de 80 especies y un asistente IA basado en una base de conocimiento curada. Construido sobre un único cluster de Elasticsearch, con búsqueda semántica por embeddings y respuestas RAG que citan sus fuentes.","visitSite":"Visitar Sitio","startProject":"Crear Algo Similar","stats":[{"value":"80+","label":"Especies de Peces"},{"value":"1024","label":"Dimensiones Vector"},{"value":"4","label":"Capas de Mapa"},{"value":"0","label":"Bases SQL"}],"aboutLabel":"Sobre el Proyecto","aboutTitle":"Radar Vivo para Cada Pescador","aboutText":["Los pescadores ucranianos necesitaban un único lugar para ver dónde está mordiendo el pez, registrar sus capturas, intercambiar consejos y consultar las reglas para su óblast — sin una app occidental en inglés que no sabe que su lago existe. La construimos.","Cada funcionalidad, del mapa Leaflet con pronóstico de mordida al asistente IA que responde en ucraniano con citas de fuentes, corre sobre una API Symfony 7.4 hablando con un único cluster Elasticsearch (sin SQL). La búsqueda RAG usa embeddings multilingües e5-large vía Hugging Face TEI, y OpenAI o Claude para la respuesta final."],"challengeTitle":"El Desafío","challengeText":"Construir una comunidad de pesca que haga bien siete cosas — mapa, pronóstico, feed social, reels, manual, asistente IA y moderación admin — en un solo servidor Hetzner, con un único motor de almacenamiento, sin SQL y con respuestas en ucraniano que citen la fuente.","solutionTitle":"La Solución","solutionText":"Elasticsearch como único datastore (cada índice con prefijo r_), Symfony 7.4 + PHP 8.4 para la API, Next.js 16 con App Router al frente, Leaflet para el radar, Recharts para la analítica admin y un fino AiClient que da frente tanto a OpenAI como a Claude. Embeddings de Hugging Face TEI (e5-large 1024-dim) impulsan búsqueda híbrida BM25 + kNN + RRF.","featuresLabel":"Características Clave","featuresTitle":"Construido para Pescadores Reales","features":[{"title":"Radar de Spots en Vivo","description":"Mapa Leaflet con capturas, spots, heatmap, capas de cuerpos de agua y profundidad; mapas base dark/satellite/relief y búsqueda de lugares por geocodificación."},{"title":"Pronóstico de Mordida","description":"Predicción por spot combinando presión, viento, temperatura del agua, fase lunar, solunar, índice Kp y nivel del río — todo en vivo, presentado como una puntuación legible."},{"title":"Asistente IA (RAG)","description":"Responde preguntas de pesca en ucraniano recuperando de r_knowledge con embeddings e5-large, citando fuentes [n] en la respuesta. Diseñado para nunca alucinar un spot."},{"title":"Backend de Un Solo Motor","description":"Un cluster Elasticsearch contiene todo — posts, spots, usuarios, embeddings, analítica. Sin SQL. Índices con prefijo r_, migraciones solo aditivas."},{"title":"Social + Gamificación","description":"Posts, comentarios, likes, reels (Wave), challenges con tareas auto-rastreadas, insignias, XP y niveles. Captura +30, post +10, comentario +5."},{"title":"Analítica con Privacidad","description":"middleware.ts registra cada navegación en r_analytics — sin IPs, sin PII. El dashboard admin separa humanos vs bots, tipo de contenido, países (rangos 7/30/90 días)."}],"screenshotsLabel":"Capturas de Pantalla","screenshotsTitle":"Véalo en Acción","desktopLabel":"Versión de Escritorio","mobileLabel":"Versión Móvil","techLabel":"Tecnología","techTitle":"Bajo el Capó","techDescription":"Un cluster Elasticsearch, una API Symfony, un frontend Next.js, una caja Hetzner. Cloudflare delante, TEI para embeddings, S3 de Hetzner para media. Aburrido a propósito — rápido, barato y fácil de razonar.","techItems":[{"icon":"▲","name":"Next.js 16","role":"App Router + SSR/RSC"},{"icon":"🐘","name":"Symfony 7.4","role":"API PHP 8.4"},{"icon":"🔍","name":"Elasticsearch","role":"Único datastore, prefijo r_"},{"icon":"🧠","name":"TEI + Claude / GPT","role":"RAG con citas"}],"ctaTitle":"¿Construyendo Comunidad + IA?","ctaDescription":"Desde portales community-first hasta asistentes IA con RAG, lanzamos plataformas que combinan usuarios reales, contenido real y una IA que conoce sus fuentes. Stack aburrido, resultados emocionantes.","ctaButton":"Contáctanos","ctaViewProjects":"Ver Todos los Proyectos"},"calllens":{"seoTitle":"CallLens — SaaS IA de Scoring de Llamadas de Ventas | Caso de Estudio DevMotion Studio","seoDescription":"Cómo construimos CallLens, un SaaS IA que ingiere llamadas de ventas, las transcribe con diarización, puntúa a cada agente contra un scorecard con LLM y construye embeddings para búsqueda semántica — sin GPU.","title":"CallLens","subtitle":"Caso de Estudio","heroDescription":"Cada llamada de ventas transcrita, puntuada y buscable. CallLens ingiere una llamada vía webhook firmado, la transcribe con diarización, puntúa a cada agente contra un scorecard configurable con un LLM de salida estructurada, construye embeddings para búsqueda semántica y sirve todo a través de un cabinet de analítica con Cube. Cero GPUs. Un solo servidor Hetzner.","visitSite":"Visitar Sitio","startProject":"Crear Algo Similar","stats":[{"value":"0","label":"GPUs Requeridas"},{"value":"1024","label":"Dimensiones Vector"},{"value":"5","label":"Etapas del Pipeline"},{"value":"≈€60","label":"Coste Infra Mensual"}],"aboutLabel":"Sobre el Proyecto","aboutTitle":"Coaching de Ventas que Realmente Lee las Llamadas","aboutText":["Casi todos los equipos de ventas graban sus llamadas. Casi ninguno las puntúa de forma consistente — los managers no tienen las horas, y los scorecards no se aplican solos. CallLens automatiza la lectura: cada llamada ingerida, cada agente puntuado, cada objeción buscable.","Lo construimos sobre el principio cheap-by-design: todo el trabajo pesado de IA pasa por APIs HTTP externas (Deepgram para STT, OpenAI para scoring + embeddings), sin GPU necesaria, un único servidor dedicado Hetzner basta. Interfaces independientes del proveedor permiten cambiar o autoalojar luego sin tocar la lógica de negocio."],"challengeTitle":"El Desafío","challengeText":"Puntuar llamadas de ventas de forma fiable con un LLM que nunca alucina una cita de evidencia, persistir embeddings de 1024-dim de cada turno para búsqueda semántica a escala, dar a los managers un cabinet de analítica con Cube — y hacer todo eso en un único servidor Hetzner con un stack Docker y sin GPU.","solutionTitle":"La Solución","solutionText":"Symfony 7.4 + PHP 8.5 sobre PostgreSQL 17 + pgvector (HNSW), API Platform generando OpenAPI 3.1, un pipeline Messenger que mueve cada llamada por estados transcribe → score → embed (idempotente, reintentable), Cube como capa semántica de analítica y un cabinet Next.js 15 encima. El scorer fuerza salida JSON estructurada y valida que cada cita de evidencia exista en el transcript real.","featuresLabel":"Características Clave","featuresTitle":"Construido para el Sales Manager","features":[{"title":"Webhook + Upload Manual","description":"Webhooks firmados con HMAC desde cualquier telefonía/CRM (Twilio, Binotel, Ringostat, Bitrix24) más subida manual vía REST. Idempotente por tenant + ID externo de la llamada."},{"title":"Transcripción con Diarización","description":"Deepgram para STT con etiquetado por canal para audio dual y diarización del proveedor para mono. Tiempos de palabra persistidos en cada turno."},{"title":"Scoring LLM con Evidencia","description":"Puntuación por criterio con esquema JSON estricto, una cita de evidencia por puntuación y la cita validada contra el transcript. Nada de scoring por vibes."},{"title":"Búsqueda Semántica","description":"Embeddings pgvector de 1024-dim en cada turno, índice HNSW, ANN tenant-scoped. Pregunta 'dónde manejó el agente las objeciones' y obtén los momentos reales."},{"title":"Analítica con Cube","description":"Dashboards pre-agregados sobre Postgres — score promedio por agente, tendencia en el tiempo, objeciones top, distribución de puntuaciones. Sin segundo motor de búsqueda para reportes."},{"title":"Retención de Audio Configurable","description":"keep, delete-after-processing o delete-after-N-days, por tenant. El scheduler corre nightly; transcripts y scores permanecen aunque el audio se haya borrado."}],"screenshotsLabel":"Capturas de Pantalla","screenshotsTitle":"Véalo en Acción","desktopLabel":"Versión de Escritorio","mobileLabel":"Versión Móvil","techLabel":"Tecnología","techTitle":"Bajo el Capó","techDescription":"Un stack Docker, una caja Hetzner, un Postgres. Todo el trabajo pesado de IA va por APIs externas detrás de interfaces estrechas — cambia de proveedor en una línea de configuración, o muévete a GPU autoalojada después cuando la curva de coste cruce (~215k minutos de audio/mes).","techItems":[{"icon":"🐘","name":"Symfony 7.4","role":"API PHP 8.5 + Workflow"},{"icon":"🐘","name":"PostgreSQL 17","role":"+ pgvector (HNSW)"},{"icon":"▲","name":"Next.js 15","role":"Landing + docs + cabinet"},{"icon":"📊","name":"Cube","role":"Analítica sobre Postgres"}],"ctaTitle":"¿Necesitas Herramientas AI-Native para tu Equipo?","ctaDescription":"Desde coaching de ventas hasta analítica de soporte, lanzamos productos IA que aciertan el trabajo pesado — salidas estructuradas estrictas, respuestas con evidencia y stacks que realmente puedes operar.","ctaButton":"Contáctanos","ctaViewProjects":"Ver Todos los Proyectos"}},"window":{"seoTitle":"Window Calculator Builder — Calculadora universal de precios | DevMotion","seoDescription":"Constructor auto-alojado de calculadoras de ventanas. Motor de precios JSON, configs editados en Monaco, editor de portada de admin, SSR con Express. En vivo en st-ai.com.ua.","badge":"SaaS · React + Express","title":"Window Calculator Builder","tagline":"Precios de ventanas JSON-driven para cualquier fabricante.","subtitle":"Constructor universal de calculadoras de ventanas que genera calculadoras de precios dinámicas desde configuración JSON. Construido para fabricantes y distribuidores de ventanas para lanzar calculadoras personalizadas y de marca en minutos.","visitSite":"Visitar st-ai.com.ua","chrome":"st-ai.com.ua","stats":[{"value":"JSON","label":"Config-driven"},{"value":"SSR","label":"Express + nginx"},{"value":"Monaco","label":"Editor in-browser"},{"value":"Lando","label":"Dev local paridad"}],"aboutLabel":"Acerca de","aboutTitle":"Un motor de calculadora, no una calculadora","aboutText":["Los distribuidores de ventanas necesitan lo mismo: un configurador que cotice un precio desde dimensiones, sistema de perfil, paquete de cristal, herrajes, tipo de apertura, accesorios y descuentos. Cada distribuidor lo construye desde cero. Este es el motor — una sola app React + Express cuya lógica de precios, branding, copy y contenido se controla por config JSON por tenant.","Un admin basado en Monaco permite a un no-desarrollador editar el config en el navegador con validación de schema completa. El mismo config alimenta tanto la calculadora del cliente como la página principal SSR (Express renderiza para SEO; React hidrata para interactividad).","Desplegado via GitHub Actions a un servidor Hetzner, Cloudflare delante. El primer tenant — distribuidor de perfiles Steko / IDEAL / Deceuninck — está en producción en st-ai.com.ua."],"challengeTitle":"Desafío","challengeText":"Los distribuidores necesitan calculadoras a medida cada trimestre (nuevas líneas de perfil, nuevos paquetes de cristal, nuevos descuentos de fabricante). Hard-codear cada variante costaría una semana de desarrollo por tenant.","solutionTitle":"Solución","solutionText":"Una sola app React + Express cuya lógica de precios completa (tipos de ventana, perfiles, paquetes de cristal, dimensiones, opciones, fórmulas, moneda) vive en un config JSON por tenant. Nuevo tenant = nuevo archivo de config. Editor Monaco + validación de schema en el admin.","featuresLabel":"Qué se entrega","featuresTitle":"Seis piezas que lo mantienen unido","features":[{"title":"Calculadora JSON-driven","description":"Cada tipo de ventana, perfil, paquete de cristal, dimensión y fórmula de precio vive en un archivo de config. Nuevo tenant = un JSON, sin cambios de código."},{"title":"Editor Monaco de config","description":"Editor JSON in-browser con validación de schema, resaltado de sintaxis y preview en vivo. Los no-desarrolladores pueden editar un config desde el panel admin."},{"title":"Homepage SSR","description":"Express renderiza la página principal en el servidor para SEO; React hidrata encima para interactividad. Secciones de portada por tenant (catálogo de perfiles, paquetes de cristal, galería, contacto)."},{"title":"Editor admin de portada","description":"Editor de secciones drag-to-reorder con uploads de imagen (cap 10 MB), preview en vivo, y contenido por sección."},{"title":"Auto-deploy via GitHub Actions","description":"Push a main → typecheck + build + rsync a Hetzner + reload de nginx. Cert origin de Cloudflare para HTTPS. Un solo paso SSH."},{"title":"Paridad de dev local con Lando","description":"Mismo stack nginx + Node + JSON storage corre localmente via Lando. App en window.lndo.site, API en api.window.lndo.site. Cero deriva entre máquinas."}],"techLabel":"Stack","techTitle":"React 18 + Express 4 + Monaco","techDescription":"Stack ajustado y aburrido a propósito. Vite para la SPA, Express para SSR + API CRUD de JSON, Tailwind para styling, Zustand para state, Monaco para el editor de config.","tech":[{"icon":"⚛️","name":"React 18 + TypeScript","role":"SPA + admin · Zustand · React Router"},{"icon":"⚡","name":"Vite 5","role":"Build frontend · HMR"},{"icon":"🟢","name":"Express 4","role":"API CRUD JSON + rutas SSR (/ssr/*)"},{"icon":"🎨","name":"Tailwind v3 + Lucide","role":"Tema por tenant via CSS vars"},{"icon":"📝","name":"Editor Monaco","role":"Editor JSON in-admin con schema"},{"icon":"☁️","name":"Hetzner + Cloudflare","role":"Cert origin, deploy GitHub Actions"}],"ctaTitle":"¿Necesitas una calculadora para tu línea de productos?","ctaDescription":"Ventanas, puertas, persianas, gabinetes de cocina, prefab custom — cualquier cosa con dimensiones × material × opciones × descuento. JSON-driven significa nuevos tenants en un día.","ctaStart":"Empezar un proyecto","ctaView":"Ver otros trabajos"},"doors":{"seoTitle":"Doors.city — Marketplace Drupal de puertas + automatización Google Ads | DevMotion","seoDescription":"Sitio de comercio Drupal multi-producto para 109 modelos de puertas, junto con automatización Google Ads en Symfony 7 que corre campañas Search controladas por costo contra una región ucraniana.","badge":"Drupal commerce · Automatización Google Ads","title":"Doors.city","tagline":"Marketplace de puertas + automatización de ads controlada por costo.","subtitle":"Sitio de comercio Drupal para puertas blindadas e interiores con configurador custom, junto con automatización Google Ads en Symfony 7 que corre campañas Search controladas por costo contra una región ucraniana. Objetivo: CPC < 3 UAH, CPA < 120 UAH, cero spend desperdiciado.","visitSite":"Visitar doors.city","chrome":"doors.city","stats":[{"value":"109","label":"Modelos de puertas"},{"value":"< 3 ₴","label":"CPC objetivo"},{"value":"< 120 ₴","label":"CPA objetivo"},{"value":"0","label":"Spend desperdiciado"}],"aboutLabel":"Acerca de","aboutTitle":"Marketplace + motor de ads, cableados juntos","aboutText":["Doors.city es un sitio de comercio Drupal para puertas blindadas e interiores con configurador custom, grid de precios de entrega, y un constructor (React) que permite a compradores diseñar una puerta antes de ordenar. El catálogo expone un feed `/sklad-export.json` para herramientas downstream.","Sobre ese catálogo se sienta una app Symfony 7 de automatización Google Ads que ingesta el feed JSON, corre `KeywordPlanIdeaService` contra los nombres de producto, genera candidatos de campaña + ad-group + ad-copy, y corre un optimizador nocturno que pausa cualquier keyword con ≥ 30 clicks y 0 conversiones.","El objetivo no es \"publicar ads\" — es el CPA más bajo alcanzable por un operador en una región ucraniana. Manual CPC con biblioteca de keywords negativas le gana a PMax hasta que tengas ≥ 30 conversiones/mes para alimentar Target CPA."],"challengeTitle":"Desafío","challengeText":"Correr Google Search Ads rentables para 109 SKUs contra una región ucraniana sin un marketer pago — y mantener spend desperdiciado (≥30 clicks, 0 conversiones) en cero, automáticamente.","solutionTitle":"Solución","solutionText":"Drupal commerce + feed JSON de productos + orquestador Google Ads en Symfony 7. Keyword Planner via google-ads-php, biblioteca de negativos, copy RSA generado por Claude API (operador confirma antes de publicar), optimizador nocturno de bids, y tracking de conversiones gtag.js en la tienda.","featuresLabel":"Qué está vivo (o entregándose)","featuresTitle":"Nueve piezas que lo mantienen unido","features":[{"title":"Catálogo Drupal commerce","description":"109 modelos de puertas con taxonomía completa (material, serie, dimensiones, niveles de precio, fotos). PHP 8.3, MariaDB, multi-idioma ready."},{"title":"Configurador de puertas","description":"SPA React montada en el sitio Drupal permite a compradores configurar dimensiones, acabado, cristal y herrajes antes de cotizar. Comparte taxonomía Drupal."},{"title":"Feed /sklad-export.json","description":"Endpoint único expone el catálogo completo con deltas incrementales `?since=`. Usado por el orquestador Symfony y Google Merchant Center (fase 3)."},{"title":"Orquestador ads Symfony 7","description":"PHP 8.3 + PostgreSQL 16 corriendo en una caja Hetzner separada de €4. Modelo de datos multi-tenant: cuentas Google Ads arbitrarias × feeds fuente."},{"title":"UI Keyword Analyzer","description":"KeywordPlanIdeaService + GenerateKeywordHistoricalMetrics envueltos en UI admin mostrando volumen / rango CPC / competencia / tendencia por keyword."},{"title":"Biblioteca de keywords negativas","description":"Negativos curados (\"барато\", \"usado\", \"reparación\") + overrides por campaña + auto-sugerencias de reportes de spend desperdiciado."},{"title":"Asistente AI de ad copy","description":"Claude API genera candidatos de headline/descripción RSA desde metadata de producto. Operador elige de shortlist; nada se publica sin confirmación."},{"title":"Motor de optimización de bids","description":"Runner nocturno de reglas: sube / baja / pausa bids por CPA, ROAS, CTR, quality score. Wasted-spend killer: 30 clicks 0 conversiones → auto-pausa."},{"title":"Tracking de conversiones","description":"gtag.js en doors.city trackea clicks en teléfono, envíos de formulario, y vistas de página gracias. Realimenta Target CPA cuando volumen cruza 30 conv/mes."}],"techLabel":"Stack","techTitle":"Dos cajas, un feed","techDescription":"doors.city corre en el host Drupal existente. La automatización Google Ads está aislada en su propia caja Hetzner CX22 de €4 para que un deploy Symfony no tumbe la tienda. PostgreSQL 16, gRPC via php-grpc a Google Ads API v18+.","tech":[{"icon":"🚪","name":"Drupal 10","role":"Catálogo commerce · taxonomía · PHP 8.3"},{"icon":"⚛️","name":"Constructor React","role":"Configurador de puertas en Drupal"},{"icon":"🔌","name":"/sklad-export.json","role":"Feed incremental de catálogo"},{"icon":"🐘","name":"Symfony 7.1","role":"Orquestador Google Ads · Doctrine ORM"},{"icon":"🗄️","name":"PostgreSQL 16","role":"Mirror de campañas + productos"},{"icon":"📊","name":"google-ads-php v18+","role":"gRPC · Keyword Planner · Search Ads"},{"icon":"🤖","name":"Claude API","role":"Generación de candidatos RSA"},{"icon":"📈","name":"gtag.js","role":"Conversiones teléfono + form + gracias"},{"icon":"☁️","name":"Hetzner CX22","role":"Caja dedicada €4/mes · aislada de Drupal"},{"icon":"🇺🇦","name":"UI ucraniana","role":"uk_UA en todo · inglés solo en logs"}],"ctaTitle":"¿Necesitas ads rentables sobre un catálogo ajustado?","ctaDescription":"La mayoría del tooling Google Ads asume que tienes un equipo de marketing y presupuestos escala-PMax. Este stack está construido para un operador y una región — el formato más barato controlable, automatizado donde no rompe atribución.","ctaStart":"Empezar un proyecto","ctaView":"Ver otros trabajos"}},"seo":{"/portfolio/polylog":{"title":"Polylog — Caso de estudio de SaaS de chatbots multiagente | DevMotion","description":"Plataforma de chatbots multi-tenant y multiagente — RAG híbrido en Elasticsearch, constructor visual de flujos, widget integrable, facturación Stripe.","keywords":"Polylog, chatbot SaaS, RAG, Elasticsearch, FastAPI, Next.js, multi-agent, multi-tenant, DevMotion Studio","ogTitle":"Polylog — multi-agent chatbot SaaS","ogDescription":"Plataforma de chatbots multi-tenant y multiagente — RAG híbrido en Elasticsearch, constructor visual de flujos, widget integrable, facturación Stripe.","ogImage":"/images/og/case-polylog.jpg"},"/":{"title":"DevMotion Studio - Agencia de Desarrollo Web | Drupal, React, Shopify","description":"Transformamos ideas de negocio en productos digitales que generan ganancias. Desarrollo web con Drupal, React y Shopify. 50+ proyectos exitosos. Ciclo completo en 4-8 semanas.","keywords":"agencia desarrollo web, desarrollo Drupal, desarrollo React, desarrollo Shopify, aplicaciones web, CMS empresarial, desarrollo e-commerce, España","ogTitle":"DevMotion Studio - Agencia de Desarrollo Web","ogDescription":"Transforma tus ideas de negocio en productos digitales. Expertos en Drupal, React, Shopify con 50+ proyectos exitosos.","ogImage":"/images/og/home-es.jpg"},"/projects":{"title":"Nuestros Proyectos - Portfolio | DevMotion Studio","description":"Explora 50+ proyectos de desarrollo web exitosos. Sitios corporativos, tiendas e-commerce, portales web y aplicaciones personalizadas. Resultados reales para negocios reales.","keywords":"portfolio desarrollo web, proyectos Drupal, proyectos React, proyectos e-commerce, sitios corporativos, portales web","ogTitle":"Nuestros Proyectos - Portfolio DevMotion Studio","ogDescription":"50+ proyectos exitosos. Sitios corporativos, e-commerce, portales y aplicaciones personalizadas.","ogImage":"/images/og/projects-es.jpg"},"/price":{"title":"Precios y Servicios - Costo Desarrollo Web | DevMotion Studio","description":"Precios transparentes de desarrollo web. Landing pages desde $1,500, sitios corporativos desde $5,000, e-commerce desde $10,000. Precio fijo, sin sorpresas.","keywords":"precios desarrollo web, costo sitio web, precio Drupal, precio React, costo e-commerce, precio landing page","ogTitle":"Precios Desarrollo Web - DevMotion Studio","ogDescription":"Precios transparentes para desarrollo web. Landing pages, sitios corporativos, e-commerce. Precio fijo.","ogImage":"/images/og/price-es.jpg"},"/contact":{"title":"Contacto - Obtén una Estimación Gratis | DevMotion Studio","description":"Listo para iniciar tu proyecto? Contacta DevMotion Studio para una estimación gratis en 24 horas. Servicios profesionales de desarrollo web en Europa.","keywords":"contactar desarrollador web, consulta desarrollo web, estimación gratis, consulta proyecto","ogTitle":"Contacta DevMotion Studio","ogDescription":"Obtén una estimación gratis en 24 horas. Hablemos de tus necesidades de desarrollo web.","ogImage":"/images/og/contact-es.jpg"},"/services/ai-integration":{"title":"Servicios de Integración IA — Claude, OpenAI, Búsqueda Semántica | DevMotion","description":"Integración IA en producción para productos reales. Anthropic Claude, OpenAI, Google AI y OpenRouter. Parsers custom, búsqueda semántica con embeddings, pipelines RAG. No un demo — funcionalidades que se lanzan.","keywords":"integración IA, Claude API, Anthropic SDK, integración OpenAI, Google AI, OpenRouter, búsqueda semántica, embeddings, pipeline RAG, agencia desarrollo IA","ogTitle":"Servicios de Integración IA — Funciones IA en Producción | DevMotion","ogDescription":"Anthropic Claude, OpenAI, búsqueda semántica con embeddings. Integración IA hecha correctamente.","ogImage":"/images/og/tech-ai-integration-es.jpg"},"/services/nextjs":{"title":"Servicios de Desarrollo Next.js — Framework React Moderno | DevMotion","description":"Desarrollo Next.js 16 para producción. Server Components, SSR, SSG y edge runtime. Dashboards SaaS, plataformas de contenido y sitios marketing con Core Web Vitals rápidos.","keywords":"desarrollo Next.js, Next.js 16, React Server Components, App Router, SSR, SSG, edge runtime, deploy Vercel, framework React moderno","ogTitle":"Servicios de Desarrollo Next.js | DevMotion Studio","ogDescription":"React moderno con SSR, edge runtime y Server Components. Rápido por defecto. Listo para producción.","ogImage":"/images/og/tech-nextjs-es.jpg"},"/services/fastapi":{"title":"Servicios de Desarrollo FastAPI — Python para IA y APIs | DevMotion","description":"Desarrollo FastAPI para servicios de inferencia IA, APIs de búsqueda semántica y backends Python de alto rendimiento. HTTP async, docs OpenAPI, todo el toolkit ML a un import de distancia.","keywords":"desarrollo FastAPI, framework web Python, API inferencia IA, Python async, OpenAPI Swagger, API machine learning, sentence-transformers, API embeddings","ogTitle":"Servicios de Desarrollo FastAPI | DevMotion Studio","ogDescription":"Backend Python para servicios IA y APIs de alto rendimiento. Async moderno, auto-docs, ecosistema ML a un import.","ogImage":"/images/og/tech-fastapi-es.jpg"},"/services/drupal":{"title":"Servicios de Desarrollo Drupal - CMS Empresarial | DevMotion","description":"Desarrollo Drupal experto para proyectos empresariales. Seguridad bancaria, flexibilidad ilimitada, soporte a largo plazo. Construye sitios web escalables con Drupal CMS.","keywords":"desarrollo Drupal, agencia Drupal, CMS empresarial, Drupal 10, módulos Drupal, migración Drupal","ogTitle":"Servicios de Desarrollo Drupal - DevMotion Studio","ogDescription":"Desarrollo Drupal empresarial. Seguridad bancaria, flexibilidad ilimitada, arquitectura escalable.","ogImage":"/images/og/tech-drupal-es.jpg"},"/services/react":{"title":"Servicios de Desarrollo React - Apps Web Modernas | DevMotion","description":"Desarrollo React profesional para aplicaciones web modernas. Soluciones rápidas, interactivas y escalables. SPAs, dashboards e interfaces complejas.","keywords":"desarrollo React, agencia React, desarrollo React.js, aplicaciones SPA, desarrollo frontend","ogTitle":"Servicios de Desarrollo React - DevMotion Studio","ogDescription":"Desarrollo React moderno para aplicaciones web rápidas e interactivas. SPAs, dashboards e interfaces.","ogImage":"/images/og/tech-react-es.jpg"},"/services/shopify":{"title":"Servicios de Desarrollo Shopify - Soluciones E-commerce | DevMotion","description":"Desarrollo Shopify personalizado para tiendas online. Personalización de temas, desarrollo de apps, servicios de migración. Lanza tu e-commerce con expertos.","keywords":"desarrollo Shopify, agencia Shopify, desarrollo temas Shopify, desarrollo apps Shopify, desarrollo e-commerce","ogTitle":"Servicios de Desarrollo Shopify - DevMotion Studio","ogDescription":"Desarrollo Shopify personalizado para tiendas online exitosas. Temas, apps y migraciones.","ogImage":"/images/og/tech-shopify-es.jpg"},"/services/symfony":{"title":"Servicios de Desarrollo Symfony - Framework PHP | DevMotion","description":"Desarrollo Symfony profesional para aplicaciones web complejas. Desarrollo de APIs, soluciones empresariales, aplicaciones PHP con arquitectura moderna.","keywords":"desarrollo Symfony, agencia Symfony, framework PHP, desarrollo API, PHP empresarial, desarrollo backend","ogTitle":"Servicios de Desarrollo Symfony - DevMotion Studio","ogDescription":"Desarrollo Symfony empresarial para aplicaciones web complejas y APIs.","ogImage":"/images/og/tech-symfony-es.jpg"},"/services/tailwind":{"title":"Desarrollo Tailwind CSS - Diseño UI Moderno | DevMotion Studio","description":"Desarrollo experto en Tailwind CSS para sitios web modernos y responsivos. Desarrollo rápido, consistencia perfecta, CSS de producción mínimo.","keywords":"desarrollo Tailwind CSS, framework CSS, diseño responsivo, desarrollo UI, diseño frontend","ogTitle":"Desarrollo Tailwind CSS - DevMotion Studio","ogDescription":"Desarrollo Tailwind CSS moderno para sitios web hermosos y responsivos.","ogImage":"/images/og/tech-tailwind-es.jpg"},"/services/hetzner":{"title":"Hosting Hetzner y Servicios DevOps | DevMotion Studio","description":"Configuración profesional de servidores Hetzner y servicios DevOps. Configuración de servidores, automatización de despliegues, monitoreo. Hosting europeo GDPR.","keywords":"hosting Hetzner, servicios DevOps, configuración servidor, automatización despliegue, hosting nube, hosting GDPR","ogTitle":"Hosting Hetzner y DevOps - DevMotion Studio","ogDescription":"Configuración profesional de Hetzner y DevOps. Servidores, despliegue y mantenimiento.","ogImage":"/images/og/tech-hetzner-es.jpg"},"/portfolio/tripsquick":{"title":"TripsQuick — Plataforma de aguas de pesca en EE. UU. con mapas de profundidad e IA | DevMotion","description":"Cómo construimos TripsQuick: nueve fuentes públicas en una página por lago o río, mapas de profundidad de sondeos oficiales de USACE y NOAA, 267 especies, previsión de picada y un asistente con IA.","keywords":"portal de viajes, desarrollo web viajes, guías de destino, sitio React viajes, caso de estudio DevMotion Studio","ogTitle":"TripsQuick — Plataforma de aguas de pesca en EE. UU. con mapas de profundidad e IA","ogDescription":"Cómo construimos TripsQuick: nueve fuentes públicas en una página por lago o río, mapas de profundidad de sondeos oficiales de USACE y NOAA, 267 especies, previsión de picada y un asistente con IA.","ogImage":"/images/og/case-tripsquick.jpg"},"/portfolio/sonrisa-blanca":{"title":"Sonrisa Blanca — Web Estudio Blanqueamiento Dental | Caso de Estudio DevMotion Studio","description":"Cómo diseñamos y construimos un sitio web atrevido y enfocado en conversión para Sonrisa Blanca — un estudio de blanqueamiento dental cosmético en Cartagena, España.","keywords":"web blanqueamiento dental, diseño web dental, diseño landing page, optimización conversión, caso de estudio DevMotion Studio","ogTitle":"Sonrisa Blanca — Estudio Blanqueamiento Dental | DevMotion Studio","ogDescription":"Una landing page atrevida y de alta conversión para un estudio de blanqueamiento cosmético. Resultados reales, reservas sin fricción.","ogImage":"/images/og/case-sonrisa-blanca.jpg"},"/portfolio/settle":{"title":"Settle — SaaS de Facturación Crypto para Freelancers | Caso de Estudio DevMotion Studio","description":"Cómo construimos Settle, una plataforma de facturación crypto no custodial. Pagos en USDC/USDT/DAI en Base, Polygon, Arbitrum y Optimism.","keywords":"facturación crypto, pagos stablecoin, Symfony Web3, SaaS freelancer, pagos USDC, desarrollo EVM L2, caso de estudio DevMotion Studio","ogTitle":"Settle — SaaS de Facturación Crypto | DevMotion Studio","ogDescription":"UX de nivel Stripe para facturación en stablecoins. No custodial. En vivo en Base, Polygon, Arbitrum, Optimism.","ogImage":"/images/og/case-settle.jpg"},"/portfolio/mariasydorchuk":{"title":"Clínica María Sydorchuk — Web Multilingüe de Medicina Estética | Caso de Estudio DevMotion Studio","description":"Cómo construimos un sitio multilingüe para una clínica de medicina estética en Cartagena, España — Next.js 16, soporte RTL completo para árabe, comparador antes/después y un flujo de reserva que convierte.","keywords":"web medicina estética, Next.js 16, RTL árabe, sitio multilingüe, Cartagena España, web clínica, next-intl, Tailwind v4, caso de estudio DevMotion Studio","ogTitle":"Clínica María Sydorchuk — Web Multilingüe | DevMotion Studio","ogDescription":"Cuatro idiomas, dos sistemas de escritura, una marca elegante. Next.js 16 con RTL árabe completo y reserva sin fricción.","ogImage":"/images/og/case-mariasydorchuk.jpg"},"/portfolio/rybalka":{"title":"Rybalka Club — Comunidad de Pesca + Asistente IA | Caso de Estudio DevMotion Studio","description":"Cómo construimos Rybalka Club para Ucrania — una comunidad de pesca con mapa en vivo, pronóstico de mordida, feed social y un asistente IA con base de conocimiento multilingüe y citas de fuentes.","keywords":"comunidad pesca Ucrania, Elasticsearch único, asistente IA RAG, embeddings e5-large, Symfony 7.4, Next.js 16, mapa Leaflet, búsqueda semántica, caso de estudio DevMotion Studio","ogTitle":"Rybalka Club — Comunidad de Pesca + Asistente IA | DevMotion","ogDescription":"Radar de pesca en vivo, pronóstico de mordida, asistente IA con citas de fuentes — sobre un único cluster Elasticsearch, sin SQL.","ogImage":"/images/og/case-rybalka.jpg"},"/portfolio/calllens":{"title":"CallLens — SaaS IA de Scoring de Llamadas de Ventas | Caso de Estudio DevMotion Studio","description":"Cómo construimos CallLens, un SaaS IA que ingiere llamadas de ventas, las transcribe con diarización, puntúa cada agente contra un scorecard con LLM y construye embeddings para búsqueda semántica — sin GPU.","keywords":"coaching ventas IA, SaaS scoring llamadas, diarización Deepgram, scoring LLM, pgvector HNSW, Symfony 7.4, analítica Cube, búsqueda semántica, caso de estudio DevMotion Studio","ogTitle":"CallLens — SaaS IA Scoring de Llamadas | DevMotion Studio","ogDescription":"Cada llamada de ventas transcrita, puntuada y buscable. Scoring LLM con evidencia + búsqueda semántica pgvector. Sin GPU.","ogImage":"/images/og/case-calllens.jpg"},"/portfolio/window":{"title":"Window Calculator Builder — Calculadora universal de precios | DevMotion","description":"Constructor auto-alojado de calculadoras de ventanas. Motor de precios JSON, configs editados en Monaco, editor de portada de admin, SSR con Express. En vivo en st-ai.com.ua.","keywords":"window calculator, configurator, pricing, JSON config, React, Express, Monaco, SaaS, st-ai.com.ua","ogTitle":"Window Calculator Builder — Precios de ventanas JSON-driven para cualquier fabricante.","ogDescription":"Constructor universal de calculadoras de ventanas que genera calculadoras de precios dinámicas desde configuración JSON. Construido para fabricantes y distribuidores de ventanas para lanzar calculador","ogImage":"/images/og/case-window.jpg"},"/portfolio/doors":{"title":"Doors.city — Marketplace Drupal de puertas + automatización Google Ads | DevMotion","description":"Sitio de comercio Drupal multi-producto para 109 modelos de puertas, junto con automatización Google Ads en Symfony 7 que corre campañas Search controladas por costo contra una región ucraniana.","keywords":"doors.city, Drupal commerce, Google Ads, Symfony, Ukrainian doors, configurator, bid optimisation","ogTitle":"Doors.city — Marketplace de puertas + automatización de ads controlada por costo.","ogDescription":"Sitio de comercio Drupal para puertas blindadas e interiores con configurador custom, junto con automatización Google Ads en Symfony 7 que corre campañas Search controladas por costo contra una región","ogImage":"/images/og/case-doors.jpg"}}}