3.5 KiB
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