$ cat ~/projects/pruv-finance.mdx

PRUV.Finance

pruv.finance

NestJS and PostgreSQL services for tokenized asset issuance and redemption, with Solidity contracts handling on-chain ownership.

  • NestJS
  • PostgreSQL
  • Solidity
  • Google Cloud Storage
  • Docker

Context

PRUV.Finance mirrors real-world assets such as invoices, receivables, and fractional ownership on-chain as ERC-20 tokens. The difficult part is keeping the off-chain record and contract state consistent when a transaction is delayed, retried, or fails.

What I built

  • PostgreSQL schema for issuers, assets, token supplies, redemption requests, and audit events. PostgreSQL owns the off-chain state; the contracts own ownership. A daily batch reconciles the two instead of adding a check to every request.
  • NestJS services for the lifecycle: asset registration → on-chain mint → off-chain indexing → redemption flow. Each step is a discrete module with its own DTOs and a single repository.
  • CI/CD with GitLab: linting, unit tests, integration tests against disposable Postgres, then a canary deploy to GCS-backed containers. This replaced a release checklist that took most of an afternoon.