Soy Michael y quiero compartir mi experiencia construyendo VaultNote, una pequeña aplicación de toma de notas que fue mi campo de pruebas para aprender desarrollo multiplataforma con Tauri y SvelteKit. El objetivo principal no fue tanto la funcionalidad —nota básica con renderizado markdown— sino aprender a publicar binarios nativos para Windows, macOS (Intel y ARM), Linux y Android a partir de una sola base de código. El resultado fue un prototipo funcional después de muchas horas y más de 60 ejecuciones fallidas en CI.

En Q2BSTUDIO, empresa de desarrollo de software y aplicaciones a medida, fomentamos este tipo de experimentos porque aceleran el aprendizaje sobre tecnologías modernas y mejores prácticas. Ofrecemos servicios que incluyen software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio y automatización, y VaultNote me permitió aplicar esos conceptos en un proyecto real.

Por qué Tauri y SvelteKit Fue una elección natural: Tauri entrega ejecutables ligeros y seguros sin el sobrepeso de Electron, y SvelteKit aporta reactividad y velocidad en el frontend. Con Bun y Vite la experiencia de desarrollo fue muy ágil. En el almacenamiento probé Prisma pero finalmente me quedé con Dexie.js sobre IndexedDB porque en JavaScript no había una solución de base de datos cross platform que encajara sin complicar demasiado la capa Rust.

Cómo empecé Instalar un proyecto Tauri + SvelteKit fue sencillo: ajustar src-tauri/tauri.conf.json, ejecutar bun dev para la web y bun tauri dev para escritorio. Para Android hubo que pelearse con Android Studio y cargo tauri android dev. Pero automatizar todo esto en CI fue la verdadera batalla.

Resumen del pipeline objetivo Mi meta fue: al pushear a main versionar automáticamente, compilar para 6 plataformas (4 de escritorio y Android APK/AAB), firmar Android y publicar artefactos limpios en GitHub Releases. Implementé GitHub Actions con release-please para versionado, tauri-action para empaquetar y scripts personalizados para mantener las versiones sincronizadas entre package.json, Cargo.toml y tauri.conf.json.

Paso 1 Versiones sincronizadas o nada Los desajustes de versiones rompen builds silenciosamente. Resolví usar package.json como fuente de la verdad con un script Node que actualiza Cargo.toml y valida tauri.conf.json. Este script corre en precommit y en CI. El flujo comienza con release-please que crea tags y PRs; cada job revisa el tag y re-sincroniza versiones. Validar versiones pronto ahorra muchas regresiones.

Paso 2 Builds de escritorio Gancho temprano y gratificante: trabajos en paralelo para windows, macOS intel y arm, y Linux. Pasos típicos: instalar dependencias como WebKit en Linux, configurar Bun y Rust, cachear compilaciones y ejecutar bun vite build para generar los assets web antes de que tauri-action empaquete. Problemas menores incluyeron especificar el target aarch64-apple-darwin para macOS y agregar libwebkit2gtk-4.1-dev en Linux. Al establecer fail-fast en false las demás plataformas seguían publicando aún si una fallaba.

Paso 3 Android El gran desafío Android fue un monstruo: instalación correcta del SDK y NDK, rutas de herramientas inconsistentes, firmas con keystore, y pins de versiones en Cargo/Tauri. Lecciones clave que aprendí: instalar build-tools 34.0.0 y exportar las rutas de herramientas en el PATH, base64-decodificar y validar el keystore desde secretos en CI, y entender que Tauri puede autfirmar APKs por lo que no conviene ejecutar apksigner manualmente en algunos flujos. También hubo que ajustar rutas de salida porque Tauri retorna APKs ya firmados en nombres como app-universal-release.apk.

Qué funciona hoy En la versión v0.21.5 al hacer push a main se dispara release-please, se sincronizan versiones, se construyen artefactos de escritorio en paralelo y Android en un job aparte. Los binarios se suben firmados y renombrados para branding, y los assets aparecen en GitHub Releases. Tiempo total aproximado 15 a 25 minutos con una tasa de éxito superior a 95 por ciento.

Herramientas y decisiones técnicas Usé Dexie.js para almacenamiento local y Carta-MD para renderizado markdown. Para el CI trusteé en tauri-action y release-please y añadí scripts personalizados para sincronizar versiones. Aprendí que la comunidad y la documentación de Tauri son más útiles que respuestas genéricas de IA cuando el problema es específico de Rust o de toolchains de Android.

Lecciones aprendidas Empieza por lo pequeño: primero escritorio, luego móvil. Mantén una sola fuente de verdad para versiones y automatízalo. Registra todo durante el debug: imprimir configs, listar directorios y usar set -euo pipefail en scripts bash fue invaluable. Aborda Android por bloques de problemas y apóyate en la comunidad y en plantillas cuando sea posible. Y no subestimes el tiempo que toma dominar firmas y rutas en Android.

Si tu empresa o proyecto necesita experiencia para trasladar una app web a binarios nativos, optimizar pipelines CI/CD o desarrollar soluciones con inteligencia artificial y ciberseguridad, en Q2BSTUDIO ofrecemos servicios integrales para llevar ideas a producción, incluyendo aplicaciones a medida y software a medida. También diseñamos estrategias de ia para empresas y agentes IA personalizados, y podemos ayudarte a integrar desarrollo de aplicaciones y software a medida con soluciones de inteligencia artificial mediante nuestros servicios de servicios de inteligencia artificial.

¿Quieres ver el pipeline completo o colaborar En mi repo hay documentación sobre CI/CD, scripts y guías paso a paso. Forkea el proyecto, abre issues o envía PRs. Si trabajas en iOS, firmados de escritorio o optimización de caches en CI, tus aportes serán bienvenidos. En Q2BSTUDIO estamos listos para ayudar a transformar tu idea en un producto robusto, seguro y escalable utilizando prácticas modernas de DevOps, cloud y business intelligence.