Fintech
Crypto BI
Crypto market intelligence, end to end
- Role
- Primary author
- Period
- 2022 – 2023
- Commits
- 500+ verified
- Repos
- 4 (backend, 2 UIs, python)
Overview
The crypto business-intelligence platform I built at Wallex, and my most heavily-authored codebase: a .NET analytics backend organized around Microsoft Orleans grains, two Nuxt front-ends (an internal dashboard and a public UI), and a Python service layer that ingests Telegram signal channels via Telethon.
The backend separates a public REST API from a dedicated BI query API, with command/query handlers on both paths. Telegram parser grains normalize channel chatter into structured signals; everything ships to Kubernetes via the manifests and Helm charts kept in-repo.
- crypto.NET solution — API, BI API, domain, Orleans grains
- uiNuxt internal dashboard (ag-Grid, Monaco, OIDC)
- public-uiNuxt public-facing UI
- python-servicesFlask + Telethon ingestion services
Tech stack
Backend
- .NET
- C#
- Microsoft Orleans
- CQRS handlers
Front-end
- Nuxt
- Vue
- ag-Grid Enterprise
- Monaco Editor
- OIDC
Data & ingestion
- Python
- Flask
- Telethon
- SQL
Ops
- Kubernetes
- Helm
- Docker
Repository structure
The real solution layout — runtime grains and Telegram parsers are first-class projects beside the domain:
src/ ├─ Crypto.API public REST endpoints ├─ Crypto.BiApi BI query API ├─ Crypto.Handlers core command/query handlers ├─ Crypto.Bi.Handlers BI-side handlers ├─ Crypto.Domain domain model ├─ Crypto.Infra persistence & integrations ├─ Crypto.Runtime.Grains Orleans actors (per-symbol state) ├─ Crypto.Runtime.Interfaces grain contracts └─ Crypto.Runtime.TelegramParsers Telegram channel ingestion tests/ domain + grain test projects kubernetes/ deployment manifests database_query/
Design patterns
Actor model (Orleans)
Crypto.Runtime.Grains holds hot per-symbol/per-channel state as virtual actors, with contracts isolated in Runtime.Interfaces.
CQRS-style handlers
Separate Crypto.Handlers and Crypto.Bi.Handlers projects split the write path from BI reads, each behind its own API head.
Layered architecture
API → handlers → domain → infra; the domain project has its own test suite.
Anti-corruption ingestion
Telethon parsers normalize free-form Telegram signals into domain events before they touch the model.