{"id":18418961,"url":"https://github.com/smrfeld/the-masked-manual-python","last_synced_at":"2025-08-11T19:22:37.447Z","repository":{"id":115478630,"uuid":"316662781","full_name":"smrfeld/the-masked-manual-python","owner":"smrfeld","description":"The Masked Manual app - Python backend for querying surgical masks, respirators from FDA, CDC","archived":false,"fork":false,"pushed_at":"2020-12-05T03:51:47.000Z","size":7302,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-16T06:45:14.738Z","etag":null,"topics":["facemask","mask","respirator"],"latest_commit_sha":null,"homepage":"http://the-masked-manual.herokuapp.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smrfeld.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2020-11-28T05:20:00.000Z","updated_at":"2020-12-05T03:51:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"4d84e0f5-0e27-466c-a9b8-20edabb11671","html_url":"https://github.com/smrfeld/the-masked-manual-python","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smrfeld%2Fthe-masked-manual-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smrfeld%2Fthe-masked-manual-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smrfeld%2Fthe-masked-manual-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smrfeld%2Fthe-masked-manual-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smrfeld","download_url":"https://codeload.github.com/smrfeld/the-masked-manual-python/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248675455,"owners_count":21143767,"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","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":["facemask","mask","respirator"],"created_at":"2024-11-06T04:15:11.826Z","updated_at":"2025-04-13T06:52:31.464Z","avatar_url":"https://github.com/smrfeld.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# The Masked Manual - Python backend\n\nThis application lets you easily search for a face mask's qualifications from federal agencies in the U.S. Both surgical masks and respirators are supported.\n\n\u003cimg src=\"static/logo_social_media.png\" alt=\"drawing\" width=\"400\"/\u003e\n\nSee also:\n* [The iOS app source](https://github.com/smrfeld/the-masked-manual-ios).\n* [Application website](https://the-masked-manual.herokuapp.com).\n\nThis is the Python backend for gathering the data. The data is gathered from:\n* [openFDA of the U.S. Food and Drug Administration (FDA)](https://open.fda.gov/).\n* [Emergency Use Authorizations for Medical Devices of the U.S. Food and Drug Administration (FDA)](https://www.fda.gov/medical-devices/coronavirus-disease-2019-covid-19-emergency-use-authorizations-medical-devices/personal-protective-equipment-euas).\n* [National Personal Protective Technology Laboratory (NPPTL) of the Centers for Disease Control and Prevention (CDC)](https://www.cdc.gov/niosh/npptl/).\n\nYou can [read about the data source permissions on the application website here](https://the-masked-manual.herokuapp.com).\n\nThe list of currently indexed masks and respirators is below.\n\nA Heroku hosted application reloads the data periodically and hosts it online.\n\n## Running\n\nYou can run the Python script:\n```\npython fetch_latest.py\n```\nIt will likely prompt for more options.\n\n## Mask and respirator types\n\n* `SURGICAL_MASK_EUA` - Surgical mask [approved under EUA](https://www.fda.gov/medical-devices/coronavirus-disease-2019-covid-19-emergency-use-authorizations-medical-devices/personal-protective-equipment-euas#surgicalmasks) but **not** FDA approved.\n* `SURGICAL_MASK_FDA` - Surgical mask that is FDA approved.\n* `RESPIRATOR_EUA` - Respirator (N95 or otherwise) that is [approved under EUA](https://www.fda.gov/medical-devices/coronavirus-disease-2019-covid-19-emergency-use-authorizations-medical-devices/personal-protective-equipment-euas#nonniosh) but **not** NIOSH and **not** FDA approved.\n* `RESPIRATOR_EUA_EXPIRED_AUTH` - Respirator (N95 or otherwise) that is [no longer approved under the EUA](https://www.fda.gov/medical-devices/coronavirus-disease-2019-covid-19-emergency-use-authorizations-medical-devices/personal-protective-equipment-euas#nonniosh) and **not** NIOSH and **not** FDA approved.\n* `RESPIRATOR_N95_NIOSH` - [N95 respirator that is NIOSH approved](https://www.cdc.gov/niosh/npptl/topics/respirators/disp_part/N95list1.html) but **not** FDA approved.\n* `RESPIRATOR_N95_NIOSH_FDA` - [N95 respirator that is both NIOSH and FDA approved](https://www.cdc.gov/niosh/npptl/topics/respirators/disp_part/respsource3surgicaln95.html) - also known as surgical respirators.\n\n## Developer\n\n### iOS mockups for website\n\nCourtesy of [smartmockups](https://smartmockups.com/mockup/iphone-11-pro-in-4-colors-h98h3GkI8T).\n\n### To-do\n\nCurrently, only N95 and surgical N95 respirators are indexed from the [complete list here](https://www.cdc.gov/niosh/npptl/topics/respirators/disp_part/default.html).\nTBD are:\n* N99\n* N100\n* R95\n* P95\n* P99\n* P100\n\n### Google Cloud Storage Python interface\n\n[Documentation can be found here.](https://googleapis.dev/python/storage/latest/index.html)\n\n### Flask\n\nTesting flask:\n```\nexport FLASK_APP=app\nexport FLASK_ENV=development\nflask run\n```\n\nThe latest data is served on `data_latest`.\n\n### Scheduled task on Heroku\n\nSee [guide here](https://devcenter.heroku.com/articles/clock-processes-python). Important to scale scheduler after deploying to Heroku:\n```\nheroku ps:scale scheduler=1\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmrfeld%2Fthe-masked-manual-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmrfeld%2Fthe-masked-manual-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmrfeld%2Fthe-masked-manual-python/lists"}