Lock USDC on Stellar for a verified payee, anywhere in the world.
This is the documentation portal for Kinlock's four repositories: what each one owns, how they depend on each other, and where to go for the full technical detail.
How the repos fit together
One product, four repositories, in a fixed dependency order. Each repo owns one layer; none of them duplicate another's responsibility.
registry sits outside that chain: it's public payee data (schools, landlords) that the app and indexer read, bound to the contract by a hash check, not code that other repos import.
The four repos
kinlock-contracts
The Soroban contract that actually holds and moves funds: registry and vault modules, tests, deploy scripts, generated TypeScript bindings.
kinlock-sdk
The TypeScript client every other layer talks to the contract through, plus the event indexer that mirrors chain data for lists.
kinlock-app
The Next.js web app: senders lock funds, payees claim them, anyone can verify a receipt.
kinlock-registry
The public, schema-validated list of verified payees, per country, bound to the on-chain record by a hash.
Non-negotiable principles
These hold across all four repos, not just the contract:
- Chain is truth. Pages that move money read chain state directly, never a database cache.
- Non-custodial. No service holds a user's keys or funds; only the contract does, under its own rules.
- No privileged path to locked funds. Funds leave the contract only to the payout address snapshotted at creation, or back to the sender.
- Honest receipts. A receipt proves payment to a verified payee. It is not proof the money was spent the way anyone expected.
- Country-agnostic core. Country and currency are registry data, never hard-coded in the contract, SDK, or app.
Full depth lives in the canonical docs: ARCHITECTURE_ESSENTIALS.md, ARCHITECTURE.md, PRD.md, and the ADR index. This site summarizes; those files are the source of truth.
Found a documentation gap?
This repo is also where documentation issues across all of Kinlock get filed and picked up, not just this site. Missing, unclear, or outdated docs in any repo: file it here with the area tagged, rather than opening a one-off issue scattered across four different trackers.