$ show scratchfoundation/scratch-gui
This is the official Scratch 3.0 graphical user interface (scratch-gui), a React/Redux single-page application that provides the complete web-based editor for creating, editing, and running Scratch projects. It integrates tightly with the Scratch ecosystem (scratch-vm, scratch-blocks, scratch-render, scratch-storage, etc.) to deliver block-based programming, sprite/costume/sound management, stage rendering, hardware extensions, cloud variables, tutorials, and project save/load. The architecture is heavily modular with many Higher-Order Components (HOCs) and relies on a centralized Redux store. While the codebase is large and well-structured for its domain, it exhibits significant technical drift due to outdated dependencies (React 16, Redux 3, Jest 21) and reliance on deprecated lifecycle methods. The repository is being archived and migrated to the scratch-editor mono-repo, as announced in the README.
The LLM identified 2 files worth highlighting for reuse:
Provides a pluggable effects chain for audio buffers, supporting echo, fade, mute, robot, and volume effects using Web Audio API. Each effect is a self-contained class extending a base AudioEffect, and the AudioEffects class composes them in sequence. This pattern is cleanly isolated and reusable for any web audio project requiring multi-effect processing.
A standalone utility that abstracts both mouse and touch drag gestures into a single recognizer with configurable threshold and prevention of default behaviors. It emits clear start/move/end events and handles edge cases like multi-touch. This module has no internal dependencies beyond drag constants and can be extracted into any frontend project needing cross-device drag detection.