68 lines
2.9 KiB
Markdown
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.
|