# Fibitex Rango Fork of [OpenWare Rango](https://github.com/openware/rango) based on upstream release **3.1.3**, patched for the Fibitex / OpenDAX 2.6 stack (Barong RS256 JWT + incremental order book on market switch). ## Fibitex documentation | Doc | Topic | |-----|--------| | [`Docs/Fibitex-staging-deploy.md`](../Docs/Fibitex-staging-deploy.md) | Staging deploy | | [`Alvand-P/README.md`](../Alvand-P/README.md) | Compose & image `custom/rango:1` | | [`Docs/README.md`](../Docs/README.md) | Central docs | | [`Docs/06-setup-local.md`](../Docs/06-setup-local.md) | Local setup | Upstream repository: https://github.com/openware/rango Base version: **3.1.3** (Fibitex build: see `VERSION`) ## Fibitex patches 1. **RS256 JWT (Barong 2.6)** — upstream 3.1.2+ accepts EdDSA only; this fork validates Barong `JWT_PUBLIC_KEY` (RSA) via `pkg/auth/validator.go`. 2. **Order book on market switch** — replay `ob-snap` and buffered `ob-inc` before adding the client to the topic, so live increments cannot arrive before the snapshot (`pkg/routing/hub.go`). ## Docker image Alvand-P uses: `custom/rango:1` ```powershell cd Rango docker build -t custom/rango:1 . ``` ## Alvand-P configuration In `Alvand-P/config/app.local.yml`: ```yaml images: rango: custom/rango:1 ``` Restart: ```powershell cd Alvand-P docker compose up -d rango ``` ## Environment Same as upstream Rango — see upstream README sections for RabbitMQ, scopes, and WebSocket paths (`/public`, `/private`). | Variable | Fibitex note | | -------- | ------------ | | `JWT_PUBLIC_KEY` | Base64 PEM of Barong RSA public key (from `rango.env`) | | `LOG_LEVEL` | Use `info` temporarily to see `JWT validator mode: rsa` | ## Verify After login on `www.app.local`: - Order cancel / create updates in UI (private `order` stream) - Switching markets loads order book without refresh - No repeated `OrderBook increment received before snapshot` in browser console --- ## Upstream Rango (reference) ![Cryptocurrency Exchange Platform - OpenDAX](https://github.com/openware/meta/raw/main/images/github_opendax.png) Rango is a general purpose websocket server which dispatches public and private messages from RabbitMQ. It is designed as a drop-in replacement of Ranger built in Ruby. For full upstream documentation (metrics, scopes, RBAC, message format), see the [openware/rango README](https://github.com/openware/rango/blob/master/README.md).