$ cat ~/projects/pruv-finance.mdx
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.