Controtto

by contre95
Verified

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.

📊 Control

Un sistema de seguimiento de pérdidas y ganancias autoalojado, creado con Go, HTMX y sin JavaScript . Controtto registra tus transacciones, las guarda en un archivo SQLite y devuelve todo tipo de cálculos, incluyendo:

  • Precio medio de compra
  • Valor actual de los activos
  • Historial de transacciones
  • Transacción de importación/exportación (ver ejemplo )
  • Ganancias y pérdidas

Para obtener el precio de un activo, Controtto se basa principalmente en 4 API ( ver código ).

  • Binance - API pública, no se necesita token.
  • BingX - API pública, no se necesita token.
  • Alpha Vantage : Acciones, gratis pero con límite de tasa corto. ( Obtén un token y configura CONTROTTO_AVANTAGE_TOKEN )
  • Tiingo - Acciones, criptomonedas y Forex. ( crear cuenta/token y configurar CONTROTTO_TIINGO_TOKEN )

Manifestación

También puedes consultar la demostración en demo.contre.io , la base de datos se reinicia cada hora.

Todas las configuraciones se establecen en el archivo .env y se transfieren como variables de entorno. Las variables CONTROTTO_PORT y CONTROTTO_DB_PATH están disponibles.

# 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 '{}')

Construir y ejecutar

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

Entorno de desarrollo

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

y acceder a localhost:3000

Corre con Podman

Hay una imagen de contenedor disponible en el registro público de Docker. Si desea usar Docker, simplemente reemplace podman por docker .

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

Ejecutar pruebas

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

HACER

  • Más pruebas
  • También sería útil contar con envoltorios para registro y métricas.
  • Agregue cuentas para realizar un seguimiento del patrimonio neto total.
  • Elimina todo el CSS y usa style.css personalizado + Tailwind CDN.
-
security - not tested
A
license - permissive license
-
quality - not tested

Eres capaz de interpretar el código golang y juzgarlo bajo los más estrictos paradigmas de arquitectura limpia y ddd.

  1. Demo
    1. Build and Run
      1. Development env
        1. Run with Podman
          1. Run tests
            1. TODO
          ID: 10z262ljps