Skip to content

An event fundraising website where individuals can set personal goals and raise money for the overall goal.

License

Notifications You must be signed in to change notification settings

dominikszopa/fundraising-website

Repository files navigation

Event Fundraising Website

An event fundraising website where individuals can create personal pages, set goals and raise money for the overall goal.

Built in Python/Django 3.2 and Bootstrap 4 for the Triple Crown for Heart bike ride, because you shouldn't be charged for charity fundraising.

Currently used at: https://donations.triplecrownforheart.ca/team_fundraising/. If you would like to use this platform for your charity fundraising event, please contact the author.

Demo screenshot

Table of Contents

Features

  • Fully responsive website that supports phones, tablets and computers
  • Integration with PayPal for donations
  • Individuals can create custom fundraising pages with a photo, message and fundraising goal
  • Email notifications to the fundraiser whenever a donation is received

Installing

Prerequisites

Local installation

  1. Install poetry

    pip install poetry

  2. Clone this repository:

    git clone https://github.com/dominikszopa/fundraising.git cd fundraising

  3. Install dependencies:

    poetry install

  4. Activate the virtual environment

    poetry shell

  5. Copy .env.example to .env:

    cp .env.example .env

  6. Edit .env and add a SECRET_KEY value, a long (32 chars or more) random string.

  7. Create a database:

    python3 ./manage.py migrate

  8. Create a superuser - please use a strong password:

    python3 ./manage.py createsuperuser

  9. Load test data into the database from fixtures:

    python3 ./manage.py loaddata startingdata

  10. If everything installed, you should be able to start the Django development server:

    python3 ./manage.py runserver localhost:8000

  11. You can browse to http://localhost:8000/team_fundraising/

Email

In order to send out emails when someone registers, makes a donation or receives a donation, you need to provide a mail server. A Gmail account can be used for this. Edit the .env file and add EMAIL_HOST, EMAIL_PORT, EMAIL_HOST_USER and EMAIL_HOST_PASSWORD.

PayPal

The website uses django-paypal to process donations. To test PayPal without having to make payments each time, you can create a sandbox account from the PayPal Developer Site. You can then add the sandbox "business account" to PAYPAL_ACCOUNT in the .env file. You can use a sandbox "personal buyer account" to make test donations.

Django-paypal uses Instant Payment Notification (IPN) meaning that PayPal will make a request to the app if a transaction is successful. For this to work on a development environment, you need to be using the system from a domain that accepts incoming connections. The easiest way to do this is using serveo or ngrok.

Deployment

I'll add more details later or when someone else wants to deploy the app, but the general steps are:

  • Get a server and domain through providers like Digital Ocean or Heroku

  • Follow steps 1-8 from installing above.

  • Add environment variables or edit the .env file for production settings.

  • Collect static files for production:

    python manage.py collectstatic

  • Set up nginx, Gunicorn and supervisor as detailed in the simple is better than complex article.

If you have difficulties, please feel free to contact the #author.

Support

For any issues installing, using or contributing, please feel free to contact the author.

Built with

Contributing

If you belong to a charity or non-profit event that has a fundraising component and would like to use this platform for your event, the author can help you get set up. This will also help development by making the product more easily adaptable to events.

If you are a Django/Python or CSS developer, we have a healthy list of features we would like to implement in the TODO file. I may move that to a ticket tracker if a few people join. The author will approve pull requests for the time being. I am also looking for designer help to clean up the design and make a nicer "thermometer".

This project has adopted the Contributor Covenant, version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

Authors

License

This project is licensed under the MIT License.

Acknowledgments