first commit

This commit is contained in:
2026-06-03 10:37:10 +03:30
commit f318708ee0
+139
View File
@@ -0,0 +1,139 @@
# 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](https://github.com/astral-sh/uv)
- [air](https://github.com/air-verse/air) — Go hot reload (`go install github.com/air-verse/air@latest`)
- [buf](https://buf.build/docs/installation) — protobuf code generation
- [overmind](https://github.com/DarthSim/overmind) or [foreman](https://github.com/ddollar/foreman) — Procfile runner
- PostgreSQL 16, Redis, RabbitMQ running locally (or via Docker)
## Infrastructure
Start the shared infrastructure (Postgres, Redis, RabbitMQ, MinIO):
```bash
cd DevOps/dev
docker compose -f infra-compose.yml up -d
```
## Running Everything
From the repo root:
```bash
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:
```bash
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:
```bash
# inside each Go service directory
make build-proto
# inside ui/
yarn build-proto
```
## Individual Services
### Go services (`api`, `auth`, `wallet`)
```bash
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)
```bash
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
```bash
cd AdminPanel
uv run python src/manage.py migrate
uv run python src/manage.py runserver 0.0.0.0:8080
```
### UI
```bash
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:
```bash
mkdir -p api/log auth/log wallet/log
```