Files
Bundle OKF 0.1 · 8 conceitos · Gram21/fundle
Open source Repository Open in the app JSON README (API)
About
# Files
- [Skeleton](_skeleton.md)
- [Fundle Wiki — Quickstart](quickstart.md) - Entry point for the Fundle repository wiki: a stateless, client-only portfolio tracker (React 19 + Vite + TypeScript) with a clean layered architecture and time-weighted return math.
# Directories
- [app](app/)
- [architecture](architecture/)
- [data](data/)
- [domain](domain/)
- [operations](operations/)
- [ui](ui/)
Details
- Kind
- OKF bundles
- Topic
- Finance & crypto
- Publisher
- gram21
- Origin
- okf_github
- Category
- dados
- Version
- 0.1
- Last push
- 2026-08-19T10:05:47Z
- Repository state
- ativo
- Language
- TypeScript
- License
- GPL-3.0
- Added
- 2026-09-08 09:05:43
- Updated
- 2026-09-08 09:05:43
- Origin id
Gram21/fundle:openwiki/index.md
README
<p align="center"> <img src="public/favicon.svg" width="64" height="64" alt="Fundle logo"> </p> <h1 align="center">Fundle</h1> <p align="center"> A free, private portfolio tracker for stocks and ETFs that runs entirely in your browser. </p>  ## What it does Fundle keeps track of what you own and how it's doing — without a server, an account, or your data ever leaving your device. - Add any number of portfolios, each with the stocks or ETFs you hold and the buy orders behind them (date, quantity, price, optional fee). - See the current price, today's change, and how each position and the whole portfolio is doing against what you paid. - A performance chart shows the portfolio's value over time next to its actual percentage gain or loss — separating real investment performance from money you simply added. - Export your data to a file and import it again later, including price history, so switching devices doesn't mean waiting for everything to reload. Everything runs client-side: no account, no server, no tracking. Your portfolio data stays in your browser, and you're always one export away from a backup. The app has an in-app help screen (the **?** button in the header) that walks through the same ground for anyone who wants more detail while using it. ## Running locally ```bash npm install npm run dev ``` Opens on `http://localhost:5173`. Other scripts: ```bash npm test # vitest npm run build # production build into dist/ npm run preview # serve the production build locally ``` ## Deploying to GitHub Pages `.github/workflows/deploy.yml` builds and publishes `dist/` on every push to `main`. Enable it once per repository: **Settings → Pages → Build and deployment → Source: GitHub Actions**. Push to `main` and the app is live at `https://<user>.github.io/<repo>/` a minute or two later. The Vite `base` is `./`, so the same build works on a user site and on a project subpath. To deploy anywhere else, `npm run build` and serve the `dist/` folder — it is plain static files, no server-side code involved. ## Architecture ``` src/ domain/ pure model and math, no IO types, metrics, portfolio, performance data/ market-data port and adapters PriceProvider, yahoo, twelvedata, proxy app/ state, scheduling, persistence store, persistence, schema ui/ React views Overview, PerformanceView, AddAssetForm, SettingsView ``` Dependencies point inwards only: `ui` → `app` → `data`/`domain`, and `domain` imports nothing. Swapping in another market-data API means writing one more `PriceProvider` adapter. ## License GPLv3 — see [LICENSE](LICENSE).