Crear App de finanzas personales

thelegend

¡Hola a todos!

Llevo tiempo con excels fintonic..etc, pero nunca siento que tenga el control del dinero, es por eso que estoy pensando de hacer una app de fianzas personales para mí, que si fuera bien, ya la publicaría, (app web).
Mi idea inicial es tener un calendario anual que se vean todos los meses, y ver en verde/rojos los días que has gastado y cuando pases por encima te salgan en que ha sido.
También un pequeño filtro, que si quieres ver los días que has gastad gasolina se vería reflejado en el calendario.

La segunda parte sería integrar un presupuesto anual, donde pondrías un cálculo aproximado de todos tus gastos anuales, cumpleaños, viajes… Etc. y sabiendo tus gastos anuales, ver lo que mínimamente tienes que ahorrar, y de alguna manera que eso se viera reflejado en el calendario.

Y tercer paso sería agregar avisos, cumpleaños, pagos de seguros y fechas que debes tener en cuenta.

Si todo fuera bien, ya luego agregaría componentes de inversiones para calcular benéficos/perdidas..etc.

El proceso de uso sería algo tal que:
te registras,
agregarás una economía (Economía personal, Economía familiar.. Etc)
agregas un banco y en ese banco pones tu CSV.

¿Os parece bien la idea? Consideráis que falta algo?, Cualquier cosa es bienvenida :p

Rivendel

pero seguro que ya existe algo asi, no? has mirado bien?

thelegend

Por el momento, solo he visto excels, Fintonic y alguna app que debías poner a mano todas las transacciones (al menos gratis), pero no me acabaron de convencer.

saMMu

te refieres a linkear la app a tu metodo de pago directamente? no entiendo si no como evitarás meter todas las transacciones manualmente.
ya existen unas cuantas que acceden a tu cuenta bancaria y demás, al menos en US

1 respuesta
aren-pulid0

al final eso es fintonic no? te lee el banco y te hace gastos ingresos y el desglose de estos

1
thelegend

#4 de momento la idea es exportar tus transacciones por csv/Excel , y importarlo en la aplicación, todos los bancos que he usado tienen esa opción.

hda

Yo estoy planteándomelo también. Deseo llevar una app de Android a app web. La uso diariamente y está sin soporte. Me gustaría conservar la integridad y la estructura de su base de datos, pues ya la exporto desde la app de Android para hacer estadísticas avanzadas con python en el PC. Tengo una BBDD poblada desde 2017, con todos y cada uno de mis gastos, todos.

La app de la que hablo es la primera de este hilo: https://www.mediavida.com/foro/off-topic/las-app-de-nuestro-dia-a-dia-681945

1
B

Yo me llegué a hacer una, pero al final me da pereza reclasificar movimientos, por ejemplo si envías un bizum a alguien para pagar una cena o un regalo, o hay un cobro de paypal que puede ser un videojuego o ropa que te has comprado

2 1 respuesta
hda

#8 por eso me gustaría conservar la integridad del diseño de esta BBDD, porque en cinco años ha cubierto todos los casos de uso que he tenido. El problema es que la app en sí esté sin soporte y que sea monoplataforma. Una app web con los mismos casos de uso que esta, usando la misma base de datos y permitiendo un dashboarding avanzando sería crema y, por qué no decirlo, buena presencia en GitHub.

Para mí es un proyecto de bastante envergadura, hace mucho que no hago programación de gestión. Llevo con la idea un chorro de tiempo, lo típico que está en Q2 de la matriz de Eisenhower y no terminas de empujarlo.

Lo fácil lo tengo hecho, que es la interpretación de la BBDD y su explotación xd

2 respuestas
thelegend

#9 si quieres lo hablamos, del tema del diseño / frontend me encargo yo si quieres

1 respuesta
B

#9 y cómo haces la reclasificación de movimientos? Con alguno de los ejemplos que he puesto, por ejemplo, si un mes tienes dos cargos de paypal, uno porque has comprado ropa y otro porque has comprado un curso.

