Proyectos

Churupo

Una app de finanzas personales y en familia: anotas un gasto en segundos, ves tu mes de un vistazo y compartes las cuentas de la casa. La diseñé y la programé por mi cuenta en Flutter, y ya está en Google Play.

Rol
Todo: producto, diseño, desarrollo y publicación
Plataformas
Android con Flutter, y una versión web
Estado
En Google Play desde el 30 de octubre de 2026, versión 1.0.6
Países
Chile, Argentina, Colombia, Ecuador y Venezuela

Qué es

Churupo parte de una idea simple: si anotar un gasto cuesta, nadie lo anota. Por eso anotar toma segundos: escribes como hablas, escaneas la boleta o confirmas el aviso de tu banco. Con eso, la app arma tu mes, tus tarjetas y los gastos de la familia.

Unas 30.000 líneas de Dart, Cloud Functions en TypeScript y más de 200 pruebas automatizadas, incluidas 29 de las reglas de seguridad.

Anotar en segundos

Tres formas de anotar, y en todas el teléfono hace la mayor parte del trabajo.

  • Escribir

    Escribes «sushi 12 lucas tarjeta» y el teléfono entiende monto, categoría y cuenta con reglas propias, sin internet: «lucas» son miles, «un palo» es un millón y «ayer» es ayer. La categoría sale de lo que ya anotaste antes, y la IA solo se ofrece si falta algo.

  • Escanear

    La boleta se lee con el OCR de ML Kit en el propio teléfono. Antes de pasarle el texto a la IA, el teléfono oculta el RUT, los números de cuenta y de tarjeta, los teléfonos y los correos. La imagen nunca sale del teléfono.

  • Confirmar el aviso del banco

    Un servicio nativo en Kotlin lee las notificaciones de tus apps de banco y te propone el movimiento. Nada se guarda hasta que lo confirmas, y el recordatorio de Churupo no muestra montos porque puede verse en la pantalla bloqueada.

Arquitectura

Clean Architecture por funcionalidad, con get_it para las dependencias y los errores como Either. La clave de la IA vive solo en el servidor.

  1. FlutterLas pantallas, con Material 3
  2. BLoCEl estado de cada pantalla
  3. Casos de usoSaldos, cuotas, ciclos de facturación y presupuestos
  4. RepositoriosUn listener compartido por colección
  • Cloud FirestoreDatos con caché sin conexión y reglas con pruebas
  • Cloud FunctionsLa IA, la cuota mensual y el borrado de cuenta
  • ML KitEl OCR de las boletas, en el teléfono

Decisiones

  1. La clave de la IA, fuera de la app

    La primera versión llamaba a la IA desde el teléfono, con la clave dentro del APK. Una auditoría lo marcó y hoy la llamada pasa por una Cloud Function: la clave vive en Secret Manager y la función exige sesión, correo verificado y App Check.

  2. Reglas primero, IA de respaldo

    Lo que escribes se entiende con reglas en el teléfono, y la IA solo entra si falta el monto o la categoría. Así anotar es instantáneo, funciona sin conexión y casi no cuesta.

  3. Un límite para medir

    Hay 20 usos gratis de IA al mes, contados en el servidor con una transacción, y una lectura que falla devuelve el uso. El límite no es por costo: sirve para medir cuánta gente querría Churupo Plus antes de construirlo.

  4. Los avisos del banco no salen del teléfono

    Se leen y se guardan en el teléfono. A los servidores solo llega el movimiento que confirmas.

  5. Familias que no se ven entre sí

    Las reglas de Firestore no dejan listar grupos ni invitaciones: se entra solo con el código exacto, y el dueño puede sacar a alguien pero nunca agregarlo. 29 pruebas sobre el emulador cuidan esas reglas.

  6. Una sola app para varios países

    El país y la moneda viven en el perfil, no en versiones separadas de la app. Cada cuenta tiene su moneda, y los saldos se muestran por moneda, nunca como un total en pesos que no existe.

  7. Firestore se paga una vez

    Cada pantalla leía todo el historial con su propia consulta. Hoy un solo listener por colección las sirve a todas: Firestore cobra el resultado una vez y después solo lo que cambia.

Con qué está hecha

App
Flutter, Dart, BLoC, go_router, get_it, dartz y fl_chart
Nube
Firebase Auth, Cloud Firestore, Cloud Functions en TypeScript, App Check, Crashlytics y Analytics
Captura
ML Kit para el OCR, Claude Haiku detrás de una Cloud Function y un lector de notificaciones nativo en Kotlin
Calidad
181 pruebas de la app, 29 de las reglas de Firestore sobre el emulador y 8 de las funciones

Ver los demás proyectos

Contacto

Para conversar sobre un proyecto, una oportunidad o algo que viste aquí.