P2P fiat<->crypto exchange, matched by location, settled in person and released by a non-custodial escrow contract. Start here:
docs/PROJECT.md— what this is, how it works, tech stack, GTMdocs/DECISIONS.md— locked architecture decisions and why (D-012 through D-016 record the 2026-07-14 pivot to Telegram + Base)docs/MILESTONES.md— phased roadmap (historical Phase 0/1 dates predate the pivot; the shape still holds)
contracts/— Hardhat project,NomadiaEscrow.sol, tests, deploy scriptsfrontend/— Next.js 16 Telegram Mini App (pages, API routes, SQLite store)backend/— empty; V0 folded the API intofrontend/app/api/*(Next.js route handlers) instead of a separate service. Split it out only if scale actually requires it.
cd contracts && npm install && npx hardhat test # verify the escrow contract
cd ../frontend && npm install && npm run dev # app at the printed localhost URLSee frontend/README.md for the full setup path, including wiring up a real
chain/wallet for the on-chain lock/confirm/refund flow.