Trivela is a Stellar Soroban–based campaign and rewards platform. It lets campaign operators create on-chain campaigns, register participants, award points via smart contracts, and let users claim rewards—all on the Stellar network. The project is built for the Stellar Wave on Drips and is designed for open-source contributors.
- Campaigns – Create and manage reward campaigns with on-chain configuration (Soroban).
- Rewards contract – Tracks user points, credits (by admin/campaign), and claims.
- Campaign contract – Stores campaign active flag and participant registration.
- Backend API – REST API for campaign metadata, health checks, and integration.
- Frontend – React app to list campaigns and (when wired) connect wallets and interact with contracts.
Use cases: loyalty points, drip campaigns, bounties, and any flow where you need on-chain rewards + off-chain campaign metadata.
Trivela/
├── contracts/ # Soroban (Rust) smart contracts
│ ├── rewards/ # Points balance, credit, claim
│ └── campaign/ # Campaign active flag, participant list
├── backend/ # Node.js Express API
├── frontend/ # React + Vite + Stellar SDK
├── Cargo.toml # Rust workspace
├── package.json # npm workspaces (backend + frontend)
└── README.md
- Rust (for Soroban): rustup
- Stellar CLI (optional but recommended): Install Stellar CLI
- Node.js 18+
If you cloned or created this repo without git:
./scripts/setup-git.sh
git add . && git commit -m "chore: initial Trivela scaffold"
git branch -M main && git push -u origin mainUse a Personal Access Token (PAT) with repo scope when pushing over HTTPS, or switch to SSH: git remote set-url origin git@github.com:FinesseStudioLab/Trivela.git.
git clone https://github.com/FinesseStudioLab/Trivela.git
cd Trivela
npm installTo build the smart contracts, ensure you have the Stellar CLI installed.
# Build both contracts using Stellar CLI
stellar contract build
# Alternatively, build specific packages with cargo
cargo build --target wasm32-unknown-unknown --release -p trivela-rewards-contract
cargo build --target wasm32-unknown-unknown --release -p trivela-campaign-contract-
Configure an Identity:
stellar keys generate alice --network testnet
-
Deploy the WASM:
# Deploy Rewards Contract stellar contract deploy \ --wasm target/wasm32-unknown-unknown/release/trivela_rewards_contract.wasm \ --source alice --network testnet # Deploy Campaign Contract stellar contract deploy \ --wasm target/wasm32-unknown-unknown/release/trivela_campaign_contract.wasm \ --source alice --network testnet
-
Initialize the Contracts: After deployment, you will receive a Contract ID. Use it to call the
initializefunction:stellar contract invoke --id <CONTRACT_ID> --source alice --network testnet -- \ initialize --admin alice --name "Trivela Rewards" --symbol "TVL"
You can also build and deploy both contracts with the helper script:
STELLAR_SOURCE=alice npm run deploy:testnetOptional environment variables:
STELLAR_NETWORK: Stellar CLI network alias to deploy against (defaults totestnet)STELLAR_SOURCE: Stellar CLI identity used for the deployTRIVELA_ENV_OUT: output env file for the deployed contract IDs (defaults to.env.testnet)
The script writes:
VITE_REWARDS_CONTRACT_ID=...
VITE_CAMPAIGN_CONTRACT_ID=...cp backend/.env.example backend/.env
npm run dev:backendAPI: http://localhost:3001 (health: http://localhost:3001/health, v1: http://localhost:3001/api/v1).
npm run dev:frontendApp: http://localhost:5173 (proxies /api and /api/v1 to the backend).
# Rust contracts
cargo test --workspace
# Backend (when tests exist)
npm run test:backend| Layer | Stack |
|---|---|
| Smart contracts | Rust, Soroban SDK |
| Backend | Node.js, Express |
| Frontend | React, Vite, @stellar/stellar-sdk |
| Network | Stellar (testnet/mainnet), Soroban RPC |
After the repo is pushed, create labels and open all 50 issues in GitHub in one go:
node scripts/create-github-issues.jsThis reads PAT from .env.local, creates the repo labels, then creates each issue from docs/issues-data.json. Requires Node 18+ and a PAT with repo scope.
We welcome contributions, especially from the Stellar and Drip community. Please read CONTRIBUTING.md and check the open issues for labeled tasks (backend, frontend, smart-contract, good first issue, etc.).
Apache-2.0. See LICENSE for details.