Cuando abres la mayoria de las aplicaciones de seguimiento de gastos, algo ocurre en segundo plano que quizas no notes: tus datos de transacciones, saldos de cuentas y habitos de gasto se suben a servidores que no controlas. Estos servidores pueden estar ubicados en cualquier parte del mundo, gestionados por equipos que nunca has conocido y protegidos por practicas de seguridad que no puedes verificar.
Budgie adopta un enfoque fundamentalmente diferente. Tus datos financieros nunca salen de tu dispositivo. Esto no es un eslogan de marketing ni una explicacion simplificada de una realidad mas compleja. Es una descripcion literal de como funciona la aplicacion a nivel de codigo.
En este articulo, recorreremos exactamente como Budgie mantiene tus datos financieros fuera de la nube. Cubriremos la arquitectura de la base de datos, la implementacion del cifrado, los mecanismos de sincronizacion y las practicas de seguridad que lo hacen posible. Si estas evaluando Budgie y quieres entender en que estas confiando, esta guia te dara el panorama tecnico completo.
La arquitectura: SQLite y diseno local-first
En el corazon de Budgie se encuentra una arquitectura local-first construida sobre SQLite, el motor de base de datos mas desplegado del mundo. SQLite funciona en miles de millones de dispositivos y ha sido probado durante mas de dos decadas. Es la misma base de datos que alimenta el historial de tu navegador, tus contactos del movil e innumerables otras aplicaciones que requieren almacenamiento local fiable.
Por que SQLite en lugar de bases de datos en la nube
Los rastreadores de gastos basados en la nube tipicamente usan bases de datos como PostgreSQL, MySQL o MongoDB ejecutandose en servidores remotos. Cuando agregas una transaccion, esta viaja por internet hasta un centro de datos, se procesa y luego una confirmacion regresa a tu dispositivo. Esta arquitectura crea varios problemas:
Dependencia de la red: No puedes acceder a tus datos sin conexion a internet. Intenta agregar un gasto en el metro o en una zona con mala cobertura, y te quedas atascado.
Latencia: Cada operacion requiere un viaje de ida y vuelta al servidor. Incluso con conexiones rapidas, esto agrega un retraso notable a cada accion que realizas.
Exposicion de datos: Tus datos financieros existen en servidores que podrian ser vulnerados, requeridos judicialmente o accedidos por empleados con privilegios administrativos.
Dependencia del servicio: Si la empresa cierra, es adquirida o experimenta interrupciones prolongadas, tu acceso a tu propio historial financiero desaparece.
SQLite elimina todos estos problemas. El archivo de base de datos reside en tu dispositivo, las operaciones ocurren en microsegundos y tus datos permanecen bajo tu control fisico.
Como funciona el almacenamiento de datos en Budgie
Cuando creas una transaccion en Budgie, esto es lo que sucede a nivel tecnico:
- La app valida la entrada usando esquemas Zod para asegurar la integridad de los datos
- La transaccion se escribe en una base de datos SQLite almacenada en el almacenamiento seguro de tu dispositivo
- La base de datos usa Drizzle ORM para operaciones con tipado seguro
- La escritura se completa localmente sin actividad de red
No hay sincronizacion en segundo plano subiendo silenciosamente tus datos. No hay evento analitico registrando en que gastaste tu dinero. La operacion comienza y termina en tu dispositivo.
El archivo de base de datos SQLite se almacena en un directorio protegido al que solo Budgie puede acceder. En iOS, este es el directorio Documents aislado de la app. En Android, es el almacenamiento interno de la app que otras aplicaciones no pueden leer.
Cero analiticas, cero rastreo, cero telemetria
Muchas apps que afirman respetar la privacidad aun recopilan datos de uso anonimizados, informes de fallos o eventos analiticos. Estos flujos de datos pueden revelar mas de lo que podrias esperar. Incluso sin tu nombre asociado, los patrones de uso pueden ser identificativos.
Budgie no incluye ningun SDK de analitica. No usamos Firebase Analytics, Mixpanel, Amplitude ni ningun servicio similar. No recopilamos informes de fallos a traves de servicios de terceros. No registramos que funciones usas, con que frecuencia abres la app ni en que categorias gastas dinero.
Esto no es porque no nos importe mejorar el producto. Nos importa. Pero hemos elegido recopilar comentarios a traves de conversaciones directas con usuarios y aportes de la comunidad de codigo abierto, en lugar de infraestructura de vigilancia.
Cifrado de extremo a extremo explicado
Almacenar datos localmente es la primera capa de proteccion. El cifrado es la segunda. Incluso si alguien obtiene acceso fisico a tu dispositivo, tus datos financieros deberian permanecer ilegibles sin tu autorizacion.
Cifrado AES-256 en reposo
Budgie cifra tu base de datos usando AES-256, el mismo estandar de cifrado utilizado por gobiernos e instituciones financieras en todo el mundo. AES-256 nunca ha sido vulnerado por ningun ataque publicamente conocido. Un intento de fuerza bruta para descifrar una clave de 256 bits requeriria mas energia de la que existe en el universo observable.
Cuando tu base de datos esta cifrada, el archivo en disco aparece como datos binarios aleatorios. Sin la clave correcta, es computacionalmente imposible extraer informacion significativa.
Como se gestionan las claves localmente
La clave de cifrado nunca sale de tu dispositivo y nunca toca nuestros servidores, porque no tenemos servidores que manejen datos de usuarios. Asi es como funciona la gestion de claves:
Derivacion de claves: Tu clave de cifrado se deriva de las credenciales de tu dispositivo usando funciones de derivacion de claves estandar de la industria. Esto significa que la clave es unica para tu dispositivo y no puede reconstruirse en otro lugar.
Almacenamiento seguro: La clave derivada se almacena en enclaves seguras especificas de la plataforma. En iOS, es el Keychain. En Android, es el Android Keystore respaldado por modulos de seguridad de hardware cuando estan disponibles.
Aislamiento de claves: Cada dispositivo tiene su propia clave de cifrado. No existe una clave maestra que pueda descifrar todas las bases de datos de usuarios, porque tal clave simplemente no existe.
Proteccion de memoria: Las claves se mantienen en memoria solo cuando son necesarias para operaciones de base de datos y se eliminan cuando la app pasa a segundo plano o se cierra.
Esta arquitectura significa que incluso si alguien roba tu dispositivo, no puede leer tus datos financieros sin comprometer tambien la seguridad de tu dispositivo (desbloqueandolo con tu biometria o codigo de acceso).
Contra que protege el cifrado
El cifrado de la base de datos protege tus datos en varios escenarios:
Robo del dispositivo: Un ladron no puede conectar tu telefono a una computadora y extraer datos financieros legibles.
Analisis forense: Incluso con herramientas forenses sofisticadas, la base de datos cifrada no puede analizarse de manera significativa sin la clave.
Exposicion de copias de seguridad: Si la copia de seguridad de tu dispositivo se ve comprometida, la base de datos cifrada dentro de ella permanece protegida.
Extraccion de datos de la app: En dispositivos rooteados o con jailbreak donde el aislamiento de apps puede eludirse, el cifrado aun protege los datos.
Que sucede al sincronizar entre dispositivos
Una de las preguntas mas comunes sobre las apps offline-first es: como llevo mis datos a un nuevo dispositivo? Budgie resuelve esto mediante sincronizacion de dispositivo a dispositivo sin intermediario en la nube.
Arquitectura de sincronizacion entre dispositivos
Cuando quieres transferir tus datos a un nuevo dispositivo, Budgie utiliza comunicacion directa peer-to-peer. Asi es el proceso:
- Descubrimiento: Ambos dispositivos se descubren en la red local o a traves de un relay temporal que solo ve blobs cifrados
- Autenticacion: Confirmas la transferencia en ambos dispositivos, generalmente comparando un codigo visual
- Transferencia cifrada: La base de datos se transfiere en su forma cifrada
- Descifrado local: El dispositivo receptor usa protocolos de intercambio de claves para establecer la capacidad de descifrar los datos transferidos
El punto critico es que en ningun momento datos financieros legibles pasan por ninguna infraestructura de terceros. Incluso el relay temporal usado para el descubrimiento cuando los dispositivos no estan en la misma red solo ve datos cifrados que no puede interpretar.
Resolucion de conflictos sin servidores
La sincronizacion tradicional en la nube se apoya en un servidor central como fuente de verdad cuando surgen conflictos. Si editas una transaccion en dos dispositivos, el servidor decide que version prevalece.
Budgie usa un enfoque diferente basado en tipos de datos replicados sin conflicto (CRDTs) y transformaciones operacionales. Cada cambio se registra como una operacion con marca de tiempo e identificador de dispositivo. Durante la sincronizacion:
- Las operaciones de ambos dispositivos se intercambian
- Un algoritmo de fusion determinista combina las operaciones
- Ambos dispositivos llegan al mismo estado final sin necesidad de un servidor que arbitre
Esto significa que puedes usar Budgie en multiples dispositivos que se sincronizan ocasionalmente cuando estan en la misma red, y tus datos eventualmente convergeran a un estado consistente sin perdida de datos.
El compromiso: comodidad de sincronizacion vs. privacidad
Seamos directos sobre los compromisos. La sincronizacion en la nube es mas comoda. No necesitas estar en la misma red. No necesitas iniciar una sincronizacion manualmente. Los cambios se propagan automaticamente en segundo plano.
La sincronizacion entre dispositivos de Budgie requiere mas participacion del usuario. Necesitas activar explicitamente la sincronizacion cuando quieres transferir datos. Ambos dispositivos deben estar accesibles, ya sea en la misma red local o ambos conectados a internet para el handshake asistido por relay.
Creemos que este compromiso vale la pena para los datos financieros. La comodidad de la sincronizacion automatica en la nube se paga con que tus datos existan en servidores que no controlas. Para muchos tipos de datos, ese compromiso es aceptable. Para tu historial financiero completo, pensamos que el control local vale los pasos adicionales.
Conexiones bancarias sin Plaid
La mayoria de las apps de seguimiento de gastos que ofrecen sincronizacion bancaria usan Plaid, Yodlee o servicios de agregacion similares. Estos servicios funcionan recopilando tus credenciales bancarias o tokens OAuth y luego accediendo a tu cuenta en tu nombre. Tu historial de transacciones fluye a traves de sus servidores antes de llegar a tu app.
Budgie adopta un enfoque diferente para la importacion de datos bancarios.
Importacion manual: la opcion que prioriza la privacidad
La forma mas privada de incorporar datos bancarios en Budgie es la importacion manual. La mayoria de los bancos permiten descargar el historial de transacciones en formatos estandar como CSV, OFX o QIF. Descargas este archivo directamente de tu banco, y Budgie lo importa localmente en tu dispositivo.
Ningun tercero ve jamas tus datos bancarios. Ninguna credencial se comparte con nadie. El proceso es:
- Inicia sesion en tu banco directamente en tu navegador
- Descarga tu historial de transacciones
- Importa el archivo en Budgie
- Budgie analiza y categoriza las transacciones localmente
El analisis y la categorizacion ocurren completamente en tu dispositivo. Budgie incluye reconocimiento de patrones para formatos de transacciones comunes de los principales bancos, y puedes personalizar las reglas de categorizacion que se aplican localmente.
Por que elegimos la privacidad sobre la comodidad
Podriamos haber integrado Plaid. Habria sido mas facil de implementar para nosotros y mas comodo para los usuarios. Un clic y tus transacciones aparecen automaticamente.
Pero esa comodidad tiene costos que a menudo son invisibles para los usuarios:
Retencion de datos: Los servicios de agregacion retienen tu historial de transacciones en sus servidores, a veces indefinidamente.
Acceso de terceros: Tus datos bancarios fluyen a traves de infraestructura operada por empresas cuyo modelo de negocio depende de los datos.
Exposicion de credenciales: Algunos servicios almacenan tus credenciales bancarias, creando un objetivo de alto valor para los atacantes.
Riesgo regulatorio: Tus datos quedan sujetos a las jurisdicciones legales y solicitudes de los paises donde se encuentran esos servidores.
La importacion manual requiere mas esfuerzo, pero asegura que tus datos bancarios sigan las mismas garantias de privacidad que el resto de Budgie: nunca salen de tu dispositivo, y ningun tercero tiene acceso jamas.
Consideraciones futuras
Estamos explorando opciones de importacion bancaria asistida que mantengan las garantias de privacidad. Esto podria incluir el analisis local de correos electronicos bancarios, integracion con APIs de banca abierta que usan OAuth sin compartir credenciales, o asociaciones con proveedores de datos financieros enfocados en la privacidad que operan bajo acuerdos estrictos de manejo de datos.
Cualquier solucion futura mantendra nuestro principio fundamental: tus datos financieros permanecen en tu dispositivo, cifrados y bajo tu control.
Codigo abierto: verifica nuestras afirmaciones tu mismo
Todo lo que hemos descrito en este articulo puede verificarse examinando nuestro codigo fuente. Budgie es de codigo abierto, y creemos que esta transparencia es esencial para cualquier aplicacion que maneje datos financieros sensibles.
Enlace al repositorio
Nuestro codigo fuente completo esta disponible en GitHub. Puedes encontrarlo visitando nuestra [seccion de codigo abierto](/#open-source) donde se proporciona el enlace al repositorio.
El repositorio incluye:
- El codigo fuente completo de la aplicacion React Native
- Esquemas de base de datos y archivos de migracion
- Detalles de implementacion del cifrado
- Implementacion del protocolo de sincronizacion
- Scripts de compilacion y configuracion de CI
No hay repositorios privados que contengan el codigo "real" que maneja tus datos de manera diferente. Lo que ves es lo que se ejecuta en tu dispositivo.
Como auditar el codigo
Si quieres verificar nuestras afirmaciones de privacidad, aqui estan las areas clave a examinar:
Capa de red: Busca cualquier cliente HTTP, llamadas fetch o conexiones de socket. Encontraras que el uso de la red se limita a:
Capa de base de datos: Examina los esquemas de Drizzle ORM y las clases de repositorio. Puedes rastrear exactamente como los datos fluyen desde la entrada del usuario hasta el almacenamiento en la base de datos, todo localmente.
Analitica y rastreo: Busca cualquier inicializacion de SDK de analitica. No encontraras Firebase, Amplitude, Mixpanel ni ninguna integracion similar.
SDKs de terceros: Revisa el arbol de dependencias. Minimizamos las dependencias externas, y cada una se selecciona cuidadosamente para evitar bibliotecas invasivas para la privacidad.
Invitamos a investigadores de seguridad, defensores de la privacidad y usuarios tecnicamente curiosos a examinar nuestro codigo. Si encuentras algo que contradiga nuestras afirmaciones de privacidad, queremos saberlo.
Compilaciones reproducibles
Estamos trabajando hacia compilaciones totalmente reproducibles, que te permitirian compilar el codigo fuente tu mismo y verificar que el binario coincide con lo que se distribuye a traves de las tiendas de aplicaciones. Este es el estandar de oro para software verificable, y esta en nuestra hoja de ruta.
Practicas de seguridad y transparencia
Mas alla de la arquitectura en si, como desarrollamos y mantenemos Budgie importa para tu seguridad.
Ningun SDK de terceros con rastreo
Cada dependencia en Budgie se evalua por sus implicaciones de privacidad antes de incluirla. Evitamos especificamente:
- SDKs de analitica e informes de fallos que recopilan datos de comportamiento del usuario
- SDKs de publicidad que construyen perfiles de usuario
- SDKs de inicio de sesion social que comparten datos con proveedores de plataformas
- Cualquier SDK que requiera conectividad de red para funcionalidad basica
Esto limita significativamente nuestras opciones comparado con desarrolladores que no priorizan la privacidad. Pero significa que puedes confiar en que abrir Budgie no esta reportando silenciosamente tu actividad a una docena de servicios de recopilacion de datos diferentes.
Auditoria de dependencias
El software de codigo abierto depende de una cadena de dependencias, y cualquier eslabon en esa cadena podria introducir vulnerabilidades o problemas de privacidad. Nuestras practicas de seguridad incluyen:
Auditorias regulares de dependencias: Usamos herramientas automatizadas para detectar vulnerabilidades conocidas en nuestro arbol de dependencias.
Filosofia de dependencias minimas: Preferimos implementar funcionalidad nosotros mismos en lugar de agregar dependencias, reduciendo la superficie de ataque.
Revision de codigo fuente para rutas criticas: Las dependencias que tocan cifrado, operaciones de base de datos o cualquier ruta de datos sensible se revisan manualmente.
Integridad del archivo de bloqueo: Las versiones de dependencias se bloquean para prevenir ataques a la cadena de suministro a traves de actualizaciones de paquetes comprometidas.
Divulgacion responsable
Si descubres una vulnerabilidad de seguridad en Budgie, queremos trabajar contigo para corregirla de manera responsable. La informacion de contacto para reportes de seguridad esta disponible en nuestro repositorio. Nos comprometemos a:
- Confirmar la recepcion de reportes de vulnerabilidades dentro de 48 horas
- Proporcionar actualizaciones regulares sobre el progreso de la correccion
- Dar credito a los investigadores que reporten vulnerabilidades validas (con su permiso)
- No emprender acciones legales contra la investigacion de seguridad de buena fe
Preguntas Frecuentes
Que pasa con mis datos si pierdo mi telefono?
Tus datos existen solo en tu dispositivo. Si pierdes tu telefono sin haber sincronizado con otro dispositivo o creado una copia de seguridad cifrada, tus datos se pierden. Este es el compromiso de la privacidad: no podemos ayudarte a recuperar datos porque no los tenemos. Recomendamos copias de seguridad regulares en tu propio almacenamiento.
Pueden las fuerzas del orden acceder a mis datos a traves de Budgie?
No podemos proporcionar tus datos a las fuerzas del orden ni a nadie mas porque no los tenemos. No hay servidor que citar, no hay base de datos que consultar y no hay copia de seguridad que entregar. Tus datos estan en tu dispositivo, protegidos por la seguridad de tu dispositivo y el cifrado de Budgie.
Esta auditada la implementacion del cifrado?
Nuestro cifrado usa implementaciones de bibliotecas estandar de AES-256 de frameworks de seguridad de la plataforma (iOS CryptoKit, Android Keystore). Estas implementaciones son desarrolladas y auditadas por Apple y Google. Nuestra integracion esta documentada en el codigo abierto para revision de la comunidad.
Como exporto mis datos si dejo de usar Budgie?
Budgie soporta la exportacion de tu historial financiero completo en formatos estandar (CSV, JSON). Eres dueno de tus datos y puedes llevartelos contigo. La exportacion ocurre localmente, produciendo un archivo que puedes usar con cualquier otra aplicacion.
Que datos recopilan a traves de la tienda de aplicaciones?
Recopilamos informes de fallos anonimizados a traves de los mecanismos de las tiendas de aplicaciones (App Store Connect para iOS, Google Play Console para Android). Estos informes no contienen datos financieros. Los usamos para corregir errores que causan fallos. No se recopilan otros datos a traves de ningun canal.
Por que no usar sincronizacion en la nube cifrada de extremo a extremo?
La sincronizacion en la nube cifrada de extremo a extremo requeriria servidores para almacenar blobs cifrados. Aunque el contenido estaria cifrado, los metadatos seguirian siendo visibles: cuando sincronizas, cuantos datos tienes, patrones de sincronizacion que podrian revelar habitos de uso. La sincronizacion entre dispositivos elimina incluso esta exposicion de metadatos.
Toma el control de tu privacidad financiera
Tus datos financieros cuentan la historia completa de tu vida. Donde vives, donde compras, que te importa, que desafios enfrentas, que esperanzas tienes. Estos datos son valiosos precisamente porque son tan reveladores.
Budgie existe porque creemos que no deberias tener que intercambiar esta informacion intima por la comodidad del seguimiento de gastos. Cada decision arquitectonica, desde SQLite hasta el cifrado local y la sincronizacion entre dispositivos, esta disenada para mantener esta informacion donde pertenece: bajo tu control.
Hemos descrito nuestro enfoque en detalle no porque pensemos que todos necesitan entender arquitecturas de bases de datos, sino porque creemos que mereces saber exactamente que hace una app con tus datos sensibles. Te invitamos a verificar nuestras afirmaciones, examinar nuestro codigo y mantenernos responsables de los estandares de privacidad que nos hemos fijado.
Para mas detalles sobre nuestra arquitectura de seguridad, visita nuestra [seccion de seguridad](/#security). Para ver el codigo fuente completo y verificar todo lo que hemos descrito, consulta nuestra [seccion de codigo abierto](/#open-source).
Listo para probar un rastreador de gastos que respeta tu privacidad? [Unete a la lista de espera](/#waitlist) y se de los primeros en experimentar la gestion financiera sin vigilancia.