Files
2026-09-29 14:47:51 +00:00

68 lines
2.9 KiB
Markdown

# FediFund
Donations for fediverse instances. One-off gifts and monthly support in one place, a live funding goal on your instance, and supporter badges on your members' profiles.
FediFund is a drop-in replacement for [Patron](https://gitlab.com/soapbox-pub/patron). Frontends that already show a Patron funding bar (Soapbox, Nicolium, Aeon) work with FediFund without any changes.
> **Status: early development.** Nothing here is ready to take real money yet. Watch the repo or check back soon.
## What it does
- **One-off and monthly donations** from a single donate page. Donors choose an amount and whether it repeats.
- **Funding goals** your frontend can display, like "$340 of $500 this month".
- **Supporter badges.** Donors sign in with their fediverse account, so your frontend can mark them as supporters.
- **Fast and reliable totals.** FediFund keeps its own ledger, updated by the payment processor as payments happen. Totals come from that ledger, so a busy instance never has to wait on the processor for a number.
- **Minimal data.** The ledger stores amounts, dates, processor reference IDs, and the donor's public fediverse address. Names, emails, and card details stay with the payment processor and never reach your database.
## How it fits with your instance
FediFund runs as its own small service. Your web server forwards `/api/patron/` on your instance's domain to it, so frontends find it at the same address they already use.
```
https://your.instance/api/patron/v1/... -> FediFund
https://your.instance/... -> Pleroma
```
## API
### Legacy (Patron-compatible)
These match Patron's responses exactly, so existing frontends keep working.
| Endpoint | Returns |
| ------------------------------------ | ------------------------------------------------- |
| `GET /api/patron/v1/instance` | Current funding total, supporter count, and goals |
| `GET /api/patron/v1/accounts/:ap_id` | Whether an account is a supporter |
### Current
A richer API for frontends that want more (donation history, supporter tiers, one-off and monthly totals shown separately) is being designed. It will be documented here once it is stable.
## Moving from Patron
A migration guide is planned. Here is the short version:
1. Export Patron's `users` table (it links each fediverse account to its payment processor customer).
2. Import it into FediFund.
3. FediFund reads your existing monthly supporters from the payment processor and fills in its ledger.
4. Point `/api/patron/` at FediFund instead of Patron.
Your supporters don't have to do anything, and their monthly donations continue without interruption.
## Development
Requirements: Node.js 20 or newer.
```bash
npm install
npm run dev
```
Then open [http://localhost:3000](http://localhost:3000).
Configuration, database setup, and payment processor setup will be documented as they are built.
## License
To be decided.