Skip to main content
Glama

Controtto

by contre95
README.md2.8 kB
# 📊 Controtto A self-hosted, P&L tracker made with Go, HTMX and *no JavaScript*. Controtto, keeps track of your transaction saving it in a sqlite file, and returns all sorts of calculations including: * Avg. Buy price * Current asset value * Transaction history * Import / Export transaction (see [sample](./public/assets/export_USDT_ARS.csv)) * Profit & Loss In order to fetch the price of an asset, Controtto relies on mainly 4 APIs ([see code](https://github.com/contre95/controtto/tree/main/src/gateways/markets)). * [Binance](https://api.binance.com/api/v3/ticker/price) - Public API, no token needed. * [BingX](https://open-api.bingx.com/openApi/swap/v2/quote/price) - Public API, no token needed. * [Alpha Vantage](https://www.alphavantage.co/) - Stocks, free but short rate limit. ([get](https://www.alphavantage.co/support/#api-key) an token and set `CONTROTTO_AVANTAGE_TOKEN`) * [Tiingo](https://www.tiingo.com/documentation/) - Stocks, crypto and Forex. ([create](https://www.tiingo.com/) account/token and set `CONTROTTO_TIINGO_TOKEN`) ## Demo You can also check out the demo at [demo.contre.io](https://demo.contre.io), the database resets every hour. https://github.com/user-attachments/assets/28bf8782-6118-47c0-a94b-085e1a7045b2 All configurations are set in the `.env` file and passed as environment variables. Variables `CONTROTTO_PORT` and `CONTROTTO_DB_PATH` are available. ```sh # Install the dependencies go mod tidy # Set the .env mv .env.example .env # Source the env variables export $(grep -v '^#' .env | grep -v '^$' | xargs) ``` ## Build and Run ```sh go run ./cmd/main.go # go build ./cmd/main.go to just build it ``` ## Development env ```sh go install github.com/cosmtrek/air@latest # Download air air -c air.toml ``` and access [localhost:3000](http://localhost:3000) ## Run with Podman A [Container image](https://hub.docker.com/r/contre95/controtto) is available on Docker's public registry. If you want to use Docker, simply replace `podman` with `docker`. ```sh mkdir data podman container run --rm -p 8000:8000 -v $(pwd)/data:/data contre95/controtto ``` ## Run tests ```sh go test -cover ./... # Expected result # ? controtto/cmd [no test files] # ? controtto/src/app/managing [no test files] # ? controtto/src/domain/pnl [no test files] # ? controtto/src/gateways/markets [no test files] # ? controtto/src/gateways/sqlite [no test files] # ? controtto/src/presenters [no test files] # ok controtto/src/app/querying 0.003s coverage: 40.7% of statements ``` ### TODO * More tests * Wrappers for logging and metrics would be nice as well. * Add Accounts to keep track of the total net worth. * Remove all the CSS and use custom `style.css` + Tailwind CDN.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/contre95/controtto'

If you have feedback or need assistance with the MCP directory API, please join our Discord server