The main point of this project is to allow partner programs to enter those Universal Data Elements required by HUD. As such, it is currently not and does not try to be a full homeless management information system (HMIS) as specified by HUD.
As noted by HUD:
Universal data elements enable the HMIS the ability to record unique, unduplicated client records, establish participation in a project within a date range, and identify clients who meet time criteria for chronic homelessness.
Setting Up For Development
To get the project set up and configured, first create and load a virtual environment for the project. There are several ways to do this and it is an optional but recommended step. Here's one way:
virtualenv env -p python3 source env/bin/activate
Now, install the project requirements:
pip install -r requirements.txt
These next commands will set up the database and initialize the data. If you are setting up a test or development instance, the default database connection settings should be sufficient (using SQLite). For production (or near-production staging) environments, create your database and set an environment variabled named
DATABASE_URL to a connection string for that database.
Install the schema and initial data into your database:
src/manage.py migrate src/manage.py loaddata staff-groups.yaml
Finally, load information specific to your structure. This could include: partner projects, project staff, etc. For information on doing that, run
src/manage.py load_projects -h. As a superuser user you can always add this data manually. You can create a new superuser with the
src/manage.py createsuperuser command.
For testing convenience, you can load some test data if you just want to get started. This includes a few projects, an intake staff user with username
'intake-admin', and two project staff users with usernames
src/manage.py loaddata hmis-test-data.yaml
Deploying to an EC2 instance, or a droplet, etc.
The address simplehmis.phila.gov is currently hard-coded into the nginx.conf file. You will have to update this with your domain (or simply comment out the
server_name directive). Also, the nginx conf redirects all traffic to HTTPS. This application should be served over HTTPS, but if you want to serve it over HTTP, simply comment out the first
server block and add
listen 80 to the top of the second.
init-machine.sh script and your environment should get configuerd correctly.
In order to send login emails, set up Amazon SES (or another SMTP email service), and add the following variables to your environment:
EMAIL_HOST EMAIL_PORT EMAIL_HOST_USER EMAIL_HOST_PASSWORD DEFAULT_FROM_EMAIL
It is also recommended that you use SSL or TLS to send your emails. Set either the
EMAIL_USE_TLS environment variable to
DEFAULT_FROM_EMAIL must be an address able to send mail for the given user on the given host.