Todos los proyectos

Proyecto personal

Sonli · Tu ministerio de alabanza, organizado

Una app móvil que ayuda a equipos musicales de iglesias a organizar canciones, setlists y ensayos, offline-first.

Rol
Fundador y Lead Developer
Estado
Pruebas de usuario
Stack
React Native · TypeScript · Offline Sync
2
plataformas desde un solo código, iOS y Android
16
tablas en SQLite en el teléfono, sincronizadas
58
endpoints REST detrás
835
tests automatizados, app y API

Cómo nació

Nació de una necesidad real en la Iglesia Jesucristo Mi Esperanza de Sunchales. Busqué algo práctico para la realidad de un equipo de alabanza y no lo encontré, así que decidí hacerlo, y hacerlo de forma que le sirva también a iglesias de toda Latinoamérica. Es además mi proyecto final de Ingeniería en Sistemas en la UTN.

El problema

Un equipo musical de iglesia funciona con información que no es de nadie. La lista de canciones es una carpeta de PDFs, el tono que necesita cada cantante está en la cabeza de alguien, el setlist del domingo es un mensaje de WhatsApp y quién toca la semana que viene es otro mensaje de WhatsApp. Funciona hasta que falta la persona que lo sostiene todo, y ahí cada ensayo arranca de cero.

El enfoque

Una app móvil que guarda la biblioteca de canciones con acordes, tono y tempo, deja a los líderes armar setlists de reuniones y ensayos, y agenda a los músicos con registro de asistencia. Hecha junto a la Iglesia Jesucristo Mi Esperanza de Sunchales, Argentina, que es la razón por la que resuelve los problemas que los equipos tienen de verdad y no los que imaginaría un product manager.

Sin conexión es el caso normal, no el borde

Los sótanos de iglesia y las salas de ensayo tienen mala señal. Tratar la falta de conexión como un estado de error habría hecho la app inútil justo donde se usa, así que es offline-first: todo funciona sin conexión y sincroniza cuando vuelve. Los registros reciben su UUID en el dispositivo, que es lo que permite que dos personas editen el mismo setlist desde teléfonos distintos sin un servidor repartiendo ids.

TELÉFONO ASERVIDORTELÉFONO BSIN SEÑALReordena el setlistSQLite · id UUID localcola: 1 cambioAgrega una canciónSQLite · id UUID localcola: 1 cambiotodavía no se enteraVUELVE LA SEÑALEmpuja su colarecibe lo del otroid generado en el teléfonoEmpuja su colarecibe lo del otroid generado en el teléfonoReconcilia en Postgresy lo repartepushpullpushpull
Dos teléfonos editan el mismo setlist sin señal. Cada uno escribe en su SQLite con un id generado en el dispositivo y encola el cambio. Cuando vuelve la señal, los dos empujan su cola y reciben lo que hizo el otro. Nadie espera a que un servidor reparta ids.

Base de datos local, no un caché

SQLite en el dispositivo guarda los datos reales, no una copia de lo último que dijo el servidor. Esa distinción decide todo lo que viene después: qué pasa ante un conflicto, qué ve el usuario mientras hay una sincronización pendiente, y si una escritura se puede perder. Un caché lo tirás; una fuente de verdad la tenés que reconciliar.

Hecho para poder soltarlo

React Native con Expo adelante, FastAPI con SQLAlchemy async y Postgres atrás, TypeScript en modo strict de punta a punta. El stack es aburrido a propósito: esto es un producto que un equipo voluntario tiene que poder mantener andando, y la parte interesante debería ser el modelo de sincronización, no las herramientas.

En pantalla · tocá para ampliar

La biblioteca de canciones, con tono y tempo en cada una.
Una canción abierta desde la biblioteca: acordes sobre la letra, lista para sumar a una sesión.
El reproductor durante el culto: canción 1 de 4, tono transpuesto en el momento, tempo y tamaño de letra a mano.

Probalo acá

El control de tono del reproductor, funcionando: cambiá el tono y todos los acordes lo siguen, con los sostenidos o bemoles que pide el tono nuevo.

Sublime gracia
John Newton, 1779 · dominio público
TonoG

GSublime G7gracia Cdel SeGñor

que a un GinfeEmliz salDvó.

Fui Gciego G7mas Choy veo Gyo,

perGdido y DÉl me haGlló.

En la app esto corre sobre cada canción de la biblioteca, por cantante y por sesión.Conocer Sonli

Lo que sigue

Desde julio de 2026 la app está en manos de músicos reales en la iglesia, y los primeros ajustes salen de ese uso: lo que se toca de verdad un domingo, no lo que dice un backlog. El lanzamiento al público, para iOS y Android, está estimado para enero de 2027. Hasta entonces, sonli.app toma un mail y avisa cuando esté lista.

  1. Oct 2025
    Arranca el desarrollo
  2. Jul 2026· ahora
    Pruebas con músicos reales en la iglesia
  3. Ene 2027 · estimado
    Lanzamiento al público en iOS y Android

Stack

  • React Native
  • TypeScript
  • Offline Sync
  • REST API
  • PostgreSQL