Ett Jonix-projekt · Codeberg

Kuvertbudgetering ovanpå hledger, helt lokalt.

Larin är ett fritt budgetsystem för dig som vill ge varje krona ett bestämt jobb — utan att lämna över ekonomin till en molntjänst. Allt bygger på vanliga textfiler och hledger: du äger journalerna, versions­hanterar dem med git, och förlorar aldrig tillgången för att en tjänst ändrar villkor eller läggs ner.

Arkitektur

En motor, tre gränssnitt

ledgerctl är den auktoritativa motorn — den enda som rör journalerna. Larin CLI, Emacs och den statiska webben är separata konsumenter som alla pratar med motorn genom samma versionsmärkta JSON-kontrakt, och räknar aldrig fram egna versioner av ekonomin.

// dataflöde

Bank-CSV ──► import och routing ──► finance.journal
                                               │
                                 budgetjournaler och all.journal
                                               │
                                               ▼
                                        ledgerctl
                              regler, analys, preview/apply och JSON
                                               │
                     ┌─────────────────────────┼─────────────────────────┐
                     ▼                         ▼                         ▼
                Larin CLI                 Emacs-UI                 statisk webb
           terminal och TAB-          fullständig vy och          skrivskyddad
             komplettering             administration                 vy

Kom in där du vill

Tre funktionella nivåer

Larin har vuxit fram i tre nivåer som fungerar oberoende av varandra — det går utmärkt att stanna vid nivå ett eller två och fortsätta jobba direkt med journalerna på hledgers vanliga sätt.

1

Bara bankparsern

Använd CSV-parsern för att skapa journaler i hledger-format — inget annat.

2

Import och routing

ledgerctl import och suggest-routes känner igen och normaliserar de varianter av mottagarnamn bankens CSV-filer ger — t.ex. ICA Hörnan, ICA Stormarknad och Amazon134FX.

3

Full kuvertbudget

Varje krona tilldelas en bestämd uppgift, med kuverttäckningsinvarianten som vakt.

Funktioner

Vad Larin kan göra

Import

CSV-import från banker (för närvarande Swedbank, systemet är utbyggbart), med preflight-kontroll och skydd mot att felaktiga dubbletter smyger in i journalen.

Kuvertbudget

Fördela pengar till kuvert, flytta mellan dem och se avvikelser, historik och köpintervall som stabil JSON — med YNAB-liknande semantik byggd på hledgers virtuella posteringar.

Verifiering

Doctor kontrollerar journaler, budgetinvariant och arbetsyta — helt skrivskyddat. Inget skrivs förrän ett explicit preview/apply-steg godkänns.

Årsarkiv

Försegla avslutade år med SHA-256-manifest och valfri GPG-signering, förankrat i git — dry-run tills --commit anges.

Kärnregeln

Kuverttäckningsinvarianten

När budgetnivån är aktiverad måste varje bokföringspost under expenses:* matcha exakt ett namngivet kuvert. Noll träffar gör utgiften osynlig för budgeten; flera träffar dubbelräknar den — ledgerctl blockerar båda. Okända bankutgifter får ett reserverat, synligt reservkuvert:

// budget.conf

[envelope uncategorized]
label = Att kategorisera
accounts = expenses:uncategorized

Ingen installation krävs

Prova Larin i en container

Den containeriserade demon kräver bara Podman eller Docker, använder påhittade data och rör aldrig en riktig budget från värddatorn.

// terminal

./demo/demo.sh          budgetpanel i terminal-Emacs
./demo/demo.sh cli      interaktiv Larin-klient
./demo/demo.sh web      statisk webbdemo
./demo/demo.sh test     hela acceptanstestet

Innan du börjar

Säkerhet och krav

Säkerhetsmodell

  • Import gör preflight innan journalen ändras
  • Möjliga dubbletter tas aldrig bort automatiskt
  • Budget- och adminmutationer kräver preview som standard
  • Webbexport byggs atomiskt och vägrar en blandad revision

Krav för lokal drift

  • Bash och Python 3.10 eller senare
  • hledger ≥ 1.50.4 och < 2.0
  • Emacs 29.1+ för Emacs-konsumenten (valfri)