Install PyQt using brew. Currently this will instal PyQt 6. Presumability this might change in the future when newer versions are released.
brew install pyqtCreate the virtual environment from the root of the repo.
./scripts/createEnv.shPut an env file in the root of the repo with the following entries.
HARVEST_ACCESS_TOKEN=XXXXXXXXX
HARVEST_ACCOUNT_ID=XXXXXXXXXX
The following is needed at the start of an Alfred workflow to include the env file in the command to launch the software.
export $(grep -v '^#' PATH_HERE/.env | xargs) && PATH_HERE/.venv/bin/python3 PATH_HERE/src/MainWindow.pyThe pip module called pyinstaller is used to build a deployment package. See the build scripts in the root scripts folder. pyinstaller bundles all the files necessary to run the application into an executable. The windows version uses the --onefile parameter to combine everything into a single executable. Without this there's an _internal folder placed next to the executable that needs to be shipped with the executable. The steps to use pyinstaller were learned here.
A Windows build must be generated on a Windows machine (duh).
The built executable can be zipped or put directly on GitHub as part of a release.
On Windows, simply double clicked the deployed executable. A login screen prompting for credentials will appear. You can use this screen or alternatively you can place an .env file next to the executable with the following items:
DB_HOST=XXXXXXXXXXXXX
DB_PORT=XXXXXXXXXXXXX
DB_NAME=XXXXXXXXXXXXX
DB_USER=XXXXXXXXXXXXX
DB_PASSWORD=XXXXXXXXXXXXX
SSLROOTCERT=XXXXXXXXXXXXX
SSLCLIENTCERT=XXXXXXXXXXXXX
SSLKEY=XXXXXXXXXXXXXOn 14 Apr 2026, the Google Postgres database was backed up and turned off. The script at /scripts/db_postgres_dump.py was used to backup the postgres to a local SQLite database before it was taken offline. The SQlite file was stored locally on Philip and Kellys computers as well as in S3 data folder.