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.
- 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
-
Install poetry
pip install poetry
-
Clone this repository:
git clone https://github.com/dominikszopa/fundraising.git
cd fundraising
-
Install dependencies:
poetry install
-
Activate the virtual environment
poetry shell
-
Copy .env.example to .env:
cp .env.example .env
-
Edit .env and add a SECRET_KEY value, a long (32 chars or more) random string.
-
Create a database:
python3 ./manage.py migrate
-
Create a superuser - please use a strong password:
python3 ./manage.py createsuperuser
-
Load test data into the database from fixtures:
python3 ./manage.py loaddata startingdata
-
If everything installed, you should be able to start the Django development server:
python3 ./manage.py runserver localhost:8000
-
You can browse to http://localhost:8000/team_fundraising/
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.
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.
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.
For any issues installing, using or contributing, please feel free to contact the author.
- Python 3.7 - Primary language
- Django 2.2 - Web Framework
- django-paypal - Payment processor
- Bootstrap 4 - Interface
- django-crispy-forms - Bootstrap forms
- CKEditor 4 - WYSIWYG editor
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
- Dominik Szopa - Django, HTML, CSS - DominikSzopa - [email protected]
This project is licensed under the MIT License.
- Horizontal Fundraising Thermometer by Robot Balloon
- Simple jQuery Search Filter by Alexander Erlandsson
- The many useful articles at simple is better than complex by Vitor Freitas