Back to Blog
product updatesFeatured

Stylo para Android: Del concepto al lanzamiento

Después de meses de desarrollo y optimización, Stylo para Android está finalmente listo para pruebas. Aquí está lo que costó construirlo.

Stylo Team
4 min read
Stylo para Android: Del concepto al lanzamiento

Cuando me senté a escribir la primera línea de código para la versión de Android de Stylo hace unos meses, no tenía idea de cuántas sesiones de depuración nocturnas me esperaban. Hoy, la aplicación está finalmente lista para pruebas y puedo respirar.

Cómo comenzó

Todo comenzó con una pregunta simple de un amigo: "¿Por qué Stylo no tiene una app de Android?" Y respondí típicamente como un programador: "Estará lista en una semana."

Bueno, no lo estuvo.

La versión web funcionaba genial, pero una app móvil es un mundo completamente diferente. Queríamos que la gente tuviera Stylo en sus teléfonos — en el autobús, en una cafetería, donde sea que necesiten arreglar un texto rápidamente. Así que dije, está bien, intentémoslo.

Kotlin, Compose y todas esas cosas elegantes

Decidí hacerlo correctamente. No algún prototipo rápido y sucio, sino una app de producción real. Entonces Kotlin (por supuesto), Jetpack Compose en lugar de esos locos layouts XML, arquitectura MVVM para que todavía lo entienda en seis meses, Hilt para inyección de dependencias, y base de datos Room para modo offline.

Todo sonaba genial en mi cabeza. En la práctica... bueno, déjame contarte al respecto.

Ese Galaxy A5 que me enseñó paciencia

La peor parte fue cuando un amigo me envió una captura de pantalla: "La app se cerró." Tenía un viejo Samsung Galaxy A5 de 2017. 2GB de RAM. Android 9.

Y ahí estaba yo con mi nuevo teléfono donde todo funcionaba hermosamente fluido, y me di cuenta de que había descuidado completamente la optimización para dispositivos antiguos.

Pasé unas 3 semanas solo cazando fugas de memoria, depurando por qué Compose se recompone 50 veces en lugar de 2, y perfilando cada LazyColumn. ¿Saben qué es lo peor? Cuando ves en el perfilador que tu animación está consumiendo el 80% de la CPU. Ahí fue cuando me di cuenta de que algunas animaciones simplemente tienen que irse.

Pero cuando finalmente vi la app corriendo fluidamente en ese viejo Samsung, sentí como si hubiera ganado un maratón.

¿Arquitectura? Cuando vale la pena

Al principio, me pregunté si valía la pena hacer toda la Clean Architecture con MVVM. Suena complicado — tienes una capa de UI, capa de dominio, capa de datos, cada una comunicándose solo a través de interfaces...

Decidí intentarlo. Y luego llegó el momento en que necesitábamos agregar modo offline. ¿Saben qué? Cambié la implementación del repositorio para obtener datos de la base de datos Room en lugar de la API. No tuve que cambiar la UI para nada. Ni una sola línea.

Ahí fue cuando entendí por qué todos esos tutoriales de Android en YouTube gritan tanto sobre la separación de capas.

Ese bug de tokens que me costó una noche

Nunca olvidaré cómo olvidé implementar EncryptedSharedPreferences y estaba almacenando tokens en texto plano. Lo encontré por accidente cuando estaba leyendo documentación sobre algo completamente diferente.

Imaginen si alguien descompilara el APK y encontrara los tokens de Supabase simplemente ahí en SharedPreferences. Pesadilla. Lo reescribí rápidamente con cifrado AES-256 y desde entonces verifico la seguridad antes de hacer commit de cualquier cosa.

¿La lección? Nunca pospongas la seguridad para después. Cuando tienes una fecha límite y estás cansado, lo olvidarás.

¿Qué hace realmente la app?

Bien, después de todas esas optimizaciones y refactorizaciones, tenemos una app que puede transformar texto de 10 maneras diferentes — gramática, estilo formal, resumen, de todo. Funciona en 5 idiomas y tiene modo de detección automática, así que no tienes que seleccionar el idioma manualmente.

Todo se almacena localmente en la base de datos Room, así que incluso sin internet, ves tu historial. Implementé limitación de tasa para no saturar la API — 6 solicitudes por hora para visitantes, 20 para usuarios registrados.

Usé Supabase para autenticación, Material Design 3 para la UI (con modo oscuro, por supuesto), y también hicimos soporte para tablets, que fue realmente más fácil de lo que esperaba.

¿Qué sigue?

Ahora necesito gente real que lo pruebe. No amigos que digan "gran app hermano", sino gente que me diga "esto se cerró", "esto es lento", "esto no tiene sentido".

Las pruebas beta comienzan pronto. Si tienes Android y quieres ayudar, estaré encantado.

Y una cosa más — gracias. Stack Overflow me salvó la vida unas 20 veces, la documentación de Google es realmente buena (lo cual no se puede decir de muchas docs), y la comunidad de Kotlin es súper útil.

Pero principalmente, gracias a aquellos que usan Stylo y dan retroalimentación. Eso es lo que me impulsa hacia adelante.

Nos vemos en la app. 🚀


¿Encontraste un bug o tienes una pregunta? Escríbeme, estaré feliz de responder.

AI-Powered Writing

Ready to improve your writing?

Try Stylo for free and experience AI-powered writing assistance that adapts to your style.

Try Stylo Free
AndroidKotlinJetpack ComposeMVVMdesarrollo

Related Posts