Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
fundarr
command
Fundarr: one place that connects your exchanges, brokers and wallets, and keeps your portfolio tools fed with their history.
|
Fundarr: one place that connects your exchanges, brokers and wallets, and keeps your portfolio tools fed with their history. |
|
Package docs holds the OpenAPI description of the read API, served by Fundarr at /api/v1/openapi.yaml.
|
Package docs holds the OpenAPI description of the read API, served by Fundarr at /api/v1/openapi.yaml. |
|
internal
|
|
|
demo
Package demo makes up a portfolio for FUNDARR_DEMO=1, so apps can be built on the read API without real accounts: three crypto sources (Binance, Kraken, a Ledger) from 2023 to today, with monthly buys, staking, moves to the Ledger, a swap to USDC and sales for euros; and a Trade Republic account (its CSV export imported) with ETF savings plans on a compte-titres and a PEA, and a stock paying dividends.
|
Package demo makes up a portfolio for FUNDARR_DEMO=1, so apps can be built on the read API without real accounts: three crypto sources (Binance, Kraken, a Ledger) from 2023 to today, with monthly buys, staking, moves to the Ledger, a swap to USDC and sales for euros; and a Trade Republic account (its CSV export imported) with ETF savings plans on a compte-titres and a PEA, and a stock paying dividends. |
|
dest
Package dest defines where normalized activities are delivered (portfolio trackers, budgeting apps, files) and keeps the registry of destinations.
|
Package dest defines where normalized activities are delivered (portfolio trackers, budgeting apps, files) and keeps the registry of destinations. |
|
dest/ghostfolio
Package ghostfolio delivers activities to a Ghostfolio server through its REST API (POST /api/v1/import), signed in with the user's security token (POST /api/v1/auth/anonymous gives a JWT, renewed when it is refused).
|
Package ghostfolio delivers activities to a Ghostfolio server through its REST API (POST /api/v1/import), signed in with the user's security token (POST /api/v1/auth/anonymous gives a JWT, renewed when it is refused). |
|
dest/wealthfolio
Package wealthfolio delivers activities to a Wealthfolio server through its MCP endpoint (import pipeline: validate, then commit as one run).
|
Package wealthfolio delivers activities to a Wealthfolio server through its MCP endpoint (import pipeline: validate, then commit as one run). |
|
engine
Package engine runs syncs (source → history) and pushes (history → destinations), on demand and on a schedule.
|
Package engine runs syncs (source → history) and pushes (history → destinations), on demand and on a schedule. |
|
secret
Package secret encrypts connector credentials at rest (AES-256-GCM) and derives the other keys Fundarr needs from one master key.
|
Package secret encrypts connector credentials at rest (AES-256-GCM) and derives the other keys Fundarr needs from one master key. |
|
server
Package server is Fundarr's HTTP API and the web UI it serves.
|
Package server is Fundarr's HTTP API and the web UI it serves. |
|
source
Package source defines what a connector to a platform (exchange, broker, blockchain) must do, and keeps the registry of available connectors.
|
Package source defines what a connector to a platform (exchange, broker, blockchain) must do, and keeps the registry of available connectors. |
|
source/binance
Package binance reads a Binance account's history and balances with a read-only API key: deposits and withdrawals, spot trades (delisted pairs included), converts, card and bank purchases, dust conversions, distributions (airdrops, token swaps), Auto-Invest, Simple Earn rewards, ETH/SOL liquid staking, Binance Pay and P2P. Binance is treated as one account: moves between its internal wallets (spot, funding, earn) are not activities.
|
Package binance reads a Binance account's history and balances with a read-only API key: deposits and withdrawals, spot trades (delisted pairs included), converts, card and bank purchases, dust conversions, distributions (airdrops, token swaps), Auto-Invest, Simple Earn rewards, ETH/SOL liquid staking, Binance Pay and P2P. Binance is treated as one account: moves between its internal wallets (spot, funding, earn) are not activities. |
|
source/bitcoin
Package bitcoin reads a Bitcoin wallet from its extended public key (xpub, ypub or zpub): addresses are derived locally, history and balances come from an Esplora API (mempool.space by default, or your own instance).
|
Package bitcoin reads a Bitcoin wallet from its extended public key (xpub, ypub or zpub): addresses are derived locally, history and balances come from an Esplora API (mempool.space by default, or your own instance). |
|
source/bitpanda
Package bitpanda reads a Bitpanda account through the Public API (https://api.public.bitpanda.com/v1, docs.public.bitpanda.com) with a key limited to the Balances and Transaction scopes.
|
Package bitpanda reads a Bitpanda account through the Public API (https://api.public.bitpanda.com/v1, docs.public.bitpanda.com) with a key limited to the Balances and Transaction scopes. |
|
source/cardano
Package cardano reads a Cardano wallet from its stake address: every address of a Shelley wallet shares the stake credential, so the account's history, staking rewards and balance come from it, through a Koios API (api.koios.rest by default, free, an API key is optional).
|
Package cardano reads a Cardano wallet from its stake address: every address of a Shelley wallet shares the stake credential, so the account's history, staking rewards and balance come from it, through a Koios API (api.koios.rest by default, free, an API key is optional). |
|
source/coinbase
Package coinbase reads a Coinbase account (the retail app and Advanced Trade) with a view-only CDP API key.
|
Package coinbase reads a Coinbase account (the retail app and Advanced Trade) with a view-only CDP API key. |
|
source/evm
Package evm reads an Ethereum-compatible wallet (Ledger, MetaMask…) from its public address: native coin and ERC-20 history and balances, on one or more networks.
|
Package evm reads an Ethereum-compatible wallet (Ledger, MetaMask…) from its public address: native coin and ERC-20 history and balances, on one or more networks. |
|
source/kraken
Package kraken connects a Kraken account through the spot REST API with a read-only key ("Query Funds" and "Query Ledger Entries").
|
Package kraken connects a Kraken account through the spot REST API with a read-only key ("Query Funds" and "Query Ledger Entries"). |
|
source/okx
Package okx connects an OKX account through the v5 REST API with a read-only key.
|
Package okx connects an OKX account through the v5 REST API with a read-only key. |
|
source/solana
Package solana reads a Solana wallet (Phantom, Solflare, Ledger…) from its public address: SOL and SPL token history and balances.
|
Package solana reads a Solana wallet (Phantom, Solflare, Ledger…) from its public address: SOL and SPL token history and balances. |
|
source/traderepublic
Package traderepublic reads a Trade Republic account (compte-titres, PEA, crypto) in one of two ways:
|
Package traderepublic reads a Trade Republic account (compte-titres, PEA, crypto) in one of two ways: |
|
source/tron
Package tron reads a Tron wallet (Ledger, TronLink…) from its public address: TRX and TRC-20 history and balances.
|
Package tron reads a Tron wallet (Ledger, TronLink…) from its public address: TRX and TRC-20 history and balances. |
|
source/wallet
Package wallet is one source for a whole self-custody wallet (a Ledger, a Trezor…): every account it holds, one key or address per line, each read on its own blockchain by the matching connector.
|
Package wallet is one source for a whole self-custody wallet (a Ledger, a Trezor…): every account it holds, one key or address per line, each read on its own blockchain by the matching connector. |
|
source/xrp
Package xrp reads an XRP Ledger account (Ledger, Xaman…) from its classic address: XRP and issued-currency history and balances.
|
Package xrp reads an XRP Ledger account (Ledger, Xaman…) from its classic address: XRP and issued-currency history and balances. |
|
store
Package store keeps Fundarr's state in one SQLite file: configured sources and destinations (secrets sealed), the normalized activity history, the latest balances, what was delivered where, and the run log.
|
Package store keeps Fundarr's state in one SQLite file: configured sources and destinations (secrets sealed), the normalized activity history, the latest balances, what was delivered where, and the run log. |
|
pkg
|
|
|
api
Package api holds the JSON types of Fundarr's read API (/api/v1, see docs/api.md), so a Go app decodes the answers straight into them, and turns a copy of the history into what pkg/model and pkg/portfolio take:
|
Package api holds the JSON types of Fundarr's read API (/api/v1, see docs/api.md), so a Go app decodes the answers straight into them, and turns a copy of the history into what pkg/model and pkg/portfolio take: |
|
model
Package model is the common language between sources and destinations: every platform's history is normalized into Activities, every platform's holdings into Balances.
|
Package model is the common language between sources and destinations: every platform's history is normalized into Activities, every platform's holdings into Balances. |
|
portfolio
Package portfolio values the crypto and securities held across every source: what they are worth, what went into them and what they gained, now and day by day, and the French tax on crypto disposals (formulaire 2086, crypto only).
|
Package portfolio values the crypto and securities held across every source: what they are worth, what went into them and what they gained, now and day by day, and the French tax on crypto disposals (formulaire 2086, crypto only). |
|
price
Package price values assets on a given day, in a given currency, from free public market data: Binance and OKX daily candles for crypto, justETF's daily quotes for stocks and ETFs by ISIN (Yahoo Finance as a fallback), the European Central Bank's reference rates (through Frankfurter) between currencies.
|
Package price values assets on a given day, in a given currency, from free public market data: Binance and OKX daily candles for crypto, justETF's daily quotes for stocks and ETFs by ISIN (Yahoo Finance as a fallback), the European Central Bank's reference rates (through Frankfurter) between currencies. |
|
Package web holds the built UI (web/dist, produced by `npm run build`).
|
Package web holds the built UI (web/dist, produced by `npm run build`). |
Click to show internal directories.
Click to hide internal directories.



