{"id":19578556,"url":"https://github.com/materialsproject/propjockey","last_synced_at":"2025-09-23T18:44:47.320Z","repository":{"id":57455114,"uuid":"73599853","full_name":"materialsproject/propjockey","owner":"materialsproject","description":"Spinning property workflows. Taking requests.","archived":false,"fork":false,"pushed_at":"2019-06-25T21:54:44.000Z","size":5749,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-22T02:47:50.317Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/materialsproject.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-11-13T06:37:04.000Z","updated_at":"2019-06-25T21:54:46.000Z","dependencies_parsed_at":"2022-09-04T10:12:57.872Z","dependency_job_id":null,"html_url":"https://github.com/materialsproject/propjockey","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/materialsproject/propjockey","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/materialsproject%2Fpropjockey","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/materialsproject%2Fpropjockey/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/materialsproject%2Fpropjockey/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/materialsproject%2Fpropjockey/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/materialsproject","download_url":"https://codeload.github.com/materialsproject/propjockey/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/materialsproject%2Fpropjockey/sbom","scorecard":{"id":623780,"data":{"date":"2025-08-11","repo":{"name":"github.com/materialsproject/propjockey","commit":"3912f2e0a41e296bde55c8533858de6b061458bb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}}]},"last_synced_at":"2025-08-21T05:51:02.705Z","repository_id":57455114,"created_at":"2025-08-21T05:51:02.705Z","updated_at":"2025-08-21T05:51:02.705Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276459490,"owners_count":25646370,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-22T02:00:08.972Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T07:11:56.040Z","updated_at":"2025-09-23T18:44:47.281Z","avatar_url":"https://github.com/materialsproject.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Propjockey helps you queue up workflows and dynamically change their priorities for running;\nit's like having a [slipmat](https://en.wikipedia.org/wiki/Slipmat) for scientific computing.\n\nPropjockey is a tool for staff managing scientific computing\nresources to facilitate a user community voting to prioritize\ncalculation of properties across a database of known entities. For\nexample, across a database of entities corresponding to known\ncrystalline materials, the full elastic tensor may not already be\ncalculated for each material because such a calculation is\ncomputationally expensive, not of interest for all materials, etc.\n\nThe staff managing the growth and dissemination of this database of\nmaterial structures and properties wishes to empower the community of\nusers consuming the data to help prioritize computational jobs in a\nway that will dovetail with in-house priorities. Propjockey helps with\nthis, connecting users to details of running workflows and providing\nemail notification when property calculations complete.\n\n* Former name: Interactive Leaderboard for Property Requests and Notification (ILPRN).\n\nExample deployment: http://elastic.pj.materialsproject.org/.\n\n[Science Gateways 2016](http://sciencegateways.org/gateways2016/) conference: [extended abstract](docs/gateways2016-extended-abstract.pdf) and [talk slides](docs/gateways2016-talk-slides.pdf).\n\n## Development\n\nIn a fresh virtualenv:\n\n```\npip install -e .\nexport FLASK_APP=propjockey\nexport FLASK_DEBUG=1\nexport PROPJOCKEY_SETTINGS=$(pwd)/local_settings.py\nflask run\n```\n\nThere is a provided `local_settings.example.py` to serve as a template\nfor your `local_settings.py`, which if stored at the root level will\nbe `.gitignore`d.\n\nEnsure local settings are appropriate for your use case. Function\ndefinitions are part of the settings. Hopefully, many of the various\nsettings, including some of the functions, will not need to change for\nyou to get started.\n\n## Testing\n\nYou can make a test database derived from your real, live data. The\ndatabase will be located at mongodb://localhost:27017/propjockey_test and\nhave entries, votes, and workflows collections. All user emails in\nyour real data will be aliased to protect user identities. To drop any\nexisting test database and generate a new one using your data:\n\n```\nflask make_test_db\n```\n\nThen, to test the code against the test database:\n\n```\npython setup.py test\n```\n\nThe `USE_TEST_CLIENTS` local setting enables you to use your test\ndatabase during development and not just when running automated\ntests. This is nice when lacking a reliable/fast network connection.\n\nTo save your test database to a file for backup/sharing:\n\n```\nmongodump --db=propjockey_test --gzip --archive=propjockey_test.gz\n```\n\nand to restore it during development / on a testing server:\n\n```\nmongorestore --drop db=propjockey_test --gzip --archive=propjockey_test.gz\n```\n\n## Deployment\n\nThere are many officially documented\n[options](http://flask.pocoo.org/docs/0.11/deploying/) for deploying a\nFlask app such as this, for example [gunicorn](http://gunicorn.org/)\nbehind an [nginx](https://nginx.org/en/) proxy, e.g.\n\n```\n# activate the virtualenv\ngunicorn -w 4 -b 0.0.0.0:4000 propjockey:app\n# and ensure your nginx configuration `proxy_pass`es to 0.0.0.0:4000\n```\n\nAn example proxy setup is described at the official Flask\ndocumentation\n[here](http://flask.pocoo.org/docs/0.11/deploying/wsgi-standalone/#proxy-setups).\n\n## Running Email Notification as a Cron Job\n\n```\n# activate the virtualenv\n# cd to directory with local_settings.py\n# Ensure `USE_TEST_CLIENTS` local setting is False\nexport PROPJOCKEY_SETTINGS=$(pwd)/local_settings.py\npython -m propjockey.notify\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaterialsproject%2Fpropjockey","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaterialsproject%2Fpropjockey","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaterialsproject%2Fpropjockey/lists"}