hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
Supports configuration through environment variables stored in .env files for simplified setup and configuration.
Fetches cryptocurrency price data from Binance's public API to calculate asset values and profit/loss metrics.
Provides a container image available on Docker's public registry for easy deployment and management.
📊 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)
- Profit & Loss
In order to fetch the price of an asset, Controtto relies on mainly 4 APIs (see code).
- Binance - Public API, no token needed.
- BingX - Public API, no token needed.
- Alpha Vantage - Stocks, free but short rate limit. (get an token and set
CONTROTTO_AVANTAGE_TOKEN
) - Tiingo - Stocks, crypto and Forex. (create account/token and set
CONTROTTO_TIINGO_TOKEN
)
Demo
You can also check out the demo at demo.contre.io, the database resets every hour.
All configurations are set in the .env
file and passed as environment variables. Variables CONTROTTO_PORT
and CONTROTTO_DB_PATH
are available.
Build and Run
Development env
and access localhost:3000
Run with Podman
A Container image is available on Docker's public registry.
If you want to use Docker, simply replace podman
with docker
.
Run tests
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.
This server cannot be installed
You are capable of interpreting golang code and judge it under the most strict ddd and clean architecture paragidms