Skip to content

zooniverse/classroom

Repository files navigation

Zooniverse Classrooms

Zooniverse Classrooms (formerly Education API Front End, or edu-api-front-end) is the Zooniverse's web portal for educational tools, designed for Teachers and Students who want to learn more about science using real world people-powered research projects.

The website is available at https://classroom.zooniverse.org/

Zooniverse Classrooms is divided into different Programs that cater to different fields of study, and each Program is usually also associated with a specific Zooniverse project.

Currently available Programs:

  • Astro 101 with Galaxy Zoo
  • Zooniverse-based Activities for Undergraduates
    • GEO/BIO/EVS 101 with Floating Forests
    • ASTRO 101 with Planet Hunters
    • ASTRO/GEO 101 with Planet Four
  • WildCam Darién Lab
    • Educational tool for students and explorers interested in learning about ecology, using real world camera trap data from the jungles of Panama.
    • Heavy focus on using geographical map data.
    • Associated project: WildCam Darién
  • WildCam Gorongosa Lab
    • Similar to WildCam Darién Lab, except focusing on Gorongosa National Park.
    • Actually the original education program, and used to live at lab.wildcamgorongosa.org
  • Wildwatch Kenya Lab
    • Similar to WildCam Darién Lab, except focusing on Kenyan wildlife.
    • Associated project: WildCam Darién
  • Zooniverse in Schools
    • Provides content and guidance to encourage teachers to use Zooniverse projects in school classrooms. Intended for students ages 9 to 12.
    • Associated project: see "Zooniverse in Schools" assignment in Astro 101

Usage

Install the dependencies:

Either:

  • npm ci or
  • npm install

Test:

npm run test

⚠️ WARNING: tests don't actually work.

Development mode with livereload:

npm start

When you are done, create a production-ready version of the JS bundle:

npm run build

Alternatively run it via docker & docker-compose

Depends on docker install and docker-compose install

  1. docker-compose build
  2. docker-compose up

Or get a bash console where you can run npm cmds via the built container (ensure step 1 above is done) docker-compose run --rm --service-ports classrooms bash

Run the tests via docker docker-compose run --rm classrooms npm run test

Deployment

Deployment 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.

Staging

On merge to master, a Github Action is triggered to deploy to staging to https://classroom.preview.zooniverse.org.

Production

Production 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://classroom.zooniverse.org.

External Dependencies

Zooniverse Classrooms requires several external services to work properly.

Zooniverse.org

Our main platform is important for a few things:

  • Allows authentication via Panoptes. Teachers & students on Zooniverse Classrooms login with their Zooniverse user details.
  • Contains the Classify page of each associated project, where students actually work on assignments.

Education API

This service manages the Programs listed on Zooniverse Classrooms, manages classrooms and assignments, keeps track of student classifications.

Astronomy-related

Astro 101 requires a few unique services.

  • Caesar
  • Zoo Tools
    • A Google Sheets add-on that helps process Galaxy Zoo data
    • Repo: zooniverse/zootools-sheets
    • ⚠️ Since late 2022, this hasn't been working!
  • Google Drive integration
    • We allow teachers to export directly to Google Drive via "Export Data -> Export with Google".
    • Note that this feature sometimes won't appear if you're logged in on a Chrome Incognito window or similar.

Mapping Services

WildCam Darién Lab, WildCam Gorongosa Lab, and Wildwatch Kenya Lab all use mapping services to provide the geographical map interface.

  • Classroom Maps API:
    • Contains data related to subjects, aggregations, park boundaries, etc - essentially the points of interest on the map.
    • URL: classroom-maps-api.zooniverse.org
    • Repo: zooniverse/classroom-maps-api
    • See the WildCam Docs for adding or updating map data.
    • Previously, we used a service called Carto or CartoDB, but we moved away due to cost issues and started hosting our own map API service.
  • Various Leaflet Map Providers:
    • Provides the actual visual maps, ranging from street maps to satellite views.
    • Look at mapConfig.map.tileLayers in the WildCam Darién Lab map config for examples.
    • We wanted to use Google Maps at one point, but this was cost-prohibitive.

Misc

See the config file for additional service URLs and app IDs.

Development Notes

Here are some very nerdy details about how each project works. Only read this section if something breaks and/or you need a deeper understanding how things work behind the scenes.

About those Programs

  • General
    • For Programs that feature classrooms and assignments, the general idea is the same:
      • Teachers create classrooms and must invite students to join.
      • Students "work" on assignments by submitting classifications to a specific workflow (determined by the assignment). This classifying is done via the associated Zooniverse project's Classify page (on zooniverse.org), except with some flags attached.
        • Example 1: a Darien assignment link might look like https://www.zooniverse.org/projects/wildcam/wildcam-darien/classify?workflow=10937&classroom=1 , with the workflow specifying "please let me classify on workflow 10937, which the Education API knows is associated with assignments XYZ".
        • Example 2: a Hubble's Law assignment link might look like https://www.zooniverse.org/projects/zooniverse/intro2astro-hubbles-law/classify?group=1599406, with the group specifying that "hey, I'm classifying on the default workflow, but as part of a student group."
  • Astro 101 with Galaxy Zoo
    • For each assignment, students classify on the default workflow of the associated projects, but with a student group ID added to the metadata.
    • If you peek into their Program's attributes in EduAPI, you'll see program.attributes.metadata.assignments contains information for all the program's associated Zooniverse projects.
  • WildCam Darién Lab and WildCam Gorongosa Lab
    • Teachers create custom assignments, (selecting which Subjects to appear) and each assignment creates a clone of a main workflow of the associated project.
    • If you peek into their Program's attributes in EduAPI, you'll see program.attributes.custom = true which indicates "please create custom assignments", and program.attributes.metadata.workflowId indicating which is the "main workflow" to clone.
  • Wildwatch Kenya Lab
    • Unlike Darién and Gorongosa, every student classifies on the default workflow.

Dev Troubleshooting

Q: If I have questions, where should I start looking for answers? A: Try our Stack Overflow page, and search for "classroom" or "education. (Access restricted to Zooniverse users only)

Q: How do I make a WildCam Lab program? A: See https://stackoverflowteams.com/c/zooniverse/questions/339

Credits

This project was built on top of Zooniverse Reduxify, which in turn was developed from the original React Starterify by Granze and used under the MIT License.

License

Copyright 2018 Zooniverse

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.