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
- Has materials and tools for introductory astronomy students.
- Associated projects: Galaxy Zoo 101, Hubble's Law, and Zooniverse In Schools (project)
- 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
Install the dependencies:
Either:
npm ci
ornpm install
Test:
npm run test
Development mode with livereload:
npm start
When you are done, create a production-ready version of the JS bundle:
npm run build
Depends on docker install and docker-compose install
docker-compose build
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 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.
On merge to master, a Github Action is triggered to deploy to staging to https://classroom.preview.zooniverse.org
.
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
.
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.
- URL: education-api.zooniverse.org
- Staging URL: education-api-staging.zooniverse.org
- Repo: zooniverse/education-api
- This service has multiple sub-services, such as a Kinesis stream that keeps track of classifications for specific white-listed projects.
Astronomy-related
Astro 101 requires a few unique services.
- Caesar
- Used for exporting data generated by classrooms.
- URL: caesar.zooniverse.org
- Repo: zooniverse/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.
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.
- 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 theworkflow
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 thegroup
specifying that "hey, I'm classifying on the default workflow, but as part of a student group."
- Example 1: a Darien assignment link might look like
- For Programs that feature classrooms and assignments, the general idea is the same:
- 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", andprogram.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.
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
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.
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.