Development Environment

Welcome Contributors!

This project is in the very early stages of development. Thus, the development environment (not to mention the API and the documentation) is very fluid and may change radically as more contributors join. Please bear that in mind when starting out.

System setup

The recommended development platform is Ubuntu Jammy. At a minimum, you will need several packages in order to start development. There is a handy setup script that you may use to initialize your dev system. Refer to the script for a full list of required and useful packages.


The code is managed with Git and lives in a GitHub repository under the OpenPassPhrase ogranization:

All the code modules reside in the opp folder inside the repository. The following PyPI packages are used inside the code to implement various capabilities:

  • config - read and parse configuration files

  • pycrypto - encryption/decryption using AES cipher

  • click - command line option parsing

  • SQLAlchemy - ORM interface to RDBMS

  • Flask - web server request/response routing

  • PyJWT - JSON Web token implementation in Python

  • testtools - unit testing framework

  • mock - mocking framework for unit tests

  • xkcdpass - secure multiword passphrases

Additionally, the following packages are used to accomplish various tasks:

  • tox - virtual environment automation and task aggregation

  • pytest - run unit and functional tests

  • pytest-cov - code coverage plugin for pytest

  • flake - PEP8 source code checker

  • Spinx - python documentation generator from reStructuredText

Testing, etc…

The tox tool reads a tox.ini file which resides at the top level of the repository and instructs tox on how to setup the various jobs.

To run syntax checker:

tox -e pep8

To run tests:

tox -e py35

To generate docs:

tox -e docs

To have tox recreate the virtual environment from scratch, either rm -rf .tox folder or use the -r flag in the tox command, e.g.: tox -r -e py35.

Please refer to the Contribution Guidelines section for information on how to get your contributions merged, and to the Project Wishlist section for ideas on where to contribute.

Happy Hacking!