App built from release
branch is available here:
https://shelter-pickup-coordinator.herokuapp.com/
This application will (once developed) help to coordinate picking up
to-be-donated goods from people who wish to donate them.
It will achieve this by letting donaters and shelters essentially cooperate with
each other over this platform.
Other pages
For those who dislike reading or have little time
- Working on an application for a comms course at IIT
- Will coordinate picking up donated goods from civilians:
- Lets donaters publish their location and what they will donate publicly to various organizations
- When pickup vehicle is collecting, their route (can be) visible to those who want to donate
- Lets orgs plan routes based off of available donations
- Donaters can see what organizations need which items
For donaters
- List what items they wish to donate
- Publish their location to homeless shelters as to optimize the collection
routes of pickup vehicles
- See which shelters; where; need what items
- Get notified of pickup routes
- If a route does not intersect with you, is there another dropoff point
nearby?
For shelters
- Publicly display needed items
- See all people who have things to donate
- Plan routes based off of customizable criteria:
- Distance
- Needed items
- Statistics! (possibly)
- Best geo-locations for most items?
- See item-yield of routes as statistics
- Heatmap of item density?
- By item group
- Clothing
- Winter clothes
- Summer clothes
- Food
For developers
Basic libraries
To develop or contribute for this project, you will need the following:
Environment variables
Required
-
PYTHON_ROOT
= C:\Program Files\Python3.6\
- Where your Python installation lives.
- Essential for running Python programs.
-
SECRET_KEY
= a constant key used to sign cryptographic information
.
- Keep it safe and don't tell anyone it.
- Make sure NOT to print it out once in 'production mode'
- Changing this key will invalidate all of the following if made using a prior key:
- Sessions
- CookieStorage or FallbackStorage
- PasswordResetView tokens
- Any usage of cryptographic signing
-
OSGEO4W_ROOT
= C:\OSGeo4W64\
- Where GEOS, GDAL, PostGIS, PROJ.4 live.
- Essential for
PostGIS
to work with PostGreSQL
.
- Without it, we cannot use
Point
or Geometry
and cannot store Geolocation data.
-
GEOPOSITION_GOOGLE_MAPS_API_KEY
= go get one from google!
- Used to turn addresses into
(lat,lon)
tuples
- Used to embed pretty little maps
Optional (in my experience)
-
STARTUP_DATABASE_TASKS
= true | false
- Whether or not to destroy all data in the database and replace it with test data.
- It is
false
by default, i.e. your database doesn't get reset by default.
-
DJANGO_SETTINGS_MODULE
= donationcoordinator.settings
- The place where a bunch of constant vars live.
-
GEOS_LIBRARY_PATH
= P:/lib/OSGeo4W64/bin/geos_c.dll
- Where the GEOS library lives, whatever that is.
-
GDAL_LIBRARY_PATH
= P:/lib/OSGeo4W64/bin/gdal111.dll
- Where the GDAL library lives, whatever that is.
-
GDAL_DATA
= P:/lib/OSGeo4W64/share/gdal
- Your guess is as good as mine. (I don't know.)
-
PROJ_LIB
= P:/lib/OSGeo4W64/share/proj
Database tasks
Because of the way Django handles database ORM, you will need to run these commands to migrate the objects into SQL schemas:
py manage.py makemigrations
py manage.py migrate
To run, simply type py manage.py runserver
.
Everything is broken and awful! AAAAAHHHH!
If you get super stuck on something, either:
- Look at these files:
Procfile
, it contains the deployment instructions for Heroku,
Profile.windows
, it contains some really old but possibly helpful deployment instructions for windowsx
.travis.yml
, it contains the test-case setup commands and some SQL,
- The travis build logs, which contain all sorts of debug goodness,
- Email me at [my_github_name]@gmail.com
- Contact Henry Post on facebook
- Contact me on Skype
Other important Notes
- What IDE do you use?
- I use PyCharm. It's free and does what I need.
All I use it for that a text editor can't do is essentially refactoring, IntelliSense-like features, debugging tools, etc.
- How do you manage environment variables?
All these env vars seem annoying and I have to set them up every time/run a batch file to set them/etc.
- I use a plugin for PyCharm called '.env files support' that looks at any
.env
file and lets you run a Python program with those environment variables applied.
Here's an example of what the file looks like:
This also explains why I have .env
in my .gitignore
file.
Here's what it looks like in the IDE settings:
- What does your run configuration look like?
- This: