{"id":21274854,"url":"https://github.com/maayanlab/fairshake","last_synced_at":"2025-08-28T19:11:32.698Z","repository":{"id":34727247,"uuid":"97031238","full_name":"MaayanLab/FAIRshake","owner":"MaayanLab","description":null,"archived":false,"fork":false,"pushed_at":"2024-10-17T15:44:15.000Z","size":22324,"stargazers_count":10,"open_issues_count":34,"forks_count":6,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-08-15T10:31:34.061Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://fairshake.cloud","language":"HTML","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/MaayanLab.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-07-12T16:47:22.000Z","updated_at":"2025-03-16T08:01:51.000Z","dependencies_parsed_at":"2024-08-20T22:35:02.225Z","dependency_job_id":"8ba0a1b2-0b36-4499-9eec-c5ab9c419912","html_url":"https://github.com/MaayanLab/FAIRshake","commit_stats":{"total_commits":571,"total_committers":7,"mean_commits":81.57142857142857,"dds":0.09281961471103328,"last_synced_commit":"af83c1cb82bdd41e6214d23ab6587d5a4c185b11"},"previous_names":["nitrogen-dcppc/fairshake"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MaayanLab/FAIRshake","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaayanLab%2FFAIRshake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaayanLab%2FFAIRshake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaayanLab%2FFAIRshake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaayanLab%2FFAIRshake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MaayanLab","download_url":"https://codeload.github.com/MaayanLab/FAIRshake/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaayanLab%2FFAIRshake/sbom","scorecard":{"id":88249,"data":{"date":"2025-08-11","repo":{"name":"github.com/MaayanLab/FAIRshake","commit":"b9df802d59ba626d49578b1502ee35851c908cd4"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.6,"checks":[{"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":"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":"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":"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":"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"}},{"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating debian:stable to debian:stable@sha256:de77ae1b03425c79cd5c829687b3db9f1c62e25af09b34aed09f684043f0285a","Warn: pipCommand not pinned by hash: Dockerfile:21-22","Warn: pipCommand not pinned by hash: Dockerfile:21-22","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned"],"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":0,"reason":"20 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2022-190 / GHSA-2gwj-7jmv-h26r","Warn: Project is vulnerable to: PYSEC-2022-1 / GHSA-53qw-q765-4fww","Warn: Project is vulnerable to: PYSEC-2022-20 / GHSA-6cw3-g6wv-c2xv","Warn: Project is vulnerable to: GHSA-7xr5-9hcq-chf9","Warn: Project is vulnerable to: PYSEC-2022-2 / GHSA-8c5j-9r9f-c6w8","Warn: Project is vulnerable to: GHSA-8x94-hmjh-97hq","Warn: Project is vulnerable to: PYSEC-2022-19 / GHSA-95rw-fx8r-36v6","Warn: Project is vulnerable to: PYSEC-2022-3 / GHSA-jrh2-hc4r-7jwx","Warn: Project is vulnerable to: GHSA-rrqc-c2jx-6jgv","Warn: Project is vulnerable to: PYSEC-2021-439 / GHSA-v6rh-hp5x-86rv","Warn: Project is vulnerable to: PYSEC-2022-191 / GHSA-w24h-v9qh-8gxj","Warn: Project is vulnerable to: GHSA-gw84-84pc-xp82","Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: GHSA-v9hf-5j83-6xpp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-15T07:23:16.737Z","repository_id":34727247,"created_at":"2025-08-15T07:23:16.737Z","updated_at":"2025-08-15T07:23:16.737Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272541814,"owners_count":24952466,"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-08-28T02:00:10.768Z","response_time":74,"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-21T09:25:55.091Z","updated_at":"2025-08-28T19:11:32.680Z","avatar_url":"https://github.com/MaayanLab.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FAIRshake\n\nA web interface for the scoring of biomedical digital objects by user evaluation according to the FAIR data principles: Findability, Accessibility, Interoperability, and Reusability.\n\nAvailable at http://fairshake.cloud/\n\n## Code Layout\n- FAIRshake: The django project settings\n- FAIRshakeHub: The website itself, gets all of its information from FAIRshakeAPI\n- FAIRshakeAPI: The primary API facilitator, is enabled with the other API components\n- extensions: Extensions to dependent libraries\n\n## Development\n\n### Setup\nPython 3 is required to run this project.\n\nInstall all dependencies into your environment.\n```bash\npip install -r requirements.txt\n```\n\nNote that `mysqlclient` is the recommended client but `pymysql` can be used as a fallback.\n\n### Staticfiles collection\nTo render the page properly in development, it's necessary to collect staticfiles so they can be hosted by django.\n```bash\n./manage.py collectstatic\n```\n\n### Environment setup\n```bash\n# Run in debugging mode, show errors and host staticfiles locally\nexport DEBUG=1\n\n# Specify location of mysql config file for production database\nexport MYSQL_CONFIG=$(pwd)/config/my.cnf\n```\n\n### Django Shell\nipython is recommended: `pip install ipython`\n`./manage.py shell`\n\n### Django Live Reloading Server\nIn separate terminals execute these commands and then navigate to \u003chttp://localhost:8000/\u003e.\n```bash\n./manage.py runserver\n./manage.py livereload\n```\n\n### Build Docker\n```bash\ndocker-compose build\n```\n\n### Database migrations\nDjango keeps track of database migrations. When modifying `models` it is imperative to create and apply migrations on all old databases. Migrations can be safely removed if they have been applied to all independent databases (for that reason, it's probably better to just not remove them).\n```bash\n./manage.py makemigrations\n./manage.py migrate\n```\n\nNote that this will try but not always succeed to detect renamed fields and such and migrate the backend database accordingly. If it is unable to, it may require manual intervention. For more information https://docs.djangoproject.com/en/2.0/topics/migrations/.\n\n### Testing\n```bash\n# Run Tests\n./manage.py test\n# Run Tests with Coverage\ncoverage run --source='.' manage.py test \u0026\u0026 coverage report\n```\n\n## Database Backup \u0026 Restore\n### Backup\n```bash\n# Backup data, omit django internals (which could cause loading to fail)\n./manage.py dumpdata \\\n  -e contenttypes \\\n  -e admin \\\n  -e auth.Permission \\\n  --natural-foreign \\\n  --indent=2 \\\n    \u003e mybackup.json\n```\n\n### Restore\n```bash\n# Ensure database is initialized\n./manage.py migrate\n# Load data from backup\n./manage.py loaddata mybackup.json\n```\n\n## Production\n### Secret values\nFor the docker-compose to work properly in production, `/config/` should have the following files:\n- `my.cnf`: mysql configuration file with production database credentials\n  - This file can be specified with `MYSQL_CONFIG` environment variable\n- `secret.txt`: Secret key for production (random private string of characters)\n- `cert.key`: SSL Private Key (optional, for https)\n- `cert.crt`: SSL CA Signed Public Key (optional, for https)\n\n### Email\nCan be configured by the administrator [here](http://localhost:8000/admin/des/dynamicemailconfiguration/). If using gmail, ensure you [allow less secure apps](https://myaccount.google.com/lesssecureapps).\n\n### Docker deployment\n```bash\ndocker-compose up\n```\n\n## Troubleshooting\n\n### MySQL issues\nErrors involving mysql trying to load from /tmp/sock arrise when `MYSQL_CONFIG` environment variable is being read, but the file on the other end is problematic.\n1. You're not using an absolute path, so django, running perhaps elsewhere, can't find it. Try: `export MYSQL_CONFIG=$(pwd)/ssl/my.cnf`\n  - Verify that it's accessible at the environment variable with `cat $MYSQL_CONFIG`\n2. Your configuration file has loose permissions, Try: `chmod 644 ssl/my.cnf` before trying again.\n3. Your configuration is malformed.\n\n### Database issues\nIn general, if the database has changed (and there are new migration files), if you're running a local database you may need to apply new migrations with `./manage.py migrate`.\n\n#### No Cache Table\nIf the cache table doesn't yet exist, you can create it with `./manage.py createcachetable`.\n\n### Dependency issues\nFirst try re-executing `pip install -r requirements.txt`.\n\nIn the worst case you may need to rebuild your environment from nothing (starting from scratch, and installing dependencies again).\n\nI recommend `pyenv` for managing isolated python environments.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaayanlab%2Ffairshake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaayanlab%2Ffairshake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaayanlab%2Ffairshake/lists"}