← All projects

Flagship / Engineering case study

ArcLedger

Exact-money stablecoin bookkeeping with resumable blockchain ingestion.

Full-stack SaaS with PostgreSQL, authenticated workspaces and resumable data imports.

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

Follow the flow as you scroll, or select a step.

  1. The business provides an address, never a private key or seed phrase. There is no transaction-signing path.

  2. Adaptive page retrieval responds differently to provider range suggestions, oversized ranges and errors that require backoff.

  3. An interrupted job resumes from its checkpoint instead of forcing the next sync to start from zero.

  4. Amounts remain exact integers. PostgreSQL constraints enforce transfer identity, so retries do not duplicate a transfer.

  5. Categories, counterparties, notes and rules belong to the workspace. A chain re-import does not overwrite this user work.

  6. The business reviews the classified activity and exports CSV records for its accountant.

One read-only import path. User bookkeeping is stored separately from the chain facts it describes.

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 ↗