← All projects

Flagship / Engineering case study

ArcLedger

Exact-money stablecoin bookkeeping with resumable blockchain ingestion.

TypeScript / Next.js / PostgreSQL / Drizzle / Vercel

Immutable / chain facts

Transfer identity + exact amount

Imported from Arc. Uniqueness enforced by the database.

integer → BigInt → string
Mutable / business context

Category + counterparty + notes

Edited by the business. Preserved when history is imported again.

No private key. No signing path.

01 / The problem

The problem

A wallet records that money moved. A business still needs to know who paid, what it was for and how to hand that context to an accountant. Reconstructing it in a spreadsheet is repetitive and fragile.

02 / What I built

What I built

A business supplies a public wallet address. ArcLedger imports USDC activity from Arc, then adds categories, counterparties, internal-transfer identification, descriptions, notes and rules. Accountant-oriented CSV exports complete the workflow. It never requests a private key or seed phrase and has no transaction-signing path.

03 / Architecture

Architecture

  1. Public wallet address
  2. Arc RPC → adaptive page retrieval
  3. Checkpointed importer
  4. Immutable raw transfers → PostgreSQL constraints
  5. Separate mutable bookkeeping → rules and review
  6. Accountant CSV export

04 / Key decisions

Key decisions

01

Money stays exact at every boundary

Raw amounts are exact integers. BigInt and strings carry money across boundaries instead of floating-point arithmetic. Conversion refuses unsupported precision rather than silently rounding.

02

Chain facts and bookkeeping have different lifetimes

Raw chain records are separate from user classifications. Re-importing history cannot overwrite notes or categories; transfer identity is enforced by database constraints.

03

Different RPC failures need different recovery

The importer distinguishes a provider-suggested range, a range that needs shrinking and an error requiring exponential backoff with the same range. Checkpoints let an interrupted import resume.

04

Record decisions, including reversals

An architectural decision log preserves context, alternatives, reasoning, consequences and review triggers. Reversed decisions remain in the history so the trade-off is visible.

05 / What went wrong

What went wrong

A valid identifier was not enough

Problem
A security review found a real cross-workspace data leak involving category and counterparty identifiers.
Why it happened
References could cross workspace boundaries; checking that an identifier existed did not prove that it belonged to the current workspace.
How it was detected
A structured review tested tenant boundaries beyond the normal UI workflow.
Response
Write-side ownership validation and read-side filtering were both corrected. Regression tests target cross-tenant isolation.
Lesson
Authorization belongs at the relationship boundary as well as the route boundary.

06 / Evidence

Evidence

  • Exact integer storage and explicit precision rejection.
  • Checkpointed, resumable imports with database-enforced transfer identity.
  • Regression tests written around the cross-workspace issue.
ArcLedger / existing project capture
ArcLedger public marketing page introducing stablecoin bookkeeping.
Existing project capture. The case study describes the reviewed system; this image may show an earlier interface.

07 / Current status & limitations

Current status & limitations

Private beta · Arc testnet

Deployed private beta, built against Arc testnet. No real users yet. The achievement here is the engineering, not adoption or mainnet operating history.

Evidence basis: project implementation review and research notes supplied for this portfolio, September 2026. Project tests described here are distinct from the portfolio’s own checks.

Next case studyBite Relay