Skip to content

Repository files navigation

StreamPay ⚡

CI Stellar Testnet Soroban Vercel

Stellar + Soroban dApp for continuous USDC micropayment streams. Connect a wallet, fund an escrow, and let recipients withdraw earned value over time — no subscriptions, no manual transfers.

Live Apphttps://streampay-roan.vercel.app Demo Videohttps://youtu.be/p1tYF4V3nZQ GitHubhttps://github.com/SumitRaikwar18/StreamPay


Table of Contents


What is StreamPay?

Traditional blockchain payments are one-shot transfers. That creates friction for freelancers who should be paid continuously, AI agents paying for usage-based services, and creators who need small repeated payments instead of lump sums.

StreamPay is a belt-by-belt Stellar dApp that evolves from a basic XLM payment tool into a full Soroban USDC escrow platform with inter-contract fee accounting, real-time event sync, and production CI/CD.


Level 1 — White Belt

The basics: wallet connect, XLM balance, testnet payment.

Covers the core Stellar fundamentals — Freighter wallet connect/disconnect, XLM balance from Horizon, testnet payment flow, and success/failure feedback with transaction hash verification.

What was built:

  • Freighter wallet connect and disconnect
  • Stellar Testnet enforcement
  • XLM balance display from Horizon
  • Testnet XLM payment with pending → success → failure states
  • Transaction hash with Stellar Expert verification link

Screenshots:

Balance + In-App Result Transaction on Stellar Expert
Balance Explorer

Level 2 — Yellow Belt

Multi-wallet + first Soroban contract deployed and called.

Moved from Freighter-only to StellarWalletsKit, deployed a real stream metadata contract on Soroban testnet, and wired up frontend contract invocations with live event polling.

What was built:

  • StellarWalletsKit wallet modal (Freighter, xBull, Albedo, etc.)
  • Deployed Soroban stream metadata contract
  • create_stream, pause_stream, complete_stream from the frontend
  • Contract reads: recipient, amount, flow rate, status, note, stream IDs
  • Event feed polling from Soroban RPC
  • Explicit error handling: wallet unavailable, user rejected, insufficient balance

Deployed contract:

CBX335TVF52JLKT2YTJUZBFNM5WFFOTINLZD44CM5MD2INFUW2X7WOZN

On-chain proof:

Event Transaction
Deployment 8b7f9e63...574b6b9
Contract call 9fdd9aba...557f3d

Screenshots:

Multi-wallet Popup Contract Deployment Contract Call
Multiwallet Contract Creation Contract Call

Level 3 — Orange Belt

Caching, loading states, automated tests, and demo-ready quality.

Upgraded StreamPay into a polished mini-dApp with dashboard state caching, progress indicators during wallet restore and live sync, and automated test coverage.

What was built:

  • localStorage cache for streams and recent Soroban events
  • Loading states and progress indicators for wallet restore and live sync
  • Reusable validation helpers for stream creation
  • 8 automated tests — validation, cache parsing, XLM/stroops conversion
  • Complete README and demo video

Test command:

npm test

Demo videohttps://youtu.be/p1tYF4V3nZQ

On-chain proof:

Event Transaction
Complete stream call aeaef662...dad6f8

Screenshots:

Test Output (8 passing) Complete Stream
Tests Complete Stream

Level 4 — Green Belt

Real USDC escrow, inter-contract fee vault, CI/CD, mobile responsive.

StreamPay becomes a production-ready dApp. USDC is escrowed in a Soroban contract, protocol fees are routed to a separate FeeVault contract via an inter-contract call, and recipients withdraw earned balance on demand.

Live Apphttps://streampay-roan.vercel.app

What was built:

  • Real testnet USDC funded streams via Stellar Asset Contract (SAC)
  • StreamEscrow contract — create, pause, resume, withdraw, complete
  • FeeVault contract — protocol fee accounting via inter-contract call
  • Dashboard: XLM + USDC balances, trustline awareness, funded stream forms, withdraw panel
  • Linked escrow + fee event feed
  • GitHub Actions CI (frontend lint, tests, build + Soroban contract tests and build)
  • Mobile-responsive dashboard layout

Deployed contracts:

Contract Address
StreamEscrow CD34OVJRB4ACS3VDJRAUOW6BPOJ5TZRRQ4VHS3XIEOWVAHCBD7U2YLO5
FeeVault CBRAYXE2MCTP5MBDPT3CQNFARYVEYWQLMALVTWEYFUS6LBCQTAPIEK2T
Testnet USDC SAC CBIELTK6YBZJU5UP2WWQEUCYKLPU6AUNZ2BQ4WWFEIE3USCIHMXQDAMA

On-chain proof:

Event Transaction
FeeVault deployment b598b47e...c2c50
StreamEscrow deployment ffb63414...21a14
Funded stream + inter-contract fee 15075257...58890
Funded stream withdrawal 9fc226a8...a5fa3a

CI/CD:

StreamPay CI

Screenshots:

Mobile Responsive Contract Interactions (RPC Events)
Mobile Create Stream

Tech Stack

Layer Technology
Frontend Next.js 16, TypeScript, Tailwind CSS
Wallet @creit.tech/stellar-wallets-kit (Freighter, xBull, Albedo, etc.)
Stellar SDK @stellar/stellar-sdk, @stellar/freighter-api
Smart contracts Rust, Soroban SDK 25
RPC Soroban testnet RPC (soroban-testnet.stellar.org)
Horizon Stellar Testnet Horizon
Testing Vitest (frontend), cargo test (contracts)
CI/CD GitHub Actions
Deployment Vercel

Local Setup

git clone https://github.com/SumitRaikwar18/StreamPay
cd StreamPay
npm install
npm run dev

Open http://localhost:3000.

The app already points to the deployed contract addresses from src/lib/constants.ts. No extra config needed to run against the live testnet contracts.

Before using funded USDC streams:

  1. Create or open a testnet wallet (Freighter recommended)
  2. Fund with XLM via Stellar Friendbot
  3. Add the USDC trustline and get testnet USDC via the dashboard's "Open USDC setup" link

Contract Development

Run all contract tests:

# In WSL or Linux
cd contracts
cargo test -p streampay_level2 -p streampay_level4_fee_vault -p streampay_level4_escrow

Build contracts:

cd contracts
stellar contract build

Run frontend tests:

npm test

Contract source files:

Contract Source
Level 2 stream metadata contracts/contracts/streampay_level2/src/lib.rs
Level 4 FeeVault contracts/contracts/streampay_level4_fee_vault/src/lib.rs
Level 4 StreamEscrow contracts/contracts/streampay_level4_escrow/src/lib.rs

Built on Stellar and Soroban testnet · Rise In Challenge · April 2026

About

StreamPay is a Stellar and Soroban dApp exploring continuous micropayment workflows for freelancers, creators, APIs, and AI agents. The product direction is streaming-style payments with contract-backed state, visible transaction status, and real-time event sync.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages