Overview
Every Stellar developer's first step is generating a keypair and funding it on testnet. Right now this means jumping between the Stellar Laboratory, Friendbot, and Horizon Explorer as three separate tools. SaviTools should close that loop with a single Sandbox page that handles the full wallet bootstrap workflow — generate, fund, inspect, and send test payments — without leaving the tool.
What needs to be built
NestJS API — apps/api/src/modules/sandbox/
-
POST /sandbox/keypair — generates a new ed25519 keypair; returns public key + secret key (never stored server-side; generation must be stateless)
-
POST /sandbox/fund — calls Friendbot with the provided public key; returns funding tx hash and confirmation status
-
GET /sandbox/account/:publicKey — proxies Horizon account details: balances, sequence number, signers, thresholds, flags
-
POST /sandbox/payment — submits a test payment (XLM or any issued asset) between two sandbox accounts; returns tx hash and result codes
Next.js web — /sandbox route
-
"Generate Keypair" button — renders public key + secret key side by side with individual copy buttons
-
Persistent warning banner: "This sandbox is for Stellar testnet only. Never use generated keys for real funds."
-
"Fund on Testnet" — one-click Friendbot call anchored to the generated public key; shows tx hash with Stellar Expert link on success
-
Account Inspector panel — enter any public key, renders live balance table (asset, balance, limit), sequence number, and signer list
-
Send Test Payment form:
- From / To public key fields
- Asset selector (XLM or custom code:issuer)
- Amount input
- Memo field (optional)
- Submit → shows tx hash, fee charged, and result code inline
-
Testnet / Mainnet toggle inherited from global app state (sandbox features disabled on mainnet with a clear callout)
Acceptance Criteria
Overview
Every Stellar developer's first step is generating a keypair and funding it on testnet. Right now this means jumping between the Stellar Laboratory, Friendbot, and Horizon Explorer as three separate tools. SaviTools should close that loop with a single Sandbox page that handles the full wallet bootstrap workflow — generate, fund, inspect, and send test payments — without leaving the tool.
What needs to be built
NestJS API —
apps/api/src/modules/sandbox/POST /sandbox/keypair— generates a new ed25519 keypair; returns public key + secret key (never stored server-side; generation must be stateless)POST /sandbox/fund— calls Friendbot with the provided public key; returns funding tx hash and confirmation statusGET /sandbox/account/:publicKey— proxies Horizon account details: balances, sequence number, signers, thresholds, flagsPOST /sandbox/payment— submits a test payment (XLM or any issued asset) between two sandbox accounts; returns tx hash and result codesNext.js web —
/sandboxroute"Generate Keypair" button — renders public key + secret key side by side with individual copy buttons
Persistent warning banner: "This sandbox is for Stellar testnet only. Never use generated keys for real funds."
"Fund on Testnet" — one-click Friendbot call anchored to the generated public key; shows tx hash with Stellar Expert link on success
Account Inspector panel — enter any public key, renders live balance table (asset, balance, limit), sequence number, and signer list
Send Test Payment form:
Testnet / Mainnet toggle inherited from global app state (sandbox features disabled on mainnet with a clear callout)
Acceptance Criteria
CODE:ISSUER) before submission and shows inline validation errors