Giter VIP home page Giter VIP logo

meltingscales / homeless-shelter-donation-pickup-coordinator Goto Github PK

View Code? Open in Web Editor NEW
0.0 3.0 0.0 10.27 MB

Web Client-Server application that coordinates donations of goods between shelters' pickup trucks and people with things to donate.

Home Page: https://shelter-pickup-coordinator.herokuapp.com/

Python 30.80% HTML 27.13% CSS 40.44% JavaScript 0.95% Batchfile 0.19% Makefile 0.40% Shell 0.09%
python homeless-shelters

homeless-shelter-donation-pickup-coordinator's Introduction

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?
        • Of a specfic class?
      • See item-yield of routes as statistics
      • Heatmap of item density?
    • By item group
      • Clothing
        • Winter clothes
        • Summer clothes
      • Food
        • Canned food
        • Produce

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

    • Also don't know.

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:

homeless-shelter-donation-pickup-coordinator's People

Contributors

dependabot[bot] avatar meltingscales avatar

Watchers

 avatar  avatar  avatar

homeless-shelter-donation-pickup-coordinator's Issues

Ensure list of items is exhaustive/all-inclusive

How can you make sure that your list of item will be exhaustive. That is, if someone has an unusual, yet important/useful item to donate, how do you make sure that the person has a way to indicate that they have the item. Also, because this list may be long, I suggest grouping the items under sub-categories (clothes, toiletries, canned food, winter clothing, shoes, etc.). a good place to brainstorm for these lists is perhaps Craig's list.

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.