Code Monkey home page Code Monkey logo

finquick's Issues

drill-down charts / reports

I'm looking at a gnucash income / expect chart and I wonder what's behind one of the bars.

chart.js ?
d3?

migrate gnucash db from mysql to sqlite via CSV

Problem

GnuCash is forever saying "cannot save DB" for which the only recourse I can find is restarting the whole app.

managing mysql is a bit of a pain; it seems like overkill by now.

I'd like to take advantage of Litestream to replicate the DB using s3/minio.

When I exported my gnucash mysql DB to sqlite3 (using gnucash from guix), the result was missing some custom slots from lmSync.js.

Design

  • export gnucash column info in CSV
    • using a query on information_schema in dbeaver
  • import mysql TSV export files into sqlite3 by enhancing loadTables.js

TODO:

  • handle strange quoting in .tsv when importing tables for migration 79ca8fd
  • clean up quoting in split_detail
  • migrate split_detail from .tsv to .json 4952dea, bb3fd06
  • clean-up of date columns (slots.timespec_val, splits.reconcile_date)

copy and paste for finquick

for example, RHOC sale - from explorer. Teach browser to copy transaction(s) to clipboard; then paste and teach finquick to grok / sync.

maybe even account history, rather than scraping or even OFX.

and maybe drag-n-drop for files

cosmos account history

PWA: Search transactions etc.

How about caching split_detail.json in localStorage?

Compressed should work for search: streaming decompress, split into lines, match.

I thought about weekly html files or uploading quarterly csv files to Google drive, but I'd rather not share with Google.

I've been doing pandas lately, which made me wonder about JS dataframe apis... This ine looks cool...

https://github.com/data-forge/data-forge-ts/blob/master/docs/guide.md#browser-installation-and-setup

But ordinary map / filter should work for this.

coinbase: scrape transaction history

I downloaded a "complete" transaction report, but the transactions don't add up to the balance. It seems to be missing "transfers".

But I seem to be able to compute the balance using a DOM query:

acs = document.querySelectorAll('*[data-element="AmountContainer"]')
acs.length // 245
ns = [...acs].map(ac => Number(ac.textContent.split(' ')[0].replace('โˆ’', '-').replace('+', '').replace(',', '')))
sum = ns => ns.reduce((acc, x) => acc + x, 0)
sum(ns)

To get associated transaction info, I'm starting with...

tis = document.querySelectorAll('*[data-component="TransactionItem"]')

convert tsv quicken reports to json lines with invisible XML

As noted in the 2006 item, I have years of data in this tab-separated format; for example:

3/28/08	D0962	            S	STAPLES 00108084 ANKENY IA	Canon Powershot SD	Stuff:Major:AV	R	-249.99

I played with invisible XML and its playground and turned that into...

<tx num="S">
   <date month="3" day="28" year="08"/>
   <account>D0962</account>
   <description>STAPLES 00108084 ANKENY IA</description>
   <split status="R">
      <memo>Canon Powershot SD</memo>
      <category>Stuff:Major:AV</category>
      <amount>-249.99</amount>
   </split>
</tx>

using...

tx: date, account, @num, description, split.

split: memo, category, @status, amount.

date: @month, -"/", @day, -"/", @year, tab.
month: ["0"-"9"]+.
day: ["0"-"9"]+.
year: ["0"-"9"]+.

account: field, tab.
num: -space?, field, tab.
description: field, tab.

memo: field, tab.
category: field, tab { TODO: split on : ? }.
status: field, tab.
amount: field { TODO: constrain to number syntax? }.

-field: ~[" "], (~[#9])*. { don't start with space to avoid ambiguity in num }
-tab: -#9.
-space: -[" "]+.

TODO:

  • handle >1 tx
  • handle >1 split
  • write JSON lines instead of XML
  • find a simple implementation, preferably by aggressively pre-compiling
    • perhaps just use this as a spec for a hand-rolled parser

use calendar for transaction review?

put Imbalance txs on a calendar; let M accept invitation to signal "my budget" or reply with info about why not. Have a bot send the appointments and hence get the replies. Harvest the replies in bulk and sync with gnucash.

GnuCash + guile actors for personal finance automation?

Looking at the configuration of a report I just saved reminds me that it's in guile.

Usually I'm content to use Guile's SQL support to supplement GnuCash features, but I can't do it while GnuCash is running:

the dbi (SQL) backend which comes with GnuCash 2.4 is currently not designed for true multi-user access. -- GnuCash FAQ

I wonder if the guile interpreter in GnuCash would support some sort of API that I could use while it's running.

cc @cwebber

transaction sync: Plaid webhook?

web hook works

doesn't actually send transactions. just a notification

hmm... fetch transaction info to browser localStorage? (which dev / project aimed to do that?)

GnuCash assumes exclusive access to DB

so a webhook couldn't do anything without a restart

mmex - maybe?

mmex: pro

  • kinda simple like Quicken; mature (snap installation, ...); held up to quite a bit of trial usage
  • sqlite3 DB
    • TODO: test whether the app allows updates by other clients
  • cryptocurrency support

mmex: cons

  • categorizing a bunch of transactions involves bringing up the Edit Transaction dialog for each one. Keyboard navigation is awkward at best; I think the mouse is required for OK
  • only 2 levels of categories
  • no classes? but I did see custom fields

mintable - so close!

https://github.com/kevinschaich/mintable
kevinschaich/mintable#36

not sure how to do double-entry accounting in a spreadsheet anyway

found via https://github.com/topics/personal-finance

LedgerSMB - overkill

The transaction page looks more like an invoice than a check register item

Moneygo - not there yet

I struggled with basic usage.

README missing current work: sync uniswap, coinbase, cosmos, lunch money

I noticed someone starred this repo recently; from that perspective, the README is out of date. My current work is stuff like brcal/src/lmSync.js with Agoric / airbnb js style etc.

hm... retroactively update CHANGELOG? https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-cli

yarn conventional-changelog -r 0 -p angular -s -i CHANGELOG.md

promote brcal/ package to top? or move Capper app down?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.