Traddy — Real-Time Trading & White-Label
Client: Algoverse (product)
A real-time stock/portfolio trading platform on Spring Cloud with stream-based portfolio computation and a multi-admin white-label variant that builds per-tenant mobile apps.
Deep dive
Traddy is a real-time trading platform built on Spring Cloud, with a defining twist: it's designed from the ground up to be operated as a white-label product. A single codebase serves many admins, each with their own branding, their own users, and their own isolated configuration — so the same engineering investment can power an entire network of operators instead of one.
The technical challenge in any trading platform is keeping valuations live. Live stock rates are published continuously by a dedicated rate-publisher service and streamed to clients over WebSockets, while a portfolio processor built on Apache Flink and Kafka recomputes each user's positions as prices move. The result is that a user's portfolio value ticks in real time, driven by a stream-processing pipeline rather than expensive on-demand recalculation or constant polling.
Under the hood, the services — gateway, auth, client, back-office, portfolio processor and rate publisher — are discovered through Eureka and communicate over RabbitMQ, with WebFlux providing a reactive, non-blocking foundation well suited to streaming workloads. This reactive design lets a single instance handle many concurrent live connections without a thread-per-connection blow-up.
The multi-admin variant is where Traddy gets genuinely interesting as a business. It adds a white-label layer on top of the core, including an automated APK generator that builds a branded Android app per tenant. Onboarding a new operator — logo, theme, configuration and a shippable mobile app — happens without touching or forking the core platform.
That separation between core and tenant is the whole point: features, fixes and performance improvements made once flow to every operator at the same time, while each operator's brand and data stay cleanly isolated. It's the difference between maintaining one platform and maintaining a dozen diverging copies of it.
The problem
Trading platforms need live rates, instant portfolio valuation and the flexibility to be re-skinned per operator — without forking the codebase for every client.
Our approach
- Built Spring Cloud services: gateway, auth, client, back-office, portfolio-processor.
- Computed portfolios with Apache Flink + Kafka streaming over live rates.
- Published stock rates and streamed them to clients via WebSockets.
- Added a multi-admin white-label layer with a per-tenant APK generator.
Outcome
- Real-time rate publishing and stream-based portfolio computation.
- White-label deployments from a single, shared codebase.
- Automated per-tenant mobile app generation.
The hard parts we solved
Streaming portfolio valuation
Flink recomputes positions as rates change, so client portfolios stay live without polling.
True white-label
One codebase, many branded operators — no forks, isolated per-admin configuration.
Automated app builds
A per-tenant APK generator ships a branded mobile app for each new operator automatically.
How it fits together
A simplified view of the system, layer by layer.
- Clients
- Web app
- Per-tenant mobile (APK gen)
- Edge
- Gateway
- Eureka
- Auth
- Services
- client
- back-office
- portfolio-processor
- rate-publisher
- Streaming
- Kafka
- Flink
- State
- MySQL
Building something similar?
We've done this before. Let's talk about your system.