# raspberrypifoundation/blockly

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/raspberrypifoundation-blockly).**

13,437 stars · 3,849 forks · JavaScript · Apache-2.0

## Links

- GitHub: https://github.com/RaspberryPiFoundation/blockly
- Homepage: https://blockly.com
- awesome-repositories: https://awesome-repositories.com/repository/raspberrypifoundation-blockly.md

## Description

Blockly is a web-based visual programming editor and block-based code generator. It allows users to create programs by interlocking graphical blocks that translate into executable source code for various programming languages, removing the need for manual syntax entry.

The project serves as a customizable framework for building specialized visual languages through a customizable block library. It includes a visual block designer for defining custom shapes, behaviors, and specialized input fields, as well as a plugin system to extend the editor's environment.

The system manages programming logic through variable scoping and provides a workspace with navigation tools, contextual block suggestions, and bulk manipulation capabilities. Accessibility is integrated into the interface to support keyboard-only navigation and screen reader compatibility.

## Tags

### Programming Languages & Runtimes

- [Block-Based Code Generators](https://awesome-repositories.com/f/programming-languages-runtimes/block-based-code-generators.md) — Provides a system that converts visual block arrangements into executable code for various programming languages.
- [Visual Programming Representations](https://awesome-repositories.com/f/programming-languages-runtimes/visual-programming-representations.md) — Represents programming concepts using interlocking graphical blocks to generate source code without manual syntax entry. ([source](https://github.com/raspberrypifoundation/blockly#readme))
- [Source Code Generators](https://awesome-repositories.com/f/programming-languages-runtimes/source-code-generators.md) — Translates a graphical arrangement of interlocking blocks into executable source code for various languages.

### Content Management & Publishing

- [Block Shape Definitions](https://awesome-repositories.com/f/content-management-publishing/content-management-systems/content-architecture-modeling/document-models/document-sectioning/document-content-structuring/content-schema-definitions/modular-content-block-definitions/block-shape-definitions.md) — Defines block shapes and behaviors using a schema that allows for dynamic instantiation and custom extensions.

### Development Tools & Productivity

- [Low-Code Development Platforms](https://awesome-repositories.com/f/development-tools-productivity/low-code-development-platforms.md) — Enables the creation of specialized internal tools where non-programmers generate code via visual blocks.
- [Workflow-to-Code Generators](https://awesome-repositories.com/f/development-tools-productivity/project-scaffolding-config-code-generation/code-generation/workflow-to-code-generators.md) — Transforms visual node-based block arrangements into executable source code for various programming languages.
- [Visual Language Frameworks](https://awesome-repositories.com/f/development-tools-productivity/visual-language-frameworks.md) — Provides a framework for defining custom block shapes, input fields, and behaviors to build specialized visual languages.
- [Visual Programming Environments](https://awesome-repositories.com/f/development-tools-productivity/visual-programming-environments.md) — Provides a web-based editor where users construct programs by snapping together graphical blocks.
- [Text and Block Manipulation Tools](https://awesome-repositories.com/f/development-tools-productivity/code-editors-ides/extension-ecosystems-management/editor-ide-extensions/text-and-block-manipulation-tools.md) — Allows users to select and move multiple block stacks simultaneously within the workspace to improve efficiency. ([source](https://raspberrypifoundation.github.io/blockly-samples/))
- [Toolbox Discovery](https://awesome-repositories.com/f/development-tools-productivity/developer-toolboxes/toolbox-discovery.md) — Offers search filters and scrollable lists within the block toolbox to help users quickly find the required components. ([source](https://raspberrypifoundation.github.io/blockly-samples/))
- [Visual Block Designers](https://awesome-repositories.com/f/development-tools-productivity/visual-block-designers.md) — Includes a visual builder interface for defining custom block shapes and generating starter code. ([source](https://raspberrypifoundation.github.io/blockly-samples/))

### Education & Learning Resources

- [Educational Programming Environments](https://awesome-repositories.com/f/education-learning-resources/learning-platforms-infrastructure/educational-infrastructure/educational-tools/educational-programming-environments.md) — Provides an integrated platform with a visual editor to teach software development and logic concepts to students.

### Graphics & Multimedia

- [SVG-Based Vector Rendering](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/engines/canvas-vector-graphics/svg-based-vector-rendering.md) — Renders the workspace and interlocking blocks using scalable vector graphics for precise positioning and scaling.

### User Interface & Experience

- [Workspace Coordinate Management](https://awesome-repositories.com/f/user-interface-experience/coordinate-based-position-calculators/workspace-coordinate-management.md) — Tracks block positions using a 2D coordinate system to enable seamless zooming, panning, and collision detection.
- [Accessible Graphics](https://awesome-repositories.com/f/user-interface-experience/accessible-graphics.md) — Provides a keyboard-navigable and screen-reader-friendly interface for the graphical programming environment. ([source](https://github.com/raspberrypifoundation/blockly/tree/main))
- [Accessible UI Frameworks](https://awesome-repositories.com/f/user-interface-experience/accessible-ui-frameworks.md) — Provides a set of interface components designed to ensure visual programming is usable via keyboard and screen readers.
- [Contextual Component Suggestions](https://awesome-repositories.com/f/user-interface-experience/contextual-component-suggestions.md) — Blockly recommends relevant blocks to the user based on the patterns and types of blocks already present in the workspace. ([source](https://raspberrypifoundation.github.io/blockly-samples/))
- [Dynamic Block Input Connections](https://awesome-repositories.com/f/user-interface-experience/dynamic-input-creation/dynamic-block-input-connections.md) — Supports blocks that automatically add or remove input connections based on user interaction or control settings. ([source](https://raspberrypifoundation.github.io/blockly-samples/))
- [Editor Accessibility Optimizations](https://awesome-repositories.com/f/user-interface-experience/editor-accessibility-optimizations.md) — Implements ARIA labels and keyboard navigation to make the programming experience inclusive for all users.
- [Editor Plugins](https://awesome-repositories.com/f/user-interface-experience/editor-plugins.md) — Provides a plugin architecture to extend the editor with new input fields, visual themes, and code renderers. ([source](https://github.com/raspberrypifoundation/blockly#readme))
- [Accessibility Input Patterns](https://awesome-repositories.com/f/user-interface-experience/input-handling-systems/accessibility-input-patterns.md) — Implements keyboard and spatial navigation patterns to ensure assistive technology compliance within the visual editor. ([source](https://github.com/raspberrypifoundation/blockly#readme))
- [Session-Based Component Storage](https://awesome-repositories.com/f/user-interface-experience/reusable-layout-blocks/session-based-component-storage.md) — Includes a temporary storage area where users can save block stacks for retrieval and reuse throughout the session. ([source](https://raspberrypifoundation.github.io/blockly-samples/))
- [Minimap Navigation](https://awesome-repositories.com/f/user-interface-experience/visual-node-editors/minimap-navigation.md) — Provides workspace management features including a minimap, zoom-to-fit controls, and automatic scrolling. ([source](https://raspberrypifoundation.github.io/blockly-samples/))

### Software Engineering & Architecture

- [Dynamic Block Mutations](https://awesome-repositories.com/f/software-engineering-architecture/block-based-data-models/dynamic-block-mutations.md) — Modifies the internal structure of a block at runtime to add or remove inputs based on user interaction.
- [Hook-Based Plugin Systems](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/plugin-module-systems/modular-plugin-architectures/plugin-based-architectures/hook-based-plugin-systems.md) — Exposes internal hooks that allow developers to inject custom input fields and renderers into the editor.
