Thank you for your interest in contributing! VestFlow is a Stellar/Soroban token vesting protocol — contributions to the smart contract, frontend, tests, and documentation are all welcome.
- Fork the repository and clone your fork.
- Install prerequisites: Node.js ≥ 18, Rust,
wasm32v1-nonetarget, Stellar CLI, Freighter wallet. - Run
npm installin the project root. - Run
cargo testinsidecontracts/vestflow/to verify the contract tests pass. - Run
npm run devand openhttp://localhost:3000to verify the frontend builds.
- Bug reports — open an issue describing the behaviour, what you expected, and steps to reproduce.
- Feature requests — open an issue with the
enhancementlabel. Discuss before implementing. - Good first issues — issues labelled
good first issueare scoped and well-described — a great place to start. - Documentation — typo fixes, clarifications, and new examples are always appreciated.
- Tests — additional test cases for edge cases in the contract are valuable.
- Keep each PR focused on one thing.
- For contract changes: add or update tests in
contracts/vestflow/src/lib.rs. All tests must pass (cargo test). - For frontend changes: make sure
npm run buildsucceeds without TypeScript errors. - Write a clear PR description explaining what changed and why.
- Reference any related issue with
Closes #<number>.
The Soroban contract targets wasm32v1-none and uses soroban-sdk v22.
# Run tests
cd contracts/vestflow
cargo test
# Build WASM
cargo build --target wasm32v1-none --release
# Deploy to testnet (requires stellar CLI + funded key)
stellar contract deploy \
--wasm target/wasm32v1-none/release/vestflow.wasm \
--source your-key \
--network testnet- Rust: follow standard
rustfmtformatting (cargo fmt). - TypeScript: no explicit linter configured — match the surrounding style.
- Comments: only when the why is non-obvious.
Please do not open a public issue for security vulnerabilities. Email the maintainer directly so the issue can be addressed before public disclosure.