¿Tienes posibilidad de poner la estructura de la base de datos?

Como dices, es un proyecto grande y me gustaría rematarlo bien, a parte de por la presencia en github, para que me ayude más con mis finanzas

1 respuesta
hda

#10 Pues mira, justo lo que me falta a mí es front end. Juguetear con el backend lo tengo más sencillo y, de hecho, me atrae más.

Actualmente el proyecto lo tengo tal que así. Recordemos que todo apunte de gasto es manual.

  1. Diariamente, por la maña, después de cuadrar los gastos del día anterior en la app de android exporto la base de datos
  2. Después de exportarla ejecuto un script en el móvil que me sincroniza el archivo de bbdd con mi nube privada (antiguamente la app tenía integración con dropbox, se perdió hace mucho)

Ahora, desde el PC, si quiero juguetear con los datos:

  1. Ejecuto un script python que me actualiza la bbdd con la última versión que esté en mi nube
  2. Con otro script cargo la bbdd y hago analíticas y dashboarding.

La app de android tiene un dashboarding limitado y para ciertos filtros me es más cómodo desde python. Así que lo que he hecho es estudiarme el esquema de la bbdd de la app de android (SQLite) para cargar y jugar con los datos.


Mis objetivos para el proyecto serían:

  1. Desarrollar un servicio web, posiblemente mediante fastAPI o Flask (esto es entretenido para mí, nunca lo he hecho, pero me veo capaz), que termine exponiendo el dashboarding usando grafana (por mi carencia de frontend).
  2. Comenzar a desarrollar una interfaz con los casos de uso idénticos de la app android (interactuar con la bbdd)
  3. Que el frontend sea en kotlin o ionic sería ideal

El punto 2 me queda bastante lejano porque hace mil que no hago gestión, como comentaba antes. Entiendo que si le meto esfuerzo suficiente lo podría sacar adelante. Ahora bien, el punto 3 me queda a años luz XDDDD


#11 Mira, aquí te dejo las tablas y te las explico por encima:

  1. tbl_notes: es una tabla sin relacionar que se puebla con notas que sirven de plantilla en los apuntes
  2. tbl_budget: es una tabla que sirve para crear presupuestos máximos por categoría
  3. tbl_account: las cuentas y su información (nombre, posición en la que se muestra, si está activa o no, si es de crédito o no, el color en el que se muestra) y su inicialización (saldo inicial o límite de crédito máximo si es de crédito)
  4. tbl_cat: para las categorías de los gastos (Nombre, color, icono asociado, si es de gasto o de ingreso)
  5. tbl_transfer: tabla de transferencias entre las diferentes cuentas. El tipo, en vez de crear un apunte de ingreso y uno de devengo, monta esta tabla de transferencias. Ejemplo práctico: cuando saco dinero del banco a mi cartera para tener metálico. Esta tabla entraña: desde qué cuenta (de tbl_account) hasta qué cuenta (de tbl_account), cantidad transferida, fecha y nota
  6. tbl_trans (de transaction): tabla para los apuntes. Necesita de las id de categoría del apunte e id de la cuenta sobre la que se produce. Obviamente, se necesita la cantidad; además: la fecha, el nombre para el apunte, nota para el apunte. La app incluye información sobre notificación y apuntes recursivos
  7. tbl_r_trans: una tabla para los apuntes recursivos. Necesitas la categoría y la id de la cuenta sobre la que se producen. La cantidad y la frecuencia del apunte. También integra la información sobre el apunte (nombre y nota del mismo) y si se produce notificación. Cuando se ejecuta el apunte recursivo se registra en tbl_trans. Esto permite luego editar apuntes recursivos efectuados sobre la tabla de tbl_trans. Ejemplo práctico: yo tengo el apunte recursivo de luz con un valor estimado de 80€ al mes. Cada vez que se me cobra la luz edito el apunte en tbl_trans que tbl_r_transfer ha creado para ese mes con la cuantía específica de ese mes.

Más o menos es así todo. ¿Cómo lo ves?

PD: ¿Este hilo no debería estar en el subforo de desarrollo?

1 1 respuesta
B

#12 Muchas gracias! Me gusta lo de la tabla de apuntes recursivos. La idea de usar grafana me gusta, es una herramienta muy buena y me vendría bien laboralmente aprender a usarla.

Sobre lo de estar en desarrollo jajaj es cierto, pero lo que empezó como una duda ha acabado convirtiéndose en algo interesante para nosotros que podemos hacer por nosotros mismos.

Yo le voy a dar un try a ver si esta vez lo monto mejor.

Una duda, en el caso de mi banco, tengo habilitada la opción de redondeo, lo que hace es ingresarte diinero en otra cuenta por cada transacción que haces con la tarjeta, a final de mes tienes unos ahorrillos de unos 60 euros. ¿Cómo se puede tratar este caso? porque el dinero aparece como gasto, pero realmente el dinero lo sigues teniendo tú en otra cuenta. En la base de datos veo que hay un identificador por cuenta, así que imagino que el balance global de ambas cuentas es el correcto, el problema lo veo cuando quieras analizar gastos de la cuenta principal, imagino que se puede solucionar filtrando para obviar esos "gastos"

2 respuestas
hda

#13 pues la verdad es que me vendría genial para empujar el proyecto de Q2 (aquello que considero importante pero no urgente). Al final hacer cosas de Q2 es lo que más te realiza, pero requieren de esfuerzo, tesón y tiempo. Justo me escribe OP por MP para charlar sobre llevar este proyecto adelante. Me apetece un montón.

Y ahora vine el pero. El momento es muy malo para mí. Estoy en un pico de trabajo como científico de datos. Además, en septiembre comienzo como profesor asociado, estoy a tope estudiando la asignatura (matemáticas para negocio) y preparando las clases. Por último, estamos dando un empujón fuerte mi jefe, mi compañera y yo para intentar constituir una empresa, cosa que consume un huevo de tiempo también. Me encantaría meterme a tope con este proyecto personal que lleva tanto tiempo en mi Q2, pero lo que no me gusta nada hacer es comprometerme a algo y no cumplir T.T

Pero estoy tentado. Quizás podríamos hacer una videoconferencia. Estructurar el trabajo. Montar un repositorio y poquito a poquito... :clint:

1
allmy

Te estás metiendo en un jardín del carajo. Tienes que mezclar contabilidad financiera con contabilidad de inversiones.

1
hda

#13 te he contestado a la intención del proyecto pero no a la pregunta del caso que presentas. Tiene muy fácil solución, pienso, lo que propones. Porque está la tabla de transferencias, que justamente es para acciones entre cuentas. La característica que propones podría integrarse con facilidad. Simplemente sería algo como: si el apunte es sobre la cuenta A y la cuenta A tiene activado la opción de "restos". Básicamente, añadiría un bool en tbl_account, y un campo de "truncamiento" y un campo destino (con el id a dónde en tbl_account). Cada vez que se ejecutase un apunte sobre la cuenta con "restos" true, la cuantía se truncaría según lo deseado siendo esa diferencia con lo truncado el apunte adicional que se registra en tbl_transfer (desde esa cuenta a la cuenta que tenga asociada esa cuenta para restos).

1 1 respuesta
Fascaso

Opinión por defecto profesional, pero tiraría de alguna herramienta de bi (power bi por ejemplo) con power query metes los Excel que actualices mensual. Te haces un pequeño analisis con filtros y tal, visualmente ajustado a la pantalla del movil y a lo publicas (si no recuerdo mal tienes algo de espacio)

Lo veo más rápido para estas cosas de juntar diferentes orígenes de datos y análisis que una app

1 1 respuesta
B

#16 Hostias, estás a full de curro, ya leí por el foro lo de profesor asociado, leyéndote seguro que te va a ir genial.

Aclarado con lo de la tabla de transferencias, thanks!

