Ir al contenido

Funciones

Lo que Financy hace hoy, y lo que viene después

Financy se está reconstruyendo desde cero. Lo que funciona hoy: cuentas en cualquier moneda y la base que hay debajo: inicio de sesión, uso compartido con roles, cambios en tiempo real, una app sin conexión, exportación, nueve idiomas y tu propio servidor. Cada sección enlaza al código que la hace.

Por Anton ShubinActualizado el

Los movimientos y los presupuestos aún no están. Mira en qué punto va la reconstrucción.

Funciona hoy

La base donde vivirá el dinero de tu hogar

Estas partes funcionan y se prueban en CI. Las cuentas en cualquier moneda y sus categorías ya están; los movimientos son lo siguiente.

Funciona hoyEl inicio de sesión con Google y GitHub necesita claves propias del servidor, así que una instalación nueva empieza solo con el inicio de sesión por correo.

Cada cuenta en su propia moneda

Efectivo, cuentas bancarias, tarjetas, ahorros, activos y deudas, cada una en su moneda, agrupadas por tipo y con una predeterminada. Todo el hogar ve cada cambio al momento.

Para desarrolladores

  • El servidor calcula el saldo en cada lectura y no lo guarda en ningún sitio, así que nunca se desvía
  • Los importes son enteros en la unidad más pequeña de la moneda: el yen no tiene, el dinar tiene tres decimales
  • Un lector ve las cuentas; solo los editores y roles superiores pueden cambiarlas, y el servidor lo comprueba
Ver el código de las cuentas

Categorías de un solo nivel

Ordena gastos e ingresos en categorías, cada una con su icono y su color. Pon Supermercado y Comer fuera dentro de Comida. Un hogar nuevo empieza con una lista corta en su idioma.

Para desarrolladores

  • Una categoría nunca se borra: archivarla la quita de los selectores y sus movimientos pasados la conservan
  • Una subcategoría tiene el tipo de su principal, y una principal no puede tener principal; lo comprueba el servidor
  • Quien solo ve lee las categorías; solo un editor o superior las cambia
Ver el código de las categorías

Inicio de sesión, resuelto

Te registras con correo y contraseña y confirmas el correo con un código. Puedes restablecer una contraseña olvidada, continuar con Google o GitHub, entrar con una llave de acceso o pedir un código por correo. Una app de autenticación añade la verificación en dos pasos (2FA), y ves todos los dispositivos con sesión abierta y puedes cerrar la sesión en los demás.

Para desarrolladores

  • Contraseñas con hash PBKDF2-SHA-256 mediante Web Crypto, 600.000 iteraciones por defecto
  • Cookies de sesión firmadas y un registro de auditoría de cada evento de inicio de sesión
  • Tokens personales de API, guardados solo como hashes con clave
Ver el código de inicio de sesión

Un hogar, cada persona con su propio acceso

Un hogar (un grupo, en la app) son las personas que comparten dinero. Invita a tu pareja o a tu familia, da a cada uno un rol de lector a propietario y transfiere la propiedad cuando haga falta. Un hogar eliminado se puede restaurar durante 30 días, y el registro de actividad muestra quién cambió qué.

Para desarrolladores

  • El hogar es el único límite con el que se comprueba cada dato
  • Cada persona ve solo los hogares a los que pertenece
  • Invitaciones, cambios de rol y transferencia de propiedad, cada uno con sus pruebas
Ver el dominio de grupos

Los cambios aparecen en cada dispositivo sin recargar

Cuando alguien del hogar cambia algo, los demás lo ven al instante en cada dispositivo abierto. Un portátil que sale de la suspensión se pone al día con lo que se perdió.

Para desarrolladores

  • Un WebSocket estándar, con un número de secuencia en cada cambio
  • Un dispositivo que se reconecta recupera lo que no vio
Ver el diseño del tiempo real

Una aplicación que abre sin red

Instala Financy en tu móvil o tu ordenador: se abre sin conexión y muestra lo último que vio.

Para desarrolladores

  • Una copia local de cada lista en IndexedDB y una cola de escritura con claves de idempotencia
  • «Quedarme con el mío» o «Usar el otro» en cada conflicto
Leer docs/offline.md

Tus datos se van contigo

El propietario puede exportar un hogar a un archivo JSON abierto en cualquier momento e importarlo después como un hogar nuevo. Importar nunca sobrescribe el original.

Para desarrolladores

  • Se comprueba todo el archivo antes de escribir nada, y luego se importa en un solo paso
  • Cada registro recibe un id nuevo, así que una importación nunca choca con lo que ya hay
Ver el código de exportación

En nueve idiomas

La app y este sitio hablan inglés, ruso, español, alemán, portugués de Brasil, árabe, francés, japonés y chino simplificado. Cada persona elige su idioma en la app, así que un hogar puede usar más de uno.

Para desarrolladores

  • Un catálogo por idioma, comprobado por una prueba que nombra cada mensaje que falta
  • Números y fechas con el Intl del propio navegador
  • Las páginas en árabe se leen de derecha a izquierda
Leer la guía de traducción

Funciona en tu propio servidor

Financy funciona en cualquier servidor Linux que alquiles o tengas, con Docker Compose. Alojarlo tú es gratis bajo la licencia AGPL‑3.0, y los datos de tu hogar se quedan en tu servidor.

Para desarrolladores

  • Traefik delante, con certificados automáticos
  • Postgres y Valkey junto a las aplicaciones
  • Métricas, registros y alertas con VictoriaMetrics, VictoriaLogs y Grafana
  • Una copia de seguridad diaria y cifrada de la base de datos, opcional, con los pasos de restauración por escrito
Ver los archivos de Compose
$ deno task deploy Copying files... Copying infra/envs/.env.prod to infra/envs/.env... Creating web push keys if missing... Starting the app... Deploy completed.
Resumido: se omite la salida de rsync y Compose entre los pasos.
  • Traefik
  • Postgres
  • Valkey
  • VictoriaMetrics
  • VictoriaLogs
  • Grafana
  • Alertmanager
  • Garage file store
  • restic backups

Preguntas

¿Financy puede hacer eso?

¿Puedo ejecutar Financy en hosting compartido o serverless?

No. Financy funciona como contenedores permanentes con Docker Compose en un servidor Linux, porque la API mantiene abiertas conexiones WebSocket y un worker vacía una cola.

¿Qué base de datos usa Financy?

Postgres. Las migraciones, las consultas y las pruebas de integración cuentan con él.

¿Hay una app para el móvil?

Todavía no está en las tiendas. Por ahora, la app web se instala desde el navegador en móviles y ordenadores y se abre sin conexión.