Metadata-Version: 2.4
Name: tzla
Version: 0.1.1
Summary: Terminal crypto portfolio + daily-compounding growth tracker (Jupiter/Solana prices)
Author: Daniel Radosa
License-Expression: MIT
Project-URL: Homepage, https://github.com/danielradosa/tzla
Project-URL: Repository, https://github.com/danielradosa/tzla
Keywords: crypto,portfolio,solana,jupiter,cli,terminal,compounding
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Office/Business :: Financial :: Investment
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.31
Requires-Dist: rich>=13
Requires-Dist: plotext>=5.2
Dynamic: license-file

# tzla

Terminal crypto portfolio + **daily-compounding growth tracker**. Live prices and
candle charts straight from the [Jupiter](https://jup.ag) (Solana) public API —
no API key. Set a fixed growth plan once and each day see whether you're **ahead
or behind** the curve.

```
$ tzla --grow
            Growth plan — 0.369%/day compounded daily
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃       Day ┃       Date ┃ Plan balance ┃ TZLA amount ┃ Multiple ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ 0 ◀ today │ 2026-06-05 │      $511.76 │       2,199 │    1.00x │
│         1 │ 2026-06-06 │      $513.65 │       2,207 │    1.00x │
│         … │          … │            … │           … │        … │
│         7 │ 2026-06-12 │      $525.13 │       2,256 │    1.03x │
│        30 │ 2026-07-05 │      $571.55 │       2,456 │    1.12x │
│       365 │ 2027-06-05 │    $1,963.00 │       8,435 │    3.84x │
└───────────┴────────────┴──────────────┴─────────────┴──────────┘
Day 0 of 365 • plan today $511.76 • actual $511.76 • on plan (+0.0% vs plan)
```

## Install

`tzla` is a normal Python CLI. The cross-platform way to install it is
[pipx](https://pipx.pypa.io) (Linux, macOS, **and** Windows/PowerShell — it puts
`tzla` on your PATH in an isolated venv).

```bash
# from a local clone
pipx install ./tools/tzla

# straight from git (once pushed)
pipx install "git+https://github.com/danielradosa/tzla"

# after it's published to PyPI
pipx install tzla
```

No pipx? `pip install --user ./tools/tzla` works too. For development:
`pip install -e ./tools/tzla` (editable).

### Windows / Homebrew / Scoop

- **PowerShell**: install pipx (`py -m pip install --user pipx; py -m pipx ensurepath`)
  then `pipx install tzla`. The `tzla` command works in any shell afterwards.
- **Homebrew** and **Scoop** are possible once a release artifact exists (PyPI sdist
  or a GitHub release tarball, needed to pin a checksum). Starter templates live in
  [`packaging/`](packaging/) — fill in the URL + `sha256` after the first publish.

## Usage

```bash
tzla                 # portfolio table + price chart(s)
tzla --no-chart      # table only
tzla -d 90           # 90-day chart history
tzla --coin <mint>   # chart only one token
tzla --grow          # growth-plan tracker (ahead/behind vs the fixed plan)
tzla --where         # show where config files live
tzla --version
```

### The growth plan

`--grow` projects a **fixed** baseline (start date, start value, daily rate,
horizon) and compares today's live total against it:

```bash
tzla --grow                                   # first run auto-anchors to today's total
tzla --grow --reset-plan                      # re-anchor to today
tzla --grow --reset-plan --principal 1000 --rate 0.369 --grow-days 365
```

The plan never re-anchors on its own, so editing your holdings daily can't move
the goal line — the ahead/behind number stays honest.

## Config

Two JSON files in your per-user config dir (`tzla --where` to see exact paths):

| File | Default location | What it is |
|------|------------------|------------|
| `portfolio.json` | `~/.config/tzla/portfolio.json` | Your holdings — edit this daily |
| `plan.json` | `~/.config/tzla/plan.json` | The fixed growth anchor — set once (auto-created on first `--grow`) |

They're deliberately separate so a daily holdings edit can't clobber the plan.
On first run a starter `portfolio.json` is written from the bundled example.

Override locations with `--config` / `--plan`, or point the whole config dir
elsewhere with `$TZLA_HOME` (e.g. `TZLA_HOME=./mydata tzla`). Standard
`$XDG_CONFIG_HOME` is honored.

**portfolio.json** — holdings keyed by Solana token mint address:

```json
{
  "currency": "usd",
  "holdings": {
    "4tWMJCW6tdpVUkwDpX1NEQURbtuQDg7H9DfkjEpGnq5D": { "symbol": "TZLA", "amount": 2199 }
  }
}
```

Add more entries to track several tokens. The `TZLA amount` column in `--grow`
only appears for single-asset portfolios (where "amount" is unambiguous).

See [`src/tzla/data/`](src/tzla/data/) for the example files.

## Notes

- Prices are **USD-only** (Jupiter). Keep `"currency": "usd"`.
- A daily rate like `0.369%` compounds to ~**+284%/year** — that's an idealized
  assumption, not a forecast. The tracker just tells you how far reality drifts
  from it.

MIT licensed.
