Skip to content

SceneryStack Repository List

Note

All repositories are located under the phetsims organization, e.g., phetsims/scenery

Warning

All new code in SceneryStack is being developed in TypeScript, but some older repositories still contain JavaScript.

SceneryStack: Core

Repo Function Language Description
phet-lib Built Library JavaScript Contains built versions of SceneryStack Libraries.
scenery View TypeScript Foundational library for representing graphics (rendering to SVG, Canvas or WebGL), handling input and generally abstraction for the browser and cross-platform support. Shapes are represented using kite. Observer and emitter patterns use axon. Support for alternative input and accessibility features.
sun View TypeScript Graphical user interface components, such as buttons and checkboxes which could be useful in any application context. Built using scenery.
axon View TypeScript Event-based model and data structures for the observer pattern (Property) and listener pattern (Emitters).
dot Model JavaScript Mathematical objects such as Vector, Matrix, and corresponding numerical algorithms.
kite Model TypeScript Shapes and geometry. Mathematics implemented using dot.
phet-core Model TypeScript Basic utility & support data structures and algorithms.
tandem Model TypeScript Simulation-side code to support name-object regstration and PhET-iO instrumentation.
utterance-queue View TypeScript Alerting library powered by aria-live to generate dynamic browser-embedded TTS.
tambo View TypeScript Sound effects and sonification. Uses axon for some observer/listeners support.
assert Model JavaScript Minimal standalone assertion support
sherpa Third Party Libraries JavaScript All 3rd-party dependencies. Some such as font-awesome or lodash are used in every simulation and some such as numeric or three.js are as-needed.
query-string-machine Utilities JavaScript A query string parser that supports type coercion, default values & validation. No dependencies.
phetcommon View JavaScript A variety of utility functions, model components, and analytics integrations that are reusable across different simulations.
brand View - Simulations TypeScript Provides support for the main supported brands "PhET" and "PhET-iO" and hooks for clients to develop their own branding.
chipper Tooling - Simulations JavaScript Tools for developing and building simulations. Uses code in perennial-alias for some tasks.
alpenglow View TypeScript Experimental rasterization engine, by PhET Interactive Simulations.

SceneryStack: Simulation Core

Repo Function Language Description
joist Model / View TypeScript Common model/view for simulations. Handles loading, animation loop, homescreen, navigation bar, menus, preferences, and screen management.
scenery-phet View TypeScript Reusable Scenery view components for simulations, such as number controls / readouts, probes, sensors, buckets, magnifying glasses, etc.
twixt Model / View TypeScript Support for animation and easings/tweening. Can be used to animate user interface components or artwork in the view or model elements directly.

SceneryStack: Supplementary

Repo Function Language Description
vegas Model / View TypeScript Reusable game components for interactive simulations.
bamboo Utilities TypeScript Charting library built with Scenery.
mobius View TypeScript Embed 3D scenes in Scenery with with Three.js.
nitroglycerin View JavaScript Chemistry-specific code for interactive simulations
tappi View TypeScript Support for haptics/vibrations in HTML5.
babel Translation Content JavaScript Contains translated strings used by simulation and common components
tangible Controller TypeScript Library for handling computer vision and tangible input using MediaPipe.

Simulation Development

Repo Function Language Description
perennial Tooling - Simulations JavaScript Deployment/maintenance tools that won't change with different versions of chipper checked out (always runs in main).
simula-rasa Utilities - Simulations TypeScript PhET Simulation Template. "Simula rasa" is Latin for "blank sim".
example-sim Utilities - Simulations JavaScript Example demonstrating the structure of a PhET interactive simulation.

PhET-specific Development and Testing

Repo Function Language Description
phetmarks Tooling / Utilities JavaScript Bookmark URLs for use in PhET development.
aqua Tooling / Utilities JavaScript Automatic QUality Assurance

Standalone Tools

Repo Function Language Description
paper-land Collaborative Design Tooling JavaScript Build and explore multimodal web interactives with pieces of paper!
rosetta Translation Tooling JavaScript Rosetta is a tool for translating PhET simulations. It is built using the MERN tech stack: MongoDB, Express, React, and Node.

Prototypes and Research

Repo Function Language Description
a11y-research Documentation JavaScript A repository to track PhET's research into accessibility, or "a11y" for short.
vello-tests Build.json JavaScript Rough proof-of-concept testing to explore integrating Vello with JS.
wilder Documentation TypeScript Example Sim for pioneering usage of newer language features (see Laura Ingalls Wilder).