About this build

Built like a bank, priced like software

ActuaTrades started as a question: what would a crypto investment platform look like if every balance had to prove itself against a ledger? This is our answer.

100%

Ledger-backed balances

$0

Real funds accepted

Live

Market prices

2-sided

Double-entry ledger

These are facts about how Actuatrades is built, not traction metrics.

Design principles

What we optimised for

▤

Booked, not invented

Balances are derived from double-entry journals. A credit to a wallet always has a matching debit somewhere, and the trial balance is checked on the admin screen.

◉

Labelled honestly

No invented user counts, no unverifiable volume claims and no guaranteed-return language. Every rate we publish is a target, not a promise.

⚑

Operator controls

Deposits and withdrawals sit in an approval queue, withdrawals reserve funds before review, and every privileged action lands in an audit trail.

⌘

Small, readable stack

Next.js, Postgres via Drizzle, and a handful of focused modules for money, the ledger, trading and plans. Nothing hidden behind a vendor.

Stack

Framework
Next.js App Router, React 19
Data
Postgres + Drizzle ORM
Money
Integer-cent arithmetic, no floats in balances
Auth
HMAC-signed HTTP-only cookies, scrypt hashes
Prices
CoinGecko public API, 60s cache, offline fallback
Jobs
/api/cron/accrue, protected by CRON_SECRET

Deliberately not built

We would rather say what is not built yet.

  • –Real payment rails or custody — nothing leaves the sandbox.
  • –Self-serve account deletion (support handles it so the audit trail stays intact).
  • –Two-factor authentication and device history.
  • –Automated document checks — verification is reviewed by our team.
  • –Copy-trading and bot-trading (planned, not shipped).

Try the whole workflow

Create an account, get your opening balance, trade at live prices, fund a plan, request a withdrawal, then sign in as an admin and approve it. The books stay balanced the whole way.