Epoch Streams is a contribution-ready starter repo for building programmable, second-by-second micro-streaming payment contracts on Soroban. The project is aimed at automated payroll and SaaS subscriptions, with an emphasis on precise token distribution, stream cancellation, and top-up flows.
The scaffolded frontend stays in place so contributors can still inspect the sample contract UI, debug local behavior, and work incrementally while the core streaming contract emerges.
The repo keeps the standard mixed frontend and Rust workspace layout:
contracts/contains the Soroban contracts and tests.src/contains the Vite + React app, including the homepage and explorers.packages/contains generated TypeScript clients for the example contracts.target/stores compiled artifacts and local WASM outputs..github/ISSUE_TEMPLATE/defines the issue intake paths for contributors.
The expected product direction is a streaming-payment contract stack backed by careful math and integration docs, while the scaffold preserves a usable local developer experience.
- Install the workspace prerequisites:
npm install
rustup target add wasm32v1-none- Start the local app and contract watch process:
npm run dev-
Use the existing explorers to validate the scaffolded contract flow while you iterate on the Epoch Streams contracts.
-
When working on stream logic, keep the verification loop tight:
cargo test
npm run lint
npm run typecheck- Core streaming contract features, including cancellation and top-ups.
- Mathematical precision tests for per-second token distribution.
- Integration documentation for payroll and subscription use cases.
- Stronger edge-case coverage for long-lived or interrupted streams.
- Developer-facing examples that show how to wire the contract into apps.
Use Wave issues to keep the backlog scoped and predictable:
bug-reportfor broken streaming math, state corruption, or replay issues.feature-proposalfor new stream lifecycle behavior, CLI support, or user workflow improvements.maintenance-taskfor refactors, dependency updates, docs, and test hygiene.
Keep each issue focused on one outcome, describe the exact stream state when the problem occurs, and include any token or timing assumptions that affect the result.