Financial Balance

Balance és una aplicació web per visualitzar dades financeres personals a partir d’un fitxer CSV.

La idea del projecte era convertir els moviments d’un extracte bancari en una interfície que permeti entendre millor l’evolució dels ingressos i les despeses, tant de manera global com per mesos i categories.

Del CSV a les dades estructurades

El procés comença important un CSV amb quatre camps: data, categoria, import i descripció.

A partir d’aquí, Balance ordena els moviments per any i mes. Els imports positius es tracten com a ingressos i els negatius com a despeses. Per cada període calcula els totals, el balanç i les quantitats acumulades de cada categoria.

Les categories no necessiten cap identificador, però sí que han de coincidir amb els noms definits a l’aplicació: House, Food, Sports, Health, Eating out, Entertainment, Bills, Car, Transport, Taxi, Cosmetic, Clothes, Gifts i Salary. La comparació és exacta, de manera que també cal respectar les majúscules i els espais.

Les dades es processen completament al navegador i es conserven a sessionStorage. Això permet mantenir-les mentre la sessió continua oberta sense haver de construir un backend ni guardar els moviments en una base de dades externa.

Obrir la demo ↗

Una interfície dividida en components

La interfície està construïda amb Vue 2. Cada part de la visualització té el seu propi component: la càrrega del CSV, la selecció de dates, la posició global, el resum per categories, els gràfics mensuals i el detall dels moviments.

El component principal coordina aquestes peces i distribueix les dades ja estructurades. D’aquesta manera, cada bloc s’encarrega d’una responsabilitat concreta i es pot actualitzar quan l’usuari canvia l’any o el mes seleccionat.

Element UI proporciona els selectors, les targetes i l’estructura general de la pàgina. Per a la part gràfica vaig utilitzar Highcharts, que permet representar les dades amb gràfics de barres, línies i sectors.

El resultat mostra els totals anuals d’ingressos, despeses i balanç, calcula les mitjanes mensuals i permet veure quin pes té cada categoria. També es pot seleccionar un mes concret per consultar-ne l’evolució i els moviments individuals.

És una arquitectura senzilla: el CSV entra, Vue organitza l’estat i els components, i Highcharts converteix els càlculs en una representació visual. Tot funciona com una aplicació web de client, sense serveis addicionals al servidor.

Veure el codi a GitHub ↗