Write us on Telegram@Odilient

WEB PLATFORM

Crypto Exchange with Custody

A crypto exchange with custody flows for an NDA client, built as two services: a public exchange and an isolated wallet and node service, shipped through CI-gated releases.

NDA
Client
Fintech & Crypto
Industry
7 months
Duration
2022
Year
Where it started

The Challenge

The client needed a crypto exchange that also holds user funds. On a platform like that, one bad deploy or one compromised internet-facing service can put wallets at risk, so security had to be built into the architecture from the start. Wallet handling had to stay isolated, auditable and safe to retry, and every release needed a gate before it reached production.

What we did

The Solution

We led a three-developer full-stack team that split the system in two: a public exchange service for accounts, orders and the React interface, and a separate containerized wallet and node orchestration service isolated from public traffic. Every release passes CI gates with PHPUnit suites and static analysis. Ephemeral keys, idempotent wallet operations and back-office withdrawal review tools protect day-to-day operations.

Built with
SymfonyReact.jsRedux ToolkitMariaDBDockerPHPUnitCI/CD
Inside the build

How It Came Together

A crypto exchange with custody, designed around isolation

When a platform holds user funds, security has to be designed in from the start. This crypto exchange, built for a client under NDA, followed one principle: the part of the system that touches wallets stays separate from the part that talks to the internet.

We led the project as team lead of a three-person full-stack team over seven months, delivering an MVP with custody flows.

Key features

  • Public exchange service: user accounts, orders and the trading interface.
  • Isolated wallet and node service: wallet operations and blockchain node orchestration run in a separate, containerized service, isolated from public traffic.
  • Idempotent wallet operations: a retried request isn't applied a second time, so timeouts and retries don't duplicate an operation.
  • Ephemeral keys: short-lived keys for sensitive operations, which limits how long a leaked credential stays useful.
  • Withdrawal review tools: back-office staff review withdrawals, keeping people in the loop on risky flows.
  • CI-gated releases: PHPUnit tests and static analysis must pass before code merges.

Architecture and tech stack

Two services instead of one

The backend is built on Symfony with MariaDB and split into two services. The public exchange service handles accounts, orders and everything users interact with. The wallet and node orchestration service runs separately in Docker containers, isolated from public traffic.

The split limits how far an incident can spread. A problem in the public service can be investigated and fixed without exposing wallet infrastructure. The wallet service can also be locked down far more tightly than a public web application.

React and Redux Toolkit frontend

The exchange interface is built with React.js and Redux Toolkit, which keeps account, balance and order state predictable across a data-heavy trading UI.

Wallet operations that are safe to retry

In any system that moves money, retries are unavoidable: networks time out, workers restart and users click twice. Wallet operations were built to be idempotent, so repeating a request produces the same result instead of a second transaction. Together with ephemeral keys for sensitive operations, this lowers the chance that a routine failure turns into a financial one.

Engineering discipline and release safety

Every change went through CI before it could merge. PHPUnit test suites and static analysis were merge requirements, and code-quality tooling was enforced across the team. For a product that holds user funds, a failed pipeline costs far less than a failed release.

Back-office tooling adds a human check. Withdrawals go through review tools, so staff can examine a risky flow before it completes, not after.

Our role

As team lead, we drove the service split, the CI gating and the operational controls around wallets. We led a three-developer team from architecture to a working MVP with custody flows.

For the frontend side of crypto trading, see our Crypto Exchange Frontend with WalletConnect and the TRON DAO frontend. Our Real-Time Crypto Market Aggregator covers the market-data side. This kind of build is part of our web app development service.

Let's Build

Want something like Crypto Exchange with Custody?

Tell us what your product needs to do. We'll shape the scope, map a timeline and send a fixed price — free, and with no obligation to proceed.

Free consultation No commitment Fast reply