🌱 The City of Chicago is selling vacant residential lots for $1. Here's how you get one.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
data replaced Jeanne Chandler with The Large Lots Team & email Jun 7, 2018


large lots logo

Large Lots

The City of Chicago is selling vacant lots for $1. Here's how you get one.

Configuring and running locally

We recommend using virtualenv and virtualenvwrapper for working in a virtualized development environment. Read how to set up virtualenv.

Once you have virtualenvwrapper set up, run the following commands in your terminal:

mkvirtualenv largelots -p /path/to/your/python3
git clone git@github.com:datamade/large-lots.git
cd large-lots
pip install -r requirements.txt

Set the environmental variables in local_settings.py.example (then drop the .example suffix):

  • SECRET_KEY - Django’s Secret Key used by the project. Can be any relatively hard to guess string.

  • AWS_STORAGE_BUCKET_NAME - the name of the AWS bucket where deed uploads (PDFs, images) reside; for local development you can use: largelots-test-uploads

  • AWS_ACCESS_KEY - AWS key used by the file storage mechanism to store files in S3.

  • AWS_SECRET_ACCESS_KEY - The secret that goes with the key above.

  • CARTODB_API_KEY - Carto API key

  • EMAIL_HOST, EMAIL_PORT, EMAIL_USE_TLS, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD - These are used to configure the email settings for Django. See Django docs for more info.

  • SENTRY_DSN - This is a connection string for Sentry.

Note that the example local settings sets START_DATE and END_DATE to now and two weeks from now, respectively, so you'll default to an "active" application period for local development. In production, these should correspond to the start and end dates of the current round's application period.

Make a database, largelots, and run migrations:

createdb largelots
python manage.py migrate

Now you're ready to run the app:

python manage.py runserver

Navigate to http://localhost:8000/.

Sending emails

We have a management command that facilitates sending emails in bulk. It takes several arguments, including an option to send emails to applicants needing to complete the Economic Disclosure Statement:

python manage.py send_emails --eds_email=87

The arguments after --eds_email refer to the number of applications who should receive emails.


Export your settings:

export DJANGO_SETTINGS_MODULE=lots_admin.tests.test_config

Run the tests:

pytest lots_admin/tests


Our map was built using open data from Chicago and Cook County:


We used the following open source tools:

  • QGIS - graphic information system (GIS) desktop application
  • PostGIS - geospatial database
  • Bootstrap - Responsive HTML, CSS and Javascript framework
  • Leaflet - javascript library interactive maps
  • jQuery Address - javascript library creating RESTful URLs


The send_emails management command employs the Python logging facility. The file handler directs output to log files in /var/log/largelots on the LargeLots server.


  • Demond Drummer - idea, content, outreach
  • Derek Eder - developer, content
  • Eric van Zanten - developer, GIS data merging
  • Forest Gregg - process design, content


  • Aya O'Connor - logo
  • Juan-Pablo Velez - content

Errors / Bugs

If something is not behaving intuitively, it is a bug, and should be reported. Report it here: https://github.com/datamade/large-lots/issues

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Commit, do not mess with rakefile, version, or history.
  • Send me a pull request. Bonus points for topic branches.


Copyright (c) 2014 DataMade and LISC Chicago. Released under the MIT License.