ManiFinance
Min egen økonomi-app. Den henter posteringer direkte fra mine to banker via open banking og viser budget, opsparing, abonnementer og investeringer. Videoen er optaget med demodata.
Kort fortalt
Hvorfor jeg byggede den
Færdige budget-apps viser et overblik, men man kan ikke selv stille spørgsmål til tallene eller rette den logik, der afgør, hvad en postering er. Jeg ville have rådata i min egen database, en kategorisering jeg selv kan justere, og en måde at spørge ind til tallene på.
Hvad den gør
Hver morgen synkroniserer et job kontiene, henter valuta- og aktiekurser og holder styr på, hvornår bankens samtykke til dataadgang skal fornys.
Valutakurser fra ECB først, så euro-posteringer får dagens kurs med det samme
Aktiekurser for alle papirer i beholdning og på watchlist
Synk af alle konti nye posteringer fra begge banker, uden dubletter
Samtykke-varsel besked, før MitID-samtykket til banken udløber
Alarmer dobbelttræk, usædvanligt store beløb og gebyrer
Månedsafslutning når en lønperiode er slut, gøres den op én gang
Ugemail kun om søndagen: ugens tal i fem linjer
Der er budget, opsparingsmål koblet til konti med en forventet dato, en afkastkurve for investeringer og et tal for, hvad der er til rådighed, når faste udgifter og aftalt opsparing er trukket fra. Muligt dobbelttræk og usædvanligt store udgifter kommer som push-besked på telefonen, og hver lønperiode bliver gjort op, når den er slut.
Kategorisering
Kategoriseringen følger faste regler i en bestemt rækkefølge:
- 1Manuel rettelsevinder altid, hvis jeg selv har rettet en postering
- 2Egne reglerbruges dernæst, hvis ingen manuel rettelse findes
- 3Automatiske mønstreer sidste udvej
Overførsler mellem mine egne konti bliver genkendt, så de ikke tæller som udgifter to gange. Kvitteringer kan tilføjes som foto.
- Banken skriver
MCD 03942 LIME*KRSEL 33GO - Kortkøb og terminalnummer fjernes:
MCD 03942 - Små bogstaver, tegn bliver til mellemrum:
lime krsel 33go - Genkendt blandt kendte butikker
- Appen viserLime
Spørg dine tal
Tallene kan man spørge ind til i en chat i appen og via en MCP-server, så en AI-assistent svarer ud fra de rigtige posteringer i stedet for at gætte.
Har jeg to posteringer fra samme sted på samme dag?
Kalder soeg_posteringer · færdig
Ja, én gang: to ture med Lime samme dag. Bankens tekster er forskellige, så det er to rigtige ture og ikke den samme postering to gange.
Svaret bygger på de posteringer, værktøjet fandt.Chatten og MCP-serveren deler de samme 12 værktøjer:
maanedsoversigtMånedsoversigthistorikMånedshistoriksoeg_posteringerSøg posteringersaldiSalditil_raadighedTil rådighedbudgetstatusBudgetstatusabonnementerAbonnementeropsparingsmaalOpsparingsmålpersonerPersonerinvesteringerInvesteringerkategorierKategoriersaet_kategoriSæt kategori
Teknikken
Next.js og React med en SQLite-database hos Turso og Drizzle til at holde databasens struktur og koden i takt. Bankforbindelsen går gennem Enable Banking, en godkendt formidler af open banking-adgang. Layoutet bygger videre på Jakob Fiskers komponentbibliotek »Fisker Finance«.
- Bankento banker, egne konti
- Enable Bankingopen banking med MitID-samtykke
- TursoSQLite + Drizzle
- AppenNext.js + React, chat og MCP
Afprøvet mod de rigtige tal
Regnestykkerne bag budget og forbrug fandtes i to udgaver, én i koden og én i databasen. Da de blev lagt sammen til én, blev resultatet kørt mod hele databasen, før ændringen gik live. Alle tal på analyse- og budgetsiden stemte, bortset fra fem posteringer på nul kroner, der faldt ud af en optælling.
En gennemgang af hastigheden fik antallet af databaseopslag ned:
Databaseopslag på forsiden
46→31
Databaseopslag på analysesiden
61→29
Den vigtigste lære: kategorisering ud fra bankernes fritekst kræver løbende efterprøvning mod rigtige data. Flere fejl viste sig først, da tallene blev gennemgået systematisk.
Skal vi tage en snak?
Jeg svarer inden for 1–2 hverdage. Det er mig, der svarer, og mig, der bygger siden.