code-corps-api icon indicating copy to clipboard operation
code-corps-api copied to clipboard

RFC: Explicit "donor" status/record for users who donate, to identify among /differentiate from contributors

Open begedin opened this issue 8 years ago • 3 comments

Problem

We do not currently have a way to easily differentiate donors among all project/organization contributors. We can technically do so by inferring through subscriptions, but it's not straightforward.

The way this works has not been fully decided yet.

Is a donor status something that's "on" while a donation is active, or if a donation has ever been active? I'll assume the second choice, considering the option of 1-off donations in the future.

My suggested implementation would be

MVP

  • 4 hours we add a ProjectDonation record, associated to Project and User.
  • 2 hours when a donation occurs, this record is found or created for the user donating and the project being donated to

Optional

  • ? hours not MVP the record could potentially hold additional information such as total_recurring_amount and total_non_recurring_amount, which could be useful
  • 2 hours we can switch our total donations code to use the above record, once the extra fields are added
  • 1 hour when a subscription get's cancelled (we are not handling this properly yet), we simply nullify the recurring donations field, instead of deleting the record

begedin avatar Sep 29 '17 19:09 begedin

@JoshSmith This needs breaking apart, and it might be a good idea to break it off into a milestone to. Let me know what you think.

begedin avatar Oct 02 '17 13:10 begedin

Hmm so part of what I was thinking here initially was a ProjectDonor record. I'm not sure if this matters too much in practice, but we should probably zoom back out and determine what this would do for us, what questions does it answer?

Here's an (incomplete) list of some things we can't do right now, but would be nice:

Everyone

  • see a list all of the current donors to a project

Donors

  • see a list of projects you're currently donating to
  • see a list of projects you donated to in the past
  • manage your donations (cancel, pause, restart, increase, decrease, rebalance, etc)
  • see a list of all your past receipts

Projects

  • message all of your current donors

joshsmith avatar Oct 02 '17 18:10 joshsmith

A ProjectDonor could do all these things same as computing that status manually.

However, an explicit record would greatly reduce the pain for us internally, I think, so I would definitely go with that.

That being said, a ProjectDonor implies just a record indicating that someone at some point donated to a project.

A ProjectDonation stills belongs to a Project and a Donor (User) and offers the same options but implies it can hold more information. I find that name to be more descriptive of what we use it for. We can use it to potentially see

  • a total of how much a user is donating to a project in a recurring form at the moment (by keeping it updated)
  • a total of how much they've donated in a non-recurring form
  • a total of recurring donations already donated, etc.

We can then aggregate over these records from a Project POV, across all "donors", as well as from a User POV across all projects.

begedin avatar Oct 03 '17 12:10 begedin