Soter is a humanitarian aid distribution platform built on the Stellar ecosystem (Soroban). It combines on-chain escrow and auditable events with off-chain verification and field-ready client apps.
- On-chain escrow for aid packages (create, claim, disburse, revoke, refund)
- Indexer-friendly contract events for transparency and analytics
- Backend APIs for orchestration, role-based access, and operational tooling
- Frontend dashboard for campaigns, review workflows, and reporting
- Mobile app for field operations (scan, view details, submit/confirm claim flows)
- Network guardrails to prevent cross-network mismatches
- Deterministic test modes (where applicable) for stable demos and CI
- Health probes and observability hooks for on-chain calls and background jobs
- Backend (NestJS): APIs, orchestration, persistence, on-chain adapter, observability (backend README)
- Smart Contracts (Soroban/Rust): AidEscrow escrow + claim flows (onchain README)
- Frontend (Next.js): admin/donor UI, dashboards, wallet flows (frontend README)
- Mobile (Expo): field operations + pilot flows (mobile README)
- AI Service (FastAPI): OCR/anonymization/fraud checks for verification flows (ai-service README)
- Smart contracts: Rust + Soroban
- Backend: NestJS (TypeScript), Prisma
- Frontend: Next.js (App Router), React, Tailwind CSS
- Mobile: Expo (React Native), WalletConnect
- AI service: FastAPI (Python), Pydantic
- CI: GitHub Actions
Soter/
βββ .github/workflows/ # CI workflows
βββ app/
β βββ onchain/ # Soroban contracts (Rust)
β βββ backend/ # NestJS API server + on-chain adapter
β βββ frontend/ # Next.js web app
β βββ mobile/ # Expo mobile app
β βββ ai-service/ # FastAPI service (OCR/anonymize/fraud, etc.)
βββ assets/ # Repository assets (logo)
- Node.js 18+
- Python 3.11+
- Rust toolchain + Soroban CLI (for contracts)
cd app/backend
npm ci
cp .env.example .env
npm run prisma:migrate
npm run start:devcd app/frontend
pnpm install
cp .env.example .env.local
pnpm devcd app/ai-service
python -m venv .venv
.venv\\Scripts\\activate
pip install -r requirements.txt
uvicorn main:app --reload --port 8000cd app/mobile
pnpm install
cp .env.example .env
pnpm start- Deploy the Soroban contracts to testnet and capture contract IDs.
- Configure the backend to target testnet RPC + network passphrase + contract ID(s).
- Configure frontend/mobile environment variables to point at the backend and set the testnet network + contract IDs.
Helpful starting points:
- Backend Soroban integration notes: SOROBAN_INTEGRATION.md
- Contract docs and method/event reference: onchain README
- Backend:
cd app/backend && npm testandnpm run test:e2e - Frontend:
cd app/frontend && pnpm lint && pnpm type-check && pnpm test - Mobile:
cd app/mobile && pnpm test && pnpm lint - AI service:
cd app/ai-service && pytest
We review contributor branches frequently. Keep PRs small and focused, and include:
- A clear problem statement + acceptance criteria
- Tests or a short manual test plan
- No secrets committed (keys, tokens, seed phrases)
For component-specific contribution details, follow the README in each folder linked above.
