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.
Looking for the best way to start using SceneryStack? Check out the Pathways guide to get started!
SceneryStack: Core¶
Repo | Function | Language | Description |
---|---|---|---|
alpenglow | View | TypeScript | Experimental rasterization engine, by PhET Interactive Simulations. |
assert | Model | JavaScript | Minimal standalone assertion support. |
axon | View | TypeScript | Event-based model and data structures for the observer pattern (Property) and listener pattern (Emitters). |
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. |
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. |
phet-lib | Built Library | JavaScript | Contains built versions of SceneryStack Libraries. |
phetcommon | View | JavaScript | A variety of utility functions, model components, and analytics integrations that are reusable across different simulations. |
query-string-machine | Utilities | JavaScript | A query string parser that supports type coercion, default values & validation. No dependencies. |
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. |
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. |
sun | View | TypeScript | Graphical user interface components, such as buttons and checkboxes which could be useful in any application context. Built using scenery. |
tambo | View | TypeScript | Sound effects and sonification. Uses axon for some observer/listeners support. |
tandem | Model | TypeScript | Simulation-side code to support name-object registration and PhET-iO instrumentation. |
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. |
utterance-queue | View | TypeScript | Alerting library powered by aria-live to generate dynamic browser-embedded TTS. |
SceneryStack: Simulation Core¶
Repo | Function | Language | Description |
---|---|---|---|
example-sim | Utilities - Simulations | JavaScript | Example demonstrating the structure of a PhET interactive simulation. |
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. |
simula-rasa | Utilities - Simulations | TypeScript | PhET Simulation Template. "Simula rasa" is Latin for "blank sim". |
SceneryStack: Supplementary¶
Repo | Function | Language | Description |
---|---|---|---|
babel | Translation Content | JavaScript | Contains translated strings used by simulation and common components. |
bamboo | Utilities | TypeScript | Charting library built with Scenery. |
mobius | View | TypeScript | Embed 3D scenes in Scenery with Three.js. |
nitroglycerin | View | JavaScript | Chemistry-specific code for interactive simulations. |
tangible | Controller | TypeScript | Library for handling computer vision and tangible input using MediaPipe. |
tappi | View | TypeScript | Support for haptics/vibrations in HTML5. |
vegas | Model / View | TypeScript | Reusable game components for interactive simulations. |