Metadata-Version: 2.4
Name: finstore
Version: 0.1.0
Summary: Backend-agnostic local repository of a user's financial data
Project-URL: Homepage, https://github.com/stevel408/finstore
Project-URL: Repository, https://github.com/stevel408/finstore
Project-URL: Bug Tracker, https://github.com/stevel408/finstore/issues
Author-email: Steven Li <steve.98@gmail.com>
License: Apache-2.0
License-File: LICENSE
Keywords: banking,finance,financial-data,gnucash,ofx,personal-finance,simplefin
Requires-Python: >=3.11
Requires-Dist: platformdirs>=4
Requires-Dist: pydantic>=2
Provides-Extra: dev
Requires-Dist: fastapi>=0.110; extra == 'dev'
Requires-Dist: httpx>=0.27; extra == 'dev'
Requires-Dist: import-linter>=2.1; extra == 'dev'
Requires-Dist: itsdangerous>=2.1; extra == 'dev'
Requires-Dist: jinja2>=3.1; extra == 'dev'
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pydantic-settings>=2.2; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest-httpx>=0.30; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: python-multipart>=0.0.9; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Requires-Dist: typer>=0.12; extra == 'dev'
Requires-Dist: uvicorn[standard]>=0.27; extra == 'dev'
Provides-Extra: local
Requires-Dist: fastapi>=0.110; extra == 'local'
Requires-Dist: httpx>=0.27; extra == 'local'
Requires-Dist: itsdangerous>=2.1; extra == 'local'
Requires-Dist: jinja2>=3.1; extra == 'local'
Requires-Dist: pydantic-settings>=2.2; extra == 'local'
Requires-Dist: python-multipart>=0.0.9; extra == 'local'
Requires-Dist: typer>=0.12; extra == 'local'
Requires-Dist: uvicorn[standard]>=0.27; extra == 'local'
Provides-Extra: simplefin
Requires-Dist: httpx>=0.27; extra == 'simplefin'
Description-Content-Type: text/markdown

# finstore

Backend-agnostic local repository of a user's financial data.

## Install

```bash
# Library only (for custom integrations / the gnc-sfin-gateway OFX server)
pip install finstore

# Library + SimpleFIN backend
pip install finstore[simplefin]

# Self-hosted CLI + dashboard (end users)
pipx install 'finstore[local]'
```

## Quick start

```python
import asyncio
import time
from pathlib import Path

import httpx

from finstore import Tenant, fetch
from finstore.backends.simplefin import SimpleFINBackend, SimpleFINCredentials
from finstore.storage.filesystem import FilesystemStorage

tenant  = Tenant(id="local")
storage = FilesystemStorage(root=Path("~/.local/share/finstore").expanduser())
creds   = SimpleFINCredentials(access_url="https://user:pass@bridge.simplefin.org/simplefin")

dtstart = int(time.time()) - 90 * 86400  # last 90 days

async def main() -> None:
    async with httpx.AsyncClient() as http_client:
        backend = SimpleFINBackend(credentials=creds, httpx_client=http_client)
        await fetch(tenant, backend, storage, window=(dtstart, None))

    accounts = storage.list_accounts(tenant.id)

asyncio.run(main())
```

## Development

See [docs/contributing.md](docs/contributing.md) for setup, running tests, linting, and CLI usage.

## License

Apache-2.0
