Darano

Multi-service monorepo for the Darano financial/crypto platform.

Services

Process Directory Stack Local Port
api api/ Go / Gin (REST gateway) 8000
auth auth/ Go / gRPC 8100
wallet wallet/ Go / gRPC 8200
wallet-market wallet/ Go / gRPC 8300
wallet-alert wallet/ Go / gRPC 8400
wallet-internal wallet/ Go / gRPC 8500
wallet-stream wallet/ Go (background)
admin AdminPanel/ Python / Django 8080
ui ui/ TypeScript / Next.js 3000

api is the only public-facing HTTP service. All other Go services communicate over gRPC. AdminPanel reads Postgres directly.

Prerequisites

  • Go 1.22+
  • Node.js 20+ with Yarn
  • Python 3.11+ with uv
  • air — Go hot reload (go install github.com/air-verse/air@latest)
  • buf — protobuf code generation
  • overmind or foreman — Procfile runner
  • PostgreSQL 16, Redis, RabbitMQ running locally (or via Docker)

Infrastructure

Start the shared infrastructure (Postgres, Redis, RabbitMQ, MinIO):

cd DevOps/dev
docker compose -f infra-compose.yml up -d

Running Everything

From the repo root:

overmind start
# or
foreman start

air handles the initial build and restarts Go services on any .go file change. Next.js and Django have their own built-in reloaders.

To tail a specific service:

overmind connect api

Building Protos

Each Go service and the UI depend on generated protobuf code. Run this before the first build or after any .proto change:

# inside each Go service directory
make build-proto

# inside ui/
yarn build-proto

Individual Services

Go services (api, auth, wallet)

make dep        # install tools (buf, air, swag, protoc plugins)
make build      # generate protos + compile binary
make dev        # hot reload via air
make test       # run tests

Wallet sub-services (separate processes sharing one binary)

cd wallet
make dev-wallet     # wallet  → :8200
make dev-market     # market  → :8300
make dev-alert      # alert   → :8400 (alias; use air -c .alert.air.toml)
make dev-stream     # stream

AdminPanel

cd AdminPanel
uv run python src/manage.py migrate
uv run python src/manage.py runserver 0.0.0.0:8080

UI

cd ui
yarn dev        # starts Next.js on :3000; buf generate runs automatically

Configuration

Each service reads a TOML config file loaded by fig:

Service Config file
api api/cfg.toml
auth auth/cfg.toml
wallet wallet/wallet.cfg.toml
market wallet/market.cfg.toml
alert wallet/alert.cfg.toml
internal wallet wallet/wallet.internal.cfg.toml
stream wallet/cfg.toml

The canonical reference for all credential values is DevOps/services/srv-dev/cfg/fig.toml (used by Docker deployments).

JWT keys for local dev are read from DevOps/services/srv-dev/cfg/jwt/.

Environment Variables (UI)

ui/.env.development.local is pre-configured for local development:

NEXT_PUBLIC_API_URL=http://localhost:8000/
NEXTAUTH_URL=http://localhost:3000/

Log Directories

Go services write logs to ./log/ relative to their directory. Create these before first run:

mkdir -p api/log auth/log wallet/log
S
Description
No description provided
Readme 29 KiB
Languages
Procfile 100%