Controtto

GPL 3.0
51
  • Linux
  • Apple

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.

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.

# Install the dependencies go mod tidy # Set the .env mv .env.example .env # Source the env variables . <(cat .env | grep -v -e '^$' | grep -v "#" | awk '{}')

Build and Run

go run ./cmd/main.go # go build ./cmd/main.go to just build it

Development env

go install github.com/cosmtrek/air@latest # Download air air -c air.toml

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.

mkdir data podman container run --rm -p 8000:8000 -v $(pwd)/data:/data contre95/controtto

Run tests

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.
-
security - not tested
A
license - permissive license
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

You are capable of interpreting golang code and judge it under the most strict ddd and clean architecture paragidms

  1. Demo
    1. Build and Run
      1. Development env
        1. Run with Podman
          1. Run tests
            1. TODO

          Related MCP Servers

          • -
            security
            A
            license
            -
            quality
            Go server implementing Model Context Protocol (MCP) for filesystem operations.
            Last updated -
            228
            Go
            MIT License
          • -
            security
            A
            license
            -
            quality
            godoc-mcp is a Model Context Protocol (MCP) server that provides efficient access to Go documentation. It helps LLMs understand Go projects by providing direct access to package documentation without needing to read entire source files.
            Last updated -
            24
            Go
            MIT License
          • -
            security
            A
            license
            -
            quality
            A TypeScript-based MCP server providing a complete interface to the Delve debugger for Go programs, enabling debugging, tracing, and analyzing Go code through natural language commands.
            Last updated -
            1
            TypeScript
            MIT License
            • Linux
            • Apple
          • -
            security
            -
            license
            -
            quality
            A Model Context Protocol (MCP) server that allows AI assistants like Claude to interact with Go's Language Server Protocol (LSP) and benefit from advanced Go code analysis features.
            Last updated -
            Go
            Apache 2.0

          View all related MCP servers

          ID: 10z262ljps