This application is written in Flask; "Flask is a microframework for Python based on Werkzeug, Jinja 2 and good intentions."
To survey and gather relevant user data on passwords and their usage.
####Application Project Structure
app
├── __init__.py
├── decorators.py
├── email.py
├── forms.py
├── mixins.py
├── models.py
├── static
│ └── (asset files: CSS/JS/images)
│ * managed 'mostly' by Bower
├── templates
│ └── (HTML template files)
└── views.py
manage.py
config.py
####Application Configuration
config.py- will hold all configuration values for the application runtime.bowerrc- instructs bower to install files in the specified locationbower.json- the project's Bower configuration file
#####Installing Packaged Dependencies
You are strongly encouraged to use a virtual environment for development, and virtualenv wrapper is the way to go.
Whether you use a virtualenv or not your first step is to install your Python dependencies:
- with virtualenv wrapper
$ mkvirtualenv survey_env -r requirements.txt- without virtualenv wrapper
$ pip install -r requirement.txt
requirements.txt holds a record of all packaged Python dependencies. If you update or add any packages, please remember to run:
$ pip freeze > requirements.txt
#####Configuring/Initializing the Database
Configuration specifications will come in a later update. For now these are the config variables that will be utilized.
SQLALCHEMY_DATABASE_URISQLALCHEMY_ECHODATABASE_QUERY_TIMEOUT
To initialize the database, run:
$ python manage.py initdb
#####Development To run the application in your development environment. After you initialize your database;
$ python manage.py runserver
The development server should start in DEBUG mode (this is specified in you config file) and with the reloader:
$ python manage.py runserver
* Running on http://127.0.0.1:5000/
* Restarting with reloader
#####Production
In production the application uses gunicorn. The command to start the server is:
# <vitualenv>/gunicorn --bind 127.0.0.1:5000 --workers 2 app:app --log-level=debug --log-file=$LOGFILE 2>>$LOGFILE --daemon
- this must run from within the project's directory
- you can place these options in a config file for gunicorn as well
All packaged Python dependencies can be found in requirements.txt and are managed using pip.
Most other packages (related to the application's front end) are managed with Bower and you can see this list in bower.json.
The style for the applications front end is based on Bootstrap but is customized by using a modified bootstrap swatch theme from Bootswatch, namely 'Darkly'.
The custom style sheet is located in app/static/bootswatch.
We update styles by modifying the LESS files. These are compiled using Grunt:
$ grunt swatch:darkly
Running "swatch:darkly" (swatch) task
...
Done, without errors.