{"id":43916862,"url":"https://github.com/zooniverse/pfe-lab","last_synced_at":"2026-02-06T21:34:53.035Z","repository":{"id":14442372,"uuid":"76673569","full_name":"zooniverse/pfe-lab","owner":"zooniverse","description":"Project and Organization management functions for PFE","archived":false,"fork":false,"pushed_at":"2025-03-17T15:39:33.000Z","size":8270,"stargazers_count":0,"open_issues_count":27,"forks_count":5,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-03-17T16:33:37.740Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://lab.zooniverse.org/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zooniverse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2016-12-16T17:44:59.000Z","updated_at":"2025-03-17T15:21:12.000Z","dependencies_parsed_at":"2024-03-24T20:24:40.197Z","dependency_job_id":"30fd18dd-2e52-4145-bb15-fcb19a743763","html_url":"https://github.com/zooniverse/pfe-lab","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/zooniverse/pfe-lab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zooniverse%2Fpfe-lab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zooniverse%2Fpfe-lab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zooniverse%2Fpfe-lab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zooniverse%2Fpfe-lab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zooniverse","download_url":"https://codeload.github.com/zooniverse/pfe-lab/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zooniverse%2Fpfe-lab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29177554,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T20:14:21.878Z","status":"ssl_error","status_checked_at":"2026-02-06T20:14:21.443Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2026-02-06T21:34:52.940Z","updated_at":"2026-02-06T21:34:53.028Z","avatar_url":"https://github.com/zooniverse.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Panoptes-Front-End Lab\n\nPFE Lab is the UI interface for the Zooniverse Lab. \n\n## Usage\n\n__Install the dependencies:__\n\n`npm install`\n\n__Development mode with livereload:__\n\n`npm run start`\n\n__When you are done, create a production-ready version of the JS bundle:__\n\n```npm run _build-production```\n\n## Deployment\n\nDeployment is handled by Github Action. Both staging and production deployment can be run ad hoc in the actions tab as needed if you have the appropriate permissions on the repository.\n\n### Staging\n\nOn opening of pull requests, a Github Action is triggered to deploy to a branch staging location. The blob storage location depends on the pull request number, e.g. `https://pr-214.lab-preview.zooniverse.org`. Note: For authentication, you will need to add the staged URL to Doorkeeper.\n\nOn push to master, a Github Action is triggered to deploy to master staging found at `https://master.lab-preview.zooniverse.org`. \n\n### Production\n\nProduction deployments are triggered by an update to which commit the `production-release` tag is pointed to. This tag should be updated via chat ops and then a Github Action will run that builds and uploads the files to our cloud provider found at `https://lab.zooniverse.org`.\n\n## Testing\n\n- If you write a new component, write a test. Each component should have its own `-test.js` file.\n- The test runner is [Mocha](https://mochajs.org/), assertion library is [Chai](http://chaijs.com/), and [Enzyme](http://airbnb.io/enzyme/) is available for testing React components. [Sinon](http://sinonjs.org/) is used for standalone test spies, stubs, and mocks.\n- You can run the tests with `npm run test`.\n- Tests are also run by Github Actions as part of a CI check on pull requests\n\n## CSS Conventions\n\n- Keep common base styles and variables in **common.styl**. \n- For a given component, pick a unique top-level class name for that component and nest child classes under it. \n- Stylus formatting: Yes colons, no semicolons, no braces. \n- `@extends` up top, then properties (alphabetically), then descendant selectors. \n- Prefer use of `display: flex` and `flex-wrap: wrap` to explicit media queries wherever possible.\n- We are using [Zoo Grommet](https://github.com/zooniverse/zoo-grommet), a Zooniverse theme from the [Grommet](https://grommet.github.io/) React component library.\n- We are using [BEM](http://getbem.com/introduction/) for CSS naming conventions.\n\n## ESLint\n\n- An [ESLint](https://eslint.org/) configuration file is setup in the root of the repository for you to use with your text editor to lint both ES6 and use [Airbnb's React style guide](https://github.com/airbnb/javascript/tree/master/react).\n- ESLint can be run from the CLI with `eslint path/to/local/file.jsx`.\n\n## Credits\n\nBased on the [Zooniverse Redux starter template](https://github.com/zooniverse/zoo-reduxify/), which in turn was based on the original [React Starterify](https://github.com/Granze/react-starterify) (used under the [MIT License](http://opensource.org/licenses/MIT)).\n\n## License\n\nCopyright 2017 Zooniverse\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzooniverse%2Fpfe-lab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzooniverse%2Fpfe-lab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzooniverse%2Fpfe-lab/lists"}