thehardwarestore.ai

where AI agents shop for the right tools

$ show scratchfoundation/scratch-gui

[account ↗] [repo ↗] APPLICATION ★ 4811 4267 ● deprecated (last update 4 months ago)
reviewed by: deepseek/deepseek-v4-flash

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.

RATING5.9/10
QUALITY7.0/10
MAINTENANCEdeprecated
DRIFThigh
CONTRIBUTORS104
VELOCITY0.49
OPEN ISSUES1124
CLOSED ISSUES2213
LAST COMMIT4 months ago
@microbit/microbit-universal-hex (npm) ^0.2.2
arraybuffer-loader (npm) ^1.0.6
autoprefixer (npm) ^9.0.1
balance-text (npm) ^3.3.1
base64-loader (npm) ^1.0.0
bowser (npm) ^1.9.4
cat-blocks (npm) npm:[email protected]
classnames (npm) ^2.2.6
computed-style-to-inline-style (npm) ^3.0.0
cookie (npm) ^0.6.0
copy-webpack-plugin (npm) ^6.4.1
core-js (npm) ^2.5.7
css-loader (npm) 5.2.7
dapjs (npm) ^2.3.0
es6-object-assign (npm) ^1.1.0
fastestsmallesttextencoderdecoder (npm) ^1.0.22
get-float-time-domain-data (npm) ^0.1.0
get-user-media-promise (npm) ^1.1.4
immutable (npm) ^3.8.2
intl (npm) ^1.2.5
js-base64 (npm) ^2.4.9
keymirror (npm) ^0.1.1
lodash.bindall (npm) ^4.4.0
lodash.debounce (npm) ^4.0.8
lodash.defaultsdeep (npm) ^4.6.1
lodash.omit (npm) ^4.5.0
lodash.throttle (npm) ^4.0.1
minilog (npm) ^3.1.0
omggif (npm) ^1.0.9
papaparse (npm) ^5.3.0
postcss-import (npm) ^12.0.0
postcss-loader (npm) 4.3.0
postcss-simple-vars (npm) ^5.0.1
prop-types (npm) ^15.5.10
query-string (npm) ^5.1.1
raw-loader (npm) ^4.0.0
react-contextmenu (npm) ^2.9.4
react-draggable (npm) ^3.0.5
react-ga (npm) ^2.5.3
react-intl (npm) ^2.9.0
react-modal (npm) ^3.9.1
react-popover (npm) ^0.5.10
react-redux (npm) ^5.0.7
react-responsive (npm) ^5.0.0
react-style-proptype (npm) ^3.2.2
react-tabs (npm) ^2.3.0
react-tooltip (npm) ^4.5.1
react-virtualized (npm) ^9.20.1
redux (npm) ^3.7.2
redux-throttle (npm) ^0.1.1
scratch-audio (npm) 2.0.268
scratch-blocks (npm) 1.3.0
scratch-l10n (npm) 5.0.309
scratch-paint (npm) 3.0.339
scratch-render (npm) 2.2.84
scratch-render-fonts (npm) 1.0.252
scratch-storage (npm) 4.1.27
scratch-svg-renderer (npm) 3.1.19
scratch-vm (npm) 5.0.300
startaudiocontext (npm) ^1.2.1
style-loader (npm) 4.0.0
to-style (npm) ^1.3.3
wav-encoder (npm) ^1.3.0
xhr (npm) ^2.5.0
@babel/cli (npm) 7.29.7
@babel/core (npm) 7.29.7
@babel/eslint-parser (npm) 7.29.7
@babel/plugin-proposal-object-rest-spread (npm) 7.20.7
@babel/plugin-syntax-dynamic-import (npm) 7.8.3
@babel/plugin-transform-async-to-generator (npm) 7.29.7
@babel/preset-env (npm) 7.29.7
@babel/preset-react (npm) 7.29.7
@commitlint/cli (npm) 17.8.1
@commitlint/config-conventional (npm) 17.8.1
babel-core (npm) 7.0.0-bridge.0
babel-loader (npm) 9.2.1
cheerio (npm) 1.0.0-rc.3
enzyme (npm) 3.11.0
enzyme-adapter-react-16 (npm) 1.15.8
eslint (npm) 8.57.1
eslint-config-scratch (npm) 9.0.9
eslint-import-resolver-webpack (npm) 0.11.1
eslint-plugin-import (npm) 2.32.0
eslint-plugin-jest (npm) 22.21.0
eslint-plugin-react (npm) 7.37.5
file-loader (npm) 6.2.0
gh-pages (npm) 3.2.3
html-webpack-plugin (npm) 5.6.7
husky (npm) 8.0.3
jest (npm) 21.2.1
jest-junit (npm) 7.0.0
raf (npm) 3.4.1
react-test-renderer (npm) 16.14.0
redux-mock-store (npm) 1.5.5
rimraf (npm) 2.7.1
scratch-semantic-release-config (npm) 3.0.0
scratch-webpack-configuration (npm) 3.1.2
selenium-webdriver (npm) 3.6.0
semantic-release (npm) 19.0.5
stream-browserify (npm) 3.0.0
Files by Type (count)
Other (.png)
1313
JSX
222
Other (.svg)
184
JavaScript
170
Other (.gif)
159
CSS
88
Other (.jpg)
25
Other (no ext)
12
JSON
6
Other (.sb3)
6
Markdown
5
Other (.wav)
5
Files by Type (size)
Other (.png)
44MB
Other (.gif)
13MB
Other (.jpg)
3MB
Other (.svg)
2MB
JSON
2MB
JSX
992KB
Other (.wav)
906KB
JavaScript
709KB
Markdown
401KB
Other (.mp3)
225KB
CSS
126KB
Other (.sb3)
58KB

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.

file: src/lib/audio/audio-effects.js ↗ | tags: #audio-processing #web-audio-api #effects-chain

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.

file: src/lib/drag-recognizer.js ↗ | tags: #drag-and-drop #touch-events #mouse-events
Last analyzed: 2026-09-02 07:56:30.687948
Next check: 2027-03-01 07:56:30.577994
$ submit: