Panoptes
Zooniverse API to support user defined volunteer research projects.
https://github.com/zooniverse/panoptes
Category: Biosphere
Sub Category: Biodiversity Citizen Science
Keywords
docker hacktoberfest panoptes-platform ruby zooniverse
Keywords from Contributors
activerecord
Last synced: about 5 hours ago
JSON representation
Repository metadata
Zooniverse API to support user defined volunteer research projects
- Host: GitHub
- URL: https://github.com/zooniverse/panoptes
- Owner: zooniverse
- License: apache-2.0
- Created: 2014-04-22T16:16:02.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2026-05-06T23:35:13.000Z (6 days ago)
- Last Synced: 2026-05-07T01:26:08.082Z (6 days ago)
- Topics: docker, hacktoberfest, panoptes-platform, ruby, zooniverse
- Language: Ruby
- Homepage:
- Size: 10.4 MB
- Stars: 111
- Watchers: 29
- Forks: 42
- Open Issues: 107
- Releases: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
README.md
Panoptes 
The new Zooniverse API for supporting user-created projects.
Documentation
The Panoptes public API is documented here.
Requirements
Since Panoptes uses Docker to manage its environment, the requirements listed below are also found in docker-compose.yml. The means by which a new Panoptes instance is created with Docker is located in the Dockerfile. If you plan on using Docker to manage Panoptes, skip ahead to Installation.
Panoptes is primarily developed against stable MRI. If you're running MRI Ruby you'll need to have the Postgresql client libraries installed as well as have Postgresql version 11 running.
- Ubuntu/Debian:
apt-get install libpq-dev - OS X (with homebrew):
brew install postgresql
Installation
We only support running Panoptes via Docker and Docker Compose. If you'd like to run it outside a container, see the above Requirements sections to get started.
Setup Docker and Docker Compose
Usage
-
Clone the repository
git clone https://github.com/zooniverse/Panoptes. -
Install Docker from the appropriate link above.
-
cdinto the cloned folder. -
Run
docker-compose buildto build the containers Panoptes API container. You will need to re-run this command on any changes toDockerfile.dev -
Install the gem dependencies for the application
- Run:
docker-compose run --rm panoptes bundle install
- Run:
-
Setup the configuration files via a rake task
- Run:
docker-compose run --rm panoptes bundle exec rake configure:local
- Run:
-
Create and run the application containers with
docker-compose up -
If the above step reports a missing database error, kill the docker-compose process or open a new terminal window in the current directory and then run
docker-compose run --rm panoptes bundle exec rake db:setupto setup the database. This command will launch a new Docker container, run the rake DB setup task, and then clean up the container. -
To seed the development database with an Admin user and a Doorkeeper client application for API access run
docker-compose run --rm panoptes bundle exec rails runner db/dev_seed_data/dev_seed_data.rb -
Open up the application in your browser at http://localhost:3000
Once all the above steps complete you will have a working copy of the checked out code base. Keep your code up to date and rebuild the image on any code or configuration changes.
Testing
There are multiple options for setting up a testing environment:
-
Run it entirely from within docker-compose:
- Run
docker-compose buildto build the panoptes container. - Install the gem dependencies for the application
- Run:
docker-compose run --rm panoptes bundle install
- Run:
- Create config files if you don't already have them, run
docker-compose run --rm -e RAILS_ENV=test panoptes bundle exec rake configure:local - To create the testing database, run
docker-compose run --rm -e RAILS_ENV=test panoptes bundle exec rake db:setup - Run the full spec suite
docker-compose run -T --rm -e RAILS_ENV=test panoptes bundle exec rspecnoting that running all tests is slow.- Use rspec focus keyword in your specs or specify the spec you want to run, e.g.
docker-compose run -T --rm -e RAILS_ENV=test panoptes rspec path/to/spec/file.rb
- Use rspec focus keyword in your specs or specify the spec you want to run, e.g.
- Run
-
Use docker to run a testing environment bash shell and run test commands .
- Run
docker-compose run --service-ports --rm -e RAILS_ENV=test panoptes bashto start the containers - Run
bundle exec rspecto run the full test suite
- Run
-
Use parts of docker-compose manually and wire them up manually to create a testing environment.
- Run
docker-compose run -d --name postgres --service-ports postgresto start the postgres container - Run
docker-compose run -T --rm -e RAILS_ENV=test panoptes bundle exec rspecto run the full test suite
- Run
-
Assuming you have the correct Ruby environment already setup:
- Run
bundle install - Start the docker Postgres container by running
docker-compose run -d --name postgres --service-ports postgresor run your own - Create config files if you don't already have them, run
bundle exec rake configure:local - Create doorkeeper keys, run
bundle exec rake configure:doorkeeper_keys - Modify your
config/database.ymltest env to point to the running Postgres server, e.g.host: localhost - Setup the testing database if you haven't already, by running
RAILS_ENV=test rake db:setup - Finally, run rspec with
RAILS_ENV=test rspec
- Run
Rails 5
Using the gem https://github.com/clio/ten_years_rails to help with the upgrade path
https://www.youtube.com/watch?v=6aCfc0DkSFo
Using docker-compose for env setup
docker-compose -f docker-compose-rails-next.yml build
docker-compose -f docker-compose-rails-next.yml run --service-ports --rm panoptes bash
Install the gems via next
BUNDLE_GEMFILE=Gemfile.next bundle install
or
next bundle install
check for incompatible gems for target rails verion
BUNDLE_GEMFILE=Gemfile.next bundle exec bundle_report compatibility --rails-version=5.0.7
or
next bundle exec bundle_report compatibility --rails-version=5.0.7
check for outdated gems
BUNDLE_GEMFILE=Gemfile.next bundle exec bundle_report outdated
or
next bundle exec bundle_report outdated
Run the specs
It's recommeded to enable spring for testing env
unset DISABLE_SPRING
run all specs for rails 5 gemfile
BUNDLE_GEMFILE=Gemfile.next bundle exec rspec
or
next bundle exec rspec
or fail fast
BUNDLE_GEMFILE=Gemfile.next bundle exec rspec --fail-fast
or
next bundle exec rspec --fail-fast
or with gaurd (recommended to enable spring)
BUNDLE_GEMFILE=Gemfile.next bundle exec guard --no-interactions
or
next bundle exec guard --no-interactions
Boot the rails app
Via Rails server
BUNDLE_GEMFILE=Gemfile.next rails s
or
next rails s
Via Puma
BUNDLE_GEMFILE=Gemfile.next bundle exec puma -C config/puma.rb
or
next bundle exec puma -C config/puma.rb
Contributing
Thanks a bunch for wanting to help Zooniverse. Here are few quick guidelines to start working on our project:
- Fork the Project on Github.
- Clone the code and follow one of the above guides to setup a dev environment.
- Create a new git branch and make your changes.
- Make sure the tests still pass by running
bundle exec rspec. - Add tests if you introduced new functionality.
- Commit your changes. Try to make your commit message informative, but we're not sticklers about it. Do try to to add
Closes #issueorFixes #issuesomewhere in your message if it's addressing a specific open issue. - Submit a Pull Request
- Wait for feedback or a merge!
Your Pull Request will run via github actions.
License
Copyright by the Zooniverse
Distributed under the Apache Public License v2. See LICENSE
Owner metadata
- Name: Zooniverse
- Login: zooniverse
- Email: contact@zooniverse.org
- Kind: organization
- Description:
- Website: https://www.zooniverse.org
- Location: Everywhere!
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/106856?v=4
- Repositories: 364
- Last ynced at: 2024-04-10T13:02:32.598Z
- Profile URL: https://github.com/zooniverse
GitHub Events
Total
- Delete event: 118
- Pull request event: 210
- Issues event: 6
- Watch event: 2
- Issue comment event: 81
- Push event: 237
- Pull request review event: 52
- Pull request review comment event: 176
- Create event: 128
Last Year
- Delete event: 56
- Pull request event: 88
- Issues event: 3
- Watch event: 1
- Issue comment event: 26
- Push event: 183
- Pull request review event: 40
- Pull request review comment event: 158
- Create event: 64
Committers metadata
Last synced: 2 days ago
Total Commits: 4,254
Total Committers: 33
Avg Commits per committer: 128.909
Development Distribution Score (DDS): 0.58
Commits in past year: 91
Committers in past year: 5
Avg Commits per committer in past year: 18.2
Development Distribution Score (DDS) in past year: 0.549
| Name | Commits | |
|---|---|---|
| Campbell Allen | c****n@g****m | 1787 |
| Edward Paget | e****d@c****e | 939 |
| Marten Veldthuis | m****n@v****m | 455 |
| dependabot[bot] | d****] | 394 |
| Zach Wolfenbarger | z****r@g****m | 191 |
| yuenmichelle1 | m****e@z****g | 108 |
| Adam McMaster | a****m@z****g | 84 |
| dependabot-preview[bot] | 2****] | 70 |
| Oluwatoyosi Oyegoke | 3****i | 53 |
| Michael Parrish | m****l@z****g | 50 |
| nciemniak | n****k@g****m | 27 |
| Edward Paget | e****t@g****m | 23 |
| Cliff Johnson | c****f@z****g | 13 |
| Roger Hutchings | r****r@h****s | 10 |
| Sarah Allen | s****h@z****g | 8 |
| Will Granger | t****r@g****m | 6 |
| Rona Costello | r****o@p****k | 5 |
| Michael Parrish | m****h@g****m | 4 |
| Amy Boyer | a****y@z****g | 3 |
| Chris Snyder | b****s@g****m | 3 |
| dependabot[bot] | s****t@d****m | 3 |
| Simone Duca | s****e@z****g | 2 |
| srallen | s****n | 2 |
| Shaun A. Noordin | s****n | 2 |
| Jim O'Donnell | j****m@z****g | 2 |
| Arfon Smith | a****h@g****m | 2 |
| Alex Bowyer | a****r@g****m | 2 |
| Amy Boyer | a****a | 1 |
| Brian Carstensen | b****n@g****m | 1 |
| Margaret Kosmala | m****a@g****m | 1 |
| and 3 more... | ||
Committer domains:
- zooniverse.org: 8
- itsravenous.com: 1
- dependabot.com: 1
- plants.ox.ac.uk: 1
- hutchin.gs: 1
- veldthuis.com: 1
- cassetteta.pe: 1
Issue and Pull Request metadata
Last synced: about 5 hours ago
Total issues: 20
Total pull requests: 246
Average time to close issues: almost 2 years
Average time to close pull requests: 2 months
Total issue authors: 11
Total pull request authors: 9
Average comments per issue: 2.5
Average comments per pull request: 0.59
Merged pull request: 74
Bot issues: 2
Bot pull requests: 178
Past year issues: 1
Past year pull requests: 53
Past year average time to close issues: N/A
Past year average time to close pull requests: about 2 months
Past year issue authors: 1
Past year pull request authors: 6
Past year average comments per issue: 0.0
Past year average comments per pull request: 0.17
Past year merged pull request: 14
Past year bot issues: 0
Past year bot pull requests: 31
Top Issue Authors
- lcjohnso (8)
- dependabot[bot] (2)
- zwolf (2)
- marten (1)
- shaunanoordin (1)
- adammcmaster (1)
- mwalmsley (1)
- tingard (1)
- mcbouslog (1)
- eatyourgreens (1)
- njsgastro (1)
Top Pull Request Authors
- dependabot[bot] (178)
- zwolf (25)
- yuenmichelle1 (18)
- Tooyosi (16)
- lcjohnso (5)
- BenASmith278 (1)
- nciemniak (1)
- kieftrav (1)
- eatyourgreens (1)
Top Issue Labels
- enhancement (4)
- good first issue (2)
- dependencies (2)
- bug (2)
- question (1)
- help wanted (1)
- nice-to-have (1)
Top Pull Request Labels
- dependencies (178)
- ruby (53)
- bug (1)
Dependencies
- zooniverse/label-when-approved-action v1.0.5 composite
- actions/checkout v3 composite
- github/codeql-action/analyze v2 composite
- github/codeql-action/autobuild v2 composite
- github/codeql-action/init v2 composite
- Azure/aks-set-context v1 composite
- actions/checkout v2 composite
- docker/build-push-action v2 composite
- docker/login-action v1 composite
- docker/setup-buildx-action v1 composite
- actions/checkout v2 composite
- zooniverse/middleman-gh-pages-action v1.2.0 composite
- actions/checkout v2 composite
- ruby/setup-ruby v1 composite
- postgres 11-alpine docker
- ruby 2.7-slim build
- panoptes rails-next-local
- postgres 11
- redis latest
- panoptes local
- postgres 11
- redis latest
- ruby 2.7-slim build
- database_cleaner ~> 1.99.0 development
- factory_bot_rails >= 0 development
- guard-rspec >= 0 development
- listen ~> 3.7 development
- mini_racer >= 0 development
- mock_redis >= 0 development
- pry >= 0 development
- rspec >= 0 development
- rspec-its >= 0 development
- rspec-rails >= 0 development
- rubocop ~> 0.91.0 development
- rubocop-performance >= 0 development
- rubocop-rails >= 0 development
- rubocop-rspec >= 0 development
- spring ~> 2.1.1 development
- spring-commands-rspec >= 0 development
- sprockets ~> 3.7 development
- ten_years_rails >= 0 development
- webmock >= 0 development
- active_interaction ~> 3.8.3
- active_model_serializers >= 0
- active_record_extended >= 0
- activerecord-import ~> 1.4
- aws-sdk ~> 2.10
- azure-storage-blob >= 0
- dalli >= 0
- deep_cloneable ~> 3.2.0
- devise ~> 4.7
- doorkeeper ~> 4.4
- doorkeeper-jwt ~> 0.2.1
- faraday ~> 1.10
- faraday-http-cache ~> 2.4
- faraday_middleware ~> 1.2
- flipper >= 0
- flipper-active_record >= 0
- flipper-ui >= 0
- graphiql-rails >= 0
- graphql >= 0
- honeybadger ~> 5.0
- httparty >= 0
- jquery-rails ~> 4.5
- json-schema ~> 2.8
- librato-metrics ~> 2.1.2
- lograge >= 0
- mime-types >= 0
- newrelic_rpm >= 0
- omniauth ~> 1.9
- omniauth-facebook ~> 5.0
- omniauth-google-oauth2 >= 0
- p3p ~> 2.0
- panoptes-client >= 0
- pg ~> 0.21
- pg_search >= 0
- puma ~> 6.0.2
- pundit ~> 2.2.0
- rack-cors ~> 1.0
- rails ~> 5.2
- ranked-model ~> 0.4.8
- restpack_serializer >= 0
- scientist ~> 1.6.3
- sidekiq ~> 6.0
- sidekiq-congestion ~> 0.1.0
- sidekiq-cron >= 0
- sidekiq-unique-jobs ~> 6.0
- standby >= 0
- stringex ~> 2.8
- strong_migrations >= 0
- uglifier ~> 4.2
- versionist ~> 2.0
- zoo_stream ~> 1.0.1
- 196 dependencies
- middleman ~> 4.2
- middleman-autoprefixer ~> 3.0
- middleman-sprockets ~> 4.0
- middleman-syntax ~> 3.0
- nokogiri ~> 1.13
- redcarpet ~> 3.5
- rouge ~> 2.0
- activesupport 6.1.6
- addressable 2.8.0
- autoprefixer-rails 10.4.7.0
- backports 3.23.0
- coffee-script 2.4.1
- coffee-script-source 1.12.2
- concurrent-ruby 1.1.10
- contracts 0.13.0
- dotenv 2.7.6
- erubis 2.7.0
- execjs 2.8.1
- fast_blank 1.0.1
- fastimage 2.2.6
- ffi 1.15.5
- haml 5.2.2
- hamster 3.0.0
- hashie 3.6.0
- i18n 1.6.0
- kramdown 2.4.0
- listen 3.0.8
- memoist 0.16.2
- middleman 4.4.2
- middleman-autoprefixer 3.0.0
- middleman-cli 4.4.2
- middleman-core 4.4.2
- middleman-sprockets 4.0.0
- middleman-syntax 3.0.0
- mini_portile2 2.8.0
- minitest 5.16.2
- nokogiri 1.13.10
- padrino-helpers 0.15.1
- padrino-support 0.15.1
- parallel 1.22.1
- parslet 2.0.0
- public_suffix 4.0.7
- racc 1.6.1
- rack 2.2.4
- rb-fsevent 0.11.1
- rb-inotify 0.10.1
- redcarpet 3.5.1
- rexml 3.2.5
- rouge 2.2.1
- sassc 2.4.0
- servolux 0.13.0
- sprockets 4.1.1
- temple 0.8.2
- thor 1.2.1
- tilt 2.0.10
- toml 0.3.0
- tzinfo 2.0.4
- uglifier 3.2.0
- webrick 1.7.0
- zeitwerk 2.6.0
Score: 8.881002624255569