Transparent donation tracking for churches and NGOs powered by Stellar.
This MVP enables organizations to create fundraising campaigns, receive donations, and record donation activity with optional on-chain settlement using the Stellar testnet.
Many churches and nonprofit organizations struggle with donor trust and transparency. Donors often have limited visibility into:
- Where funds are allocated
- Campaign progress
- Spending accountability
- Donation history
Transparent Donations aims to improve trust through verifiable donation records and transparent campaign tracking, with blockchain-backed recording as an optional layer.
- Create and manage churches or NGOs
- Create fundraising campaigns per organization
- Record donations in SQLite
- Associate donations with campaigns
- Categorize donations
- Optionally submit on-chain testnet payments
- Record verifiable payment activity on Stellar
- Uses a platform-funded account for MVP testing
- View campaign details
- Track donation activity
- Access campaign metrics through dashboard endpoints
This is an early prototype focused on validating the donation transparency workflow.
Current implementation includes:
- Basic organization management
- Campaign creation
- Donation recording
- Optional Stellar testnet transactions
- Simple dashboard endpoints
Not yet included:
- Authentication
- Role-based access control
- Production payment flow
- Donor wallet signing
- Restricted spending verification
- Advanced analytics
Frontend/UI
↓
Express API
↓
SQLite Database
↓
Stellar Testnet (optional)Handles:
- Organization creation
- Campaign management
- Donation processing
- Dashboard aggregation
SQLite is used for lightweight local persistence during MVP development.
If configured, the server submits a testnet payment from a platform account to a campaign Stellar account.
For production, donor-signed transactions or a compliant custodial payment flow should be used.
git clone <repository-url>
cd transparent-donationsCopy the sample environment file:
cp .env.sample .envEdit .env and optionally configure:
PLATFORM_SEED=PLATFORM_SEED should be a Stellar testnet secret key.
If omitted, donations will still be recorded off-chain.
npm installnpm startVisit:
http://localhost:4000Create an organization
POST /api/orgsRequest body:
{
"name": "Celebration Church"
}Create a campaign
POST /api/campaignsRequest body:
{
"org_id": 1,
"name": "Community Outreach",
"goal": 100000,
"categories": ["food", "medical"]
}Get all campaigns
GET /api/campaignsGet a campaign
GET /api/campaigns/:idCreate a donation
POST /api/donateRequest body:
{
"campaign_id": 1,
"amount": 5000,
"donor_name": "John Doe",
"category": "food"
}Get campaign dashboard data
GET /api/dashboard/:campaignId| Variable | Description | Required |
|---|---|---|
PLATFORM_SEED |
Stellar testnet account secret for on-chain transactions | No |
- Organization creation
- Campaign management
- Donation recording
- Stellar testnet support
- Dashboard endpoint
- Authentication
- Organization onboarding
- Campaign UI
- Donor accounts
- Recurring donations
- Restricted spending categories
- Expense verification
- Public transparency dashboards
- Donation impact reporting
- Organization subscriptions
- Premium analytics
- Recurring billing
The current implementation uses a server-side platform account for testnet transfers.
For production:
- Avoid storing production signing keys directly in the server
- Prefer donor-signed transactions
- Add KYC/compliance where required
- Implement proper access control and auditing
No license specified.