[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"technologies":3,"portfolio-projects":167},[4,10,15,21,26,32,38,43,48,53,58,63,68,73,77,82,87,92,97,103,108,113,118,123,128,133,138,143,147,152,157,162],{"title":5,"description":6,"slug":7,"category":8,"icon":9},"Android","Todas las apps que entregamos llegan a Android: APIs de plataforma, ejecución en segundo plano, permisos y los requisitos de tienda que traen consigo.","android","framework","logos:android-icon",{"title":11,"description":12,"slug":13,"category":8,"icon":14},"Angular","El framework de frontend en el que trabajamos cuando un producto ya es Angular: una estructura con todo incluido que encaja en apps grandes y de vida larga.","angular","logos:angular-icon",{"title":16,"description":17,"slug":18,"category":19,"icon":20},"Dart","El lenguaje en el que está escrita cada app Flutter que entregamos: null safety robusto, pattern matching de verdad y un compilador que apunta a nativo y a la web.","dart","language","logos:dart",{"title":22,"description":23,"slug":24,"category":8,"icon":25},"Django","El framework de Python que usamos cuando un producto necesita administración, autenticación y un modelo de datos real desde el primer día.","django","logos:django-icon",{"title":27,"description":28,"slug":29,"category":30,"icon":31},"Docker","Cada servicio que construimos se publica como contenedor, así que lo que corre en un portátil, en CI y en producción es un solo artefacto y no tres.","docker","infrastructure","logos:docker-icon",{"title":33,"description":34,"slug":35,"category":36,"icon":37},"Fastlane","La automatización de releases móviles: firma, builds y subidas a las tiendas desde CI, no desde el portátil de un ingeniero el día del lanzamiento.","fastlane","tools","logos:fastlane",{"title":39,"description":40,"slug":41,"category":8,"icon":42},"Flutter","Nuestro stack móvil principal desde 2018: una base de código Dart que llega a iOS, Android, web y escritorio sin un equipo por plataforma.","flutter","logos:flutter",{"title":44,"description":45,"slug":46,"category":36,"icon":47},"Git","Todos los proyectos que tocamos viven en Git: pull requests revisadas, CI en cada rama y un historial que sigue teniendo sentido meses después.","git","logos:git-icon",{"title":49,"description":50,"slug":51,"category":19,"icon":52},"Go","Nuestro lenguaje de backend para APIs en tiempo real y servicios bajo carga: binarios pequeños, compilaciones rápidas y concurrencia que sigue siendo legible.","go","logos:gopher",{"title":54,"description":55,"slug":56,"category":30,"icon":57},"Google Cloud","La nube donde corren nuestras cargas de producción: Kubernetes gestionado, almacenamiento y red, sin servidores hechos a mano que nadie quiere mantener.","gcp","logos:google-cloud",{"title":59,"description":60,"slug":61,"category":36,"icon":62},"Gradle","El sistema de build por el que pasa cada release de Android: product flavours, configuraciones de firma y el cableado de dependencias bajo una app Flutter.","gradle","logos:gradle",{"title":64,"description":65,"slug":66,"category":30,"icon":67},"Helm","Cómo empaquetamos un despliegue de Kubernetes: servicio, configuración, secretos e ingress como una unidad versionada que se puede promover y revertir.","helm","logos:helm",{"title":69,"description":70,"slug":71,"category":19,"icon":72},"Kotlin","A lo que recurrimos cuando una app Flutter necesita Android de verdad por debajo: platform channels, trabajo en segundo plano e integraciones con SDK nativos.","kotlin","logos:kotlin-icon",{"title":74,"description":75,"slug":76,"category":8,"icon":72},"Kotlin Multiplatform","Compartir la lógica de negocio entre iOS y Android mientras cada plataforma conserva su UI nativa: la alternativa cuando Flutter no encaja.","kmp",{"title":78,"description":79,"slug":80,"category":30,"icon":81},"Kubernetes","Cómo ejecutamos servicios en producción: despliegues con Helm, rollouts reversibles y escalado que no necesita a nadie a las 3 de la mañana.","kubernetes","logos:kubernetes",{"title":83,"description":84,"slug":85,"category":30,"icon":86},"NATS","Mensajería ligera entre servicios: publicación\u002Fsuscripción y petición\u002Frespuesta sin el peso operativo de un clúster de broker completo.","nats","logos:nats-icon",{"title":88,"description":89,"slug":90,"category":8,"icon":91},"Nuxt","Vue con renderizado en servidor, enrutado y SEO resueltos: así hacemos sitios y apps web que deben ser rápidas e indexables en la primera carga.","nuxt","logos:nuxt-icon",{"title":93,"description":94,"slug":95,"category":19,"icon":96},"PHP","Donde trabajamos con un backend PHP ya existente: extenderlo, integrarse con él y construir los clientes móviles y web a los que tiene que servir.","php","logos:php",{"title":98,"description":99,"slug":100,"category":101,"icon":102},"PostgreSQL","Nuestra base de datos por defecto, salvo que un producto dé una razón concreta para no usarla: del diseño del esquema al ajuste de índices.","postgres","database","logos:postgresql",{"title":104,"description":105,"slug":106,"category":19,"icon":107},"Python","Nuestro lenguaje para backends, trabajo con datos e integraciones de IA, incluidos los bindings de Python que publicamos para nuestras propias herramientas en Rust.","python","logos:python",{"title":109,"description":110,"slug":111,"category":8,"icon":112},"React","La librería de frontend en la que trabajamos cuando un producto ya es React: componentes, hooks y el ecosistema que ha crecido a su alrededor.","react","logos:react",{"title":114,"description":115,"slug":116,"category":101,"icon":117},"Redis","Donde ponemos los datos que tienen que ser rápidos y se pueden reconstruir: cachés, sesiones, límites de tasa y las colas tras las rutas lentas de un producto.","redis","logos:redis",{"title":119,"description":120,"slug":121,"category":19,"icon":122},"Ruby","El lenguaje de nuestra automatización de releases móviles: lanes de Fastlane, acciones a medida y el pegamento de CI que sube builds a las tiendas.","ruby","logos:ruby",{"title":124,"description":125,"slug":126,"category":19,"icon":127},"Rust","A donde vamos cuando importan tanto el rendimiento como la corrección: renderizado de documentos, herramientas de CLI y servicios que tienen que ser rápidos y predecibles.","rust","simple-icons:rust",{"title":129,"description":130,"slug":131,"category":101,"icon":132},"SQLite","La base de datos que viaja dentro de la app: cachés locales, almacenamiento offline-first y todo lo que tiene que seguir funcionando sin red.","sqlite","logos:sqlite",{"title":134,"description":135,"slug":136,"category":8,"icon":137},"Strapi","Un CMS headless para cuando los editores necesitan ser dueños del contenido: una administración de verdad y una API limpia, sin construirlas desde cero.","strapi","logos:strapi-icon",{"title":139,"description":140,"slug":141,"category":19,"icon":142},"Swift","A lo que recurrimos cuando una app Flutter necesita iOS de verdad por debajo: platform channels, integraciones con SDK nativos, widgets y App Clips.","swift","logos:swift",{"title":144,"description":145,"slug":146,"category":8,"icon":142},"SwiftUI","El framework de UI de Apple, donde construimos las superficies nativas que una app Flutter no puede tener: widgets, App Clips y extensiones.","swiftui",{"title":148,"description":149,"slug":150,"category":8,"icon":151},"Tailwind CSS","Cómo damos estilo a cada frontend que construimos: clases de utilidad y design tokens en lugar de una hoja de estilos que solo crece y nunca se borra.","tailwind","logos:tailwindcss-icon",{"title":153,"description":154,"slug":155,"category":19,"icon":156},"TypeScript","Lo predeterminado para todo lo que escribimos para el navegador y para servicios Node: tipos que detectan errores de integración antes de llegar a una revisión.","typescript","logos:typescript-icon",{"title":158,"description":159,"slug":160,"category":8,"icon":161},"Vue","Nuestro framework de frontend para paneles de administración, cuadros de mando y apps web que deben seguir siendo mantenibles durante años.","vue","logos:vue",{"title":163,"description":164,"slug":165,"category":36,"icon":166},"Whisper","El modelo de reconocimiento de voz de código abierto de OpenAI: el motor de transcripción detrás de la entrada por voz, que funciona como servicio de backend y también en el propio dispositivo.","whisper","simple-icons:openai",[168,180,191,205,216,227,238,249],{"title":169,"description":170,"image":171,"technologies":173,"categories":174,"client":176,"id":177,"date":178,"slug":179},"Arcana","Arcana es una app de tarot con IA que ofrece lecturas de cartas personalizadas a través de una interfaz de chat. Construimos el cliente Flutter poniendo el foco en el rendimiento de renderizado: scroll fluido entre miles de mensajes y renderizado de markdown en tiempo real recibido por SSE.",{"alt":169,"url":172},"\u002Fprojects\u002Farcana\u002Fhero.webp",[41,18],[175],"mobile",null,"projects_es\u002Fportfolio\u002Farcana.md","2026-02-10","arcana",{"title":181,"description":182,"image":183,"technologies":185,"categories":186,"client":187,"id":188,"date":189,"slug":190},"YouMi","YouMi es un servicio de terapia online con psicólogo. En la aplicación puedes elegir el especialista que mejor te encaje, agendar una sesión y reprogramarla o cancelarla si te cambian los planes. También hay un chat con el psicólogo, para aclarar dudas o recibir enlaces a recursos útiles fuera de las sesiones.",{"alt":181,"url":184},"\u002Fprojects\u002Fyoumi\u002Fhero.webp",[41,18],[175],"YouMi LLC","projects_es\u002Fportfolio\u002Fyoumi.md","2025-08-05","youmi",{"title":192,"description":193,"image":194,"technologies":197,"categories":198,"client":201,"id":202,"date":203,"slug":204},"Plataforma de apps de cashback y fidelización","Una plataforma de cashback y fidelización de marca blanca para comercios físicos: más de 15 apps móviles de marca desde una base de código Flutter, una app para comercios donde configurar reglas de cashback a medida (cumpleaños, invitación, por compra) y una interfaz de administración que lanza nuevas apps de marca automáticamente.",{"alt":195,"url":196},"Plataforma de apps de cashback y fidelización: material visual reservado por NDA","\u002Fprojects\u002Fcashback-loyalty-platform\u002Fhero.webp",[41,18,155,90,160,95,100,121,35],[175,199,200],"backend","web","nda","projects_es\u002Fportfolio\u002Fcashback-loyalty-platform.md","2025-08-01","cashback-loyalty-platform",{"title":206,"description":207,"image":208,"technologies":210,"categories":211,"client":212,"id":213,"date":214,"slug":215},"OneTwoDo","OneTwoDo es una app de marketplace de servicios locales multiplataforma construida en Flutter. Los usuarios publican y consultan anuncios de servicios cotidianos —limpieza, reparaciones, pintura, fontanería, mudanzas, belleza y más— con descripciones localizadas, precios flexibles y fotos, y luego contactan con proveedores cercanos.",{"alt":206,"url":209},"\u002Fprojects\u002Fonetwodo\u002Fhero.webp",[41,18],[175],"Perform Connect Studios S.L.","projects_es\u002Fportfolio\u002Fonetwodo.md","2024-09-23","onetwodo",{"title":217,"description":218,"image":219,"technologies":221,"categories":222,"client":223,"id":224,"date":225,"slug":226},"Jepta","Jepta es una app de comunicación hiperlocal para los barrios alemanes. Los vecinos hablan en chats vinculados a su calle o a su edificio, los negocios locales llevan canales con publicaciones, horarios y comentarios, y todo lo que ve el usuario se ordena por cercanía real. Construimos la app Flutter para iOS y Android: una superficie de pantallas muy amplia con una capa WebSocket detrás de cada chat y cada canal.",{"alt":217,"url":220},"\u002Fprojects\u002Fjepta\u002Fhero.webp",[41,18],[175],"Netgineers GmbH","projects_es\u002Fportfolio\u002Fjepta.md","2023-06-01","jepta",{"title":228,"description":229,"image":230,"technologies":233,"categories":234,"client":201,"id":235,"date":236,"slug":237},"Plataforma de detección de bots en tiempo real","Una plataforma de puntuación en tiempo real que distingue el tráfico automatizado de las personas reales: un recolector de señales en JavaScript puro, servicios de scoring en Go y una plataforma de datos en Google Cloud sobre Kubernetes que maneja decenas de miles de peticiones por minuto.",{"alt":231,"url":232},"Plataforma de detección de bots en tiempo real: material visual reservado por NDA","\u002Fprojects\u002Frealtime-bot-detection-platform\u002Fhero.webp",[51,100,116,80,56],[199,200],"projects_es\u002Fportfolio\u002Frealtime-bot-detection-platform.md","2023-02-01","realtime-bot-detection-platform",{"title":239,"description":240,"image":241,"technologies":243,"categories":244,"client":245,"id":246,"date":247,"slug":248},"ExtraETF","Construida con Flutter y Go, ExtraETF ofrece datos de mercado en tiempo real, gráficos interactivos, seguimiento de carteras y funciones premium en iOS y Android.",{"alt":239,"url":242},"\u002Fprojects\u002Fextraetf\u002Fhero.webp",[41,18,51],[175,199],"Isarvest GmbH","projects_es\u002Fportfolio\u002Fextraetf.md","2022-04-17","extraetf",{"title":250,"description":251,"image":252,"technologies":255,"categories":256,"client":257,"id":258,"date":259,"slug":260},"Formtastic","Una plataforma de formularios y encuestas online, diseñada para crecer y para carga alta",{"alt":253,"url":254},"Logo de Formtastic: formularios digitales","\u002Fprojects\u002Fformtastic\u002Fhero.webp",[41,18,90,155,100,24,106,51,165],[175,199,200],"Formtastic GmbH","projects_es\u002Fportfolio\u002Fformtastic.md","2022-01-10","formtastic"]