Coder Social home page Coder Social logo

wuvt / donormotor Goto Github PK

View Code? Open in Web Editor NEW
5.0 1.0 0.0 5.93 MB

WUVT's new donation management and donor-relations platform.

License: GNU Affero General Public License v3.0

Dockerfile 0.81% Python 46.58% HTML 35.22% CSS 11.47% JavaScript 5.21% Shell 0.44% Mako 0.27%
donation-platform donation-management donation-website

donormotor's Introduction

DonorMotor

This is WUVT's donation management platform, spun out of wuvt/wuvt-site.

Goals are to:

  1. Provide more advanced donor tracking and handling
  2. Provide better configurability of premiums
  3. Better integrate with Stripe API

Further, this should provide an approachable framework for other stations looking to adopt a simple donation platform (as AudienceEngine has never materialised), without dragging in the relative bloat of wuvt-site (this is the same reason we spun out trackman).

About the Name

DonorMotor is a pun off of AudienceEngine, WFMU's vaporware donation management platform. It has a nice ring to it, and doesn't rely on thermodynamics.

Deployment

These instructions are for Linux; instructions for other platforms may vary.

First, clone the repo, create an empty config, and build the appropriate Docker image for your environment. We provide Dockerfile.dev which is configured to use SQLite and runs Redis directly in the image, and Dockerfile, which is recommended for production deployments as it does not run any of the required services inside the container itself.

For Dockerfile.dev:

git clone https://github.com/wuvt/donormotor.git
cd donormotor
docker build -t donormotor -f Dockerfile.dev .

Now, go ahead and copy config/config_example.json to config/config.json and configure as necessary. The most important thing is to set a random value for SECRET_KEY. You can generate a random value using the following command:

xxd -l 28 -p /dev/urandom

Finally, run it:

docker run --rm -v $PWD/config:/data/config -e APP_CONFIG_PATH=/data/config/config.json -p 9070:8080 wuvt-site:latest

You can now access the site at http://localhost:9070/. An admin user account will be created for you; the password is automatically generated and displayed when you launch the container.

License

Besides the exceptions noted below, the entirety of this software is available under the GNU Affero General Public License:

Copyright 2021 Eric C. Landgraf, James Schwinabart

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

The following files are JavaScript libraries and CSS files, freely available under the MIT license as noted in their headers:

  • donormotor/static/js/jquery.js
  • donormotor/static/js/jquery.dataTables.min.js
  • donormotor/static/js/moment.min.js
  • donormotor/static/bootstrap/*

donormotor's People

Contributors

ab33068 avatar bkodres93 avatar dependabot[bot] avatar echarlie avatar jpouellet avatar matthazinski avatar mstathers avatar mutantmonkey avatar telnoratti avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

donormotor's Issues

Alternative payment backends

For various reasons, some people may be unable or unwilling to use Stripe. It would be nice to support alternative payment backends such as Authorize.net, Braintree, Square, or PayPal.

Advanced Premium configuration

probably create a table in donations/models.py for premiums:

basically Premium_bool and Premium_size with appropriate fields, and the control panel allows setting 0) item type (bool or sized) 1) minimum donation, 2) name (which we sanitise into a slug for the DB), 3) size options (comma-seperated, converted into selection)

this should make #18 and #20 simpler to implement

/admin/donations should have "send reciept" button

the donations page should allow one to automatically send a receipt, if the donation was "ordered" at least 30 days ago, paid, premiums (if available) were shipped, and a valid email address is available.

else, it should allow printing of a receipt.

disable web donations

It should be possible to disable self-pay donations. This allows us to prevent card stuffing while still being able to proces other donations.

/admin/donations should interface with more of stripe's API

should be able to

  • refund payment
  • refund and mark as fraudulent
  • approve flagged transaction
  • respond to disputes?

interface should fetch the following from stripe

  • charge status:
    • disputed
    • refunded
    • pending (flagged for review by stripe)
  • card status
    • brand
    • expiration?
    • country

some other nice features:

  • set receipt email so that stripe sends receipts
  • create customer objects automatically for donor tracking
  • log IP from transaction (US? Foreign? IPv6?)

Move to docker-compose

I'd like to eliminate the Dockerfile.dev thing and just move to a single Dockerfile with a docker-compose file that spins up the necessary container for Redis (and PostgreSQL, if we choose to require that).

merge small donations and pledges

sometimes folks like making very small donations to several shows, because 1) it's motivating to shows when money is donated, and 2) they want to "support" multiple shows. While this is fine for missioncontrol, we should merge these donations in the main UI (and in reports), so that these donors can get larger premiums.

Bootstrap 4

bootstrap 3 -> 4. largest change will probably be panel -> card...

SSE for Mission Control

This can be used to update the donor list and play a cash register sound when a donation is made.

credit card transactions not always marked as paid?

okay. so there's a subtle bug in logic somewhere: when radiothon mode is not set and premiums are not available, credit card transactions may not be marked as paid. I'm not entirely sure what causes this, but I suspect it's an error in #22 rather than overall. this needs to be investigated more.

Donation admin interface should provide graphs and stats of donations

It would be nice if we got some nice histograms showing:

  • number of donations by month
  • dollars of donations by month
  • donors/dollars by day (during radiothon)
  • donors/dollars by time of day (during radiothon)
  • donation trends (do dollars donated conform to a normal distribution?)

Some other statistics that would be useful:

  • percentage of donors making recurring donations
  • number of unique donors
  • mean, median of donation size

In this line, it would also be nice if we could export donation data as CSV, only including time of day of donation, dollars donated, a unique donor identifier (hash of email address?), and first-time-donor status, so people can do statistical analysis of donor data.

Paginate donation viewer API

Donation viewer does not paginate. This means it will break when large numbers (say >200,000) of fake donations are made.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.