Yo voy a intentarlo, aunque sea por mi cuenta, me vendrá bien para controlar los gastos y seguir aprendiendo, así de paso aprovecho el datalake que me monté en local con un docker

1 respuesta
hda

#17 pero justamente la idea es tener una app web/android/ios (por eso de lo kotlin o ionic) donde ir poblando manualmente la bbdd con los apuntes. Si, además, puedes sacar dashboarding de la base de datos aplicando diferentes filtros, mejor que mejor. Por ejemplo [ 1]. Está claro que lo fundamental es desarrollar una app para registrar los apuntes, cada uno, con el mínimo de fricción posible. Una vez tengas las base de datos poblada puedes ofrecer un dashboarding normalillo amén de dar la oportunidad de exportar la bbdd para que el usuario haga el dashboarding personal donde guste, como por ejemplo PowerBI.

#18 Estoy a tope, la verdad. Pero sí que me gustaría supervisar y apoyar en lo que pudiera del proyecto. Lo de montar un repo estaría chulo. Mi perfil de github es 99% de commits jaja, estaría guay tener algo de pull requests y review code jajaja

1 1 respuesta
Fascaso

#19 Es que me parece complicar muchísimo algo relativamente sencillo, la injesta del dato (que serán estos csv's) la tendrás que hacer igual, tanto te da tener esos csv's en una bbdd, en una carpeta en tu pc o dropbox, etc

Actualmente el proyecto lo tengo tal que así. Recordemos que todo apunte de gasto es manual.
Diariamente, por la maña, después de cuadrar los gastos del día anterior en la app de android exporto la base de datos
Después de exportarla ejecuto un script en el móvil que me sincroniza el archivo de bbdd con mi nube privada (antiguamente la app tenía integración con dropbox, se perdió hace mucho)

A esto justo me refiero, una vez tienes esto me conectaría directamente a ello con power BI (dropbox mismo vale, google sheets, etc) pero incluso sin ello, teniendolo en tu pc el análisis/resultado final es el mismo (claro que toda modificación de un dato historico lo tendrías que hacer en el excel en vez bbdd, pero no cambio la salida)

1 respuesta
hda

#20 te entiendo. También te digo que si tuviese que sentarme ante el PC para cuadrar cada gasto que he tenido durante el día simplemente no lo haría. Lo sencillo, para mí, es realizar un gasto, encender el móvil, darle al widget, y registrar el gasto en el momento. El encuadre que hago cada mañana al despertarme es simplemente para controlar que todas mis cuentas están en fase, o si se me ha olvidado añadir algo puntual el día anterior. Básicamente, es distribuir el esfuerzo del registro durante el día durante las acciones de gasto. Y de esto trata el proyecto propuesto. Una vez que se tiene esto, pues a por un dashboarding simple. Si se quiere uno más avanzado: se exporta la bbdd y que el usuario haga lo que propones.

Pero lo realmente complicado, no nos olvidemos, es llevar el registro exhaustivo e intensivo de cada uno de los gastos realizados. Sin esto no vamos a ningún lado, no hay proyecto ni dashboarding. Minimizar la fricción para registrar cada apunte es capital. Si no fuese así ni de coña te podría indicar cuántos euros he donado a indigentes en los últimos 5 años, por ejemplo. Sin datos no hay análisis de datos. Obtener, limpiar e integrar los datos es el 80% de nuestro trabajo, ya sabes xD

Mi único escritorio de móvil, resaltado el widget para los gastos:

pd: la reunión de hoy se ha retrasado 1h, por eso estoy aquí todavía XDXD

1 respuesta
Fascaso

#21 Si yo sólo digo que me parece sobrecomplicar algo que de base ya tienes. Ya sea por que te lo vas a tener que bajar si o si de las web bancarias/inversiones/app o por que si o si te va a tocar meter registros manuales para añadir datos que no tienes (extractos de cajero y en que se gasta cada cosa de eso) esta parte te toca hacerla siempre (la automatices o no)

