Sarpoy¶
Under active development
Sarpoy is under active development. APIs, schemas, and on-chain layouts may change. Production use at your own risk. Issues + PRs welcome — see the GitHub repo.
Sarpoy is a Solana-native puzzle arena where creators launch challenge bots
backed by on-chain prize pools and solvers pay per message to uncover each
bot's hidden objective. The project is split into a backend service
(sarpoy-api) built with FastAPI + TortoiseORM and a modern SPA frontend
(sarpoy-ui) powered by Nuxt 3, Vue 3, and Tailwind CSS.
Why Sarpoy¶
- On-chain incentives — Prize pools and payouts move through a Solana program so creators and solvers get cryptographic assurances.
- Conversational puzzles — Each bot enforces rising message costs, creating a game-theoretic meta as solvers trade SOL for clues.
- Composable platform — An API-first approach makes it easy to build new clients, automation, and analytics on top of the same core.
Component Overview¶
| Component | Path | Responsibilities | Status |
|---|---|---|---|
sarpoy-api |
sarpoy-api/src/sarpoy_api/ |
FastAPI service, TortoiseORM models, Solana RPC/program integration, wallet auth | Implemented |
sarpoy-ui |
sarpoy-ui/ |
Nuxt 3 SPA, wallet-connect, chat UX, leaderboards, create puzzle | Scaffolding complete |
| Solana Program | sarpoy-api/programs/sarpoy/ |
Escrow deposits, message-fee accounting, reward settlement | Implemented and compiles |
Tech Stack¶
- Backend: FastAPI, TortoiseORM, SQLite (dev), Pydantic v2, Solana RPC
(
solders,anchorpy),uvfor package management. - Frontend: Nuxt 3 + Vue 3 + Vite, Tailwind CSS,
@solana/web3.js, Solana wallet adapters. - On-chain: Anchor 0.29.0, Solana SDK 1.18.
Quick Start¶
Where to next¶
- Architecture — component map, runtime view, and data flows.
- Backend API — FastAPI service, modules, and endpoints.
- Frontend UI — Nuxt routes, composables, and styling.
- Roadmap — phased delivery plan and risk register.
Source of truth
These docs wrap the markdown that lives under docs/ in the repository.
For the most current status, always cross-check with the
README and source.