Vamos, yo por mi parte lo que hice en su momento fue bajarme todos los tipos de datos que tenía (banco, indexa, etc) a diferentes csv, la extructura es común (fecha, tipo de gasto) y lo trato con power query o similares para crear un modelo sencillo juntando los diferentes orígenes de datos. Pero admito que fue algo más por curiosidad que otra cosa y ahí quedo to feo.

1 respuesta
hda

#22 Es que son dos problemas separados: (1) obtención de datos (2) análisis de datos.

Para (1), pues depende del usuario. Hay quienes, como @lecherito, haciendo uso de la directiva PSD2, se ha montado un titan contra las APIs de su(s) banco(s) y mediante grafana hace el (2) dashboarding. Es muy atractivo esto. Para mí, por ejemplo, me es insuficiente, porque me gusta especificar cada apunte (en los registros bancarios hay varios apuntes oscuros), además de que hay opciones no automatizables como el gasto de efectivo.

Y para (2), pues una vez que tengas los datos puedes hacer lo que quieras, claro.

Por eso digo que quizás este hilo debería ir mejor en el subforo de desarrollo, para desarrollar una app de registro de gastos y dashboarding.

1 1 respuesta
SmirroLL

#23 Y lo consulté y descarté el reporte tras ello, pero sí, lo muevo que no tiene sentido allí por ahora.

1
allmy

Yo tengo un excel que te hace el balance y la PL incluyendo las plataformas de inversión que tengo. Al final me da un net worth mensual (que se podría hacer diario), un loan book, y lo próximo le voy a meter exposición por asset class y geográfica. Las proyecciones he pasado de hacerlas porque tengo tanto variable que sería absurdo hacerlo.

Los gastos se los meto a pelo cada mes, pero podría sacar los estractos de tarjeta y meterlos en CSV.

Si queréis que os ayude con algo, me podéis decir...

1
thelegend

Yo mañana me voy de vacaciones... Y dudo que pueda aportar nada hasta la semana que viene.

Sobre lo que tengo actualmente es una app web, el template es de @isvidal que lo vi interesante

https://github.com/jvidalv/nextal

Mi idea es usar nextjs que me siento cómodo, y si realmente tengo que pasarlo a móvil usaría React Native.

Tanto si unimos fuerzas como sino iré poniendo pantallazo de la App a ver que os parece, actualmente ya tengo algunos mocks que se ven en un calendario anual pintando días verdes y rojos y pasando por encima sale el listado de transacciones...pero bueno que aún queda.

La semana que viene podemos hacer una vídeo llamada y poner puntos en común y que podemos aportar cada uno 💪

2
Lecherito

Esto es un jardín muy divertido a la par que difícil/largo. Lo bueno es que una vez que lo tie es más o menos preparado ya solo es algo más de visualización o lo que sea que al final es una simple query en grafana.

Tengo un hilo creado sobre cómo coger datos del banco directamente por si vas a ir por ese camino

3 1 respuesta
hda

#27 Pues no estaría mal un fork a lo tuyo y sobre ello implementar los casos de uso y la estructura de bdd que presento en #12, para terminar con un front react o similar.

La caracterísitca de poder integrar apuntes vía PSD2 estaría muy chula. A mí me simplificaría el flujo de trabajo, pienso, aunque luego tuviese que editar cada apunte importado vía API manualmente.

1 respuesta
Soy_ZdRaVo

Si al final os atrevéis a sacarlo “al mercado” y tenéis dudas de temas de legalidad, propiedad intelectual, regulación, protección de datos etc, avisadme.

Que estoy aquí lurkeando y me mola mucho la idea

4
oho

Llevo todas las vacaciones liado con la misma idea, un programa chapucerillo cli de finanzas personales para mí, es algo muy sencillo con bash y Ledger-cli sincronizando mis cuentas vía scraping. Pero por sencillo que lo quería sigo liado en ello y no deja de estar muy verde. Si termino logrando algo que me sea útil lo comparto por aquí. Gracias por publicar vuestras ideas.

Usuarios habituales