No description
Find a file
2025-07-18 15:25:02 -04:00
.github/workflows update name and repo everywhere 2025-07-18 15:23:11 -04:00
.vscode snippets for custom blocks and field lines 2024-01-08 22:29:47 -05:00
app convert delay blocks 2025-07-18 14:23:51 -04:00
docs update name and repo everywhere 2025-07-18 15:23:11 -04:00
src inject help urls for all blocks 2025-07-18 15:03:45 -04:00
test bump snapshots to include help url 2025-07-18 15:25:02 -04:00
.gitattributes Initial commit 2023-08-31 09:02:19 -04:00
.gitignore ignore generated/copied files for now 2025-06-20 13:21:34 -04:00
.npmignore Initial commit 2023-08-31 09:02:19 -04:00
.tool-versions broaden node version 2025-06-19 11:35:53 -04:00
eslint.config.js update eslint config, lint and lint-export tasks 2024-05-14 15:04:12 -04:00
export.js group definition files 2025-07-15 13:45:37 -04:00
export_util.js clean doc export with helpers 2025-06-24 14:11:37 -04:00
index.html render all block ids/types 2025-04-10 15:11:11 -04:00
jsconfig.json tidy. more jsconfig hinting 2024-11-22 15:41:06 -05:00
lifecycle.md cleanup, docs 2025-02-07 11:53:41 -05:00
package-lock.json update name and repo everywhere 2025-07-18 15:23:11 -04:00
package.json update name and repo everywhere 2025-07-18 15:23:11 -04:00
README.md cleanup, docs 2025-02-07 11:53:41 -05:00
scratch.md todos 2025-07-18 15:09:54 -04:00
TODO.md notes 2025-04-09 16:14:18 -04:00
vite.config.js disable vite plugin, delete more dead files 2025-07-15 14:12:20 -04:00

Blockly Tooling

A custom Blockly app needs to define:

  • blocks
    • inputs
    • fields
    • validators
    • generators
    • extensions
    • mixins
    • mutators
  • toolboxes
    • categories
    • buttons
    • labels
  • workspaces
    • starting blocks
    • settings
    • plugins

Blockly can be difficult to work with, as given. This is a clean space to experiment.

Benefits of Making a Separate Project

  • host project stays cleaner
  • tighter code-and-fix loop
  • test in isolation
  • deploy smaller experiments for feedback

A Framework for a custom Blockly app

This is the core concept of the project: a better way of defining a custom Blockly application.

Better?

  • expressive DSL
  • keep related implementations together (Locality of Behavior)
  • higher level idioms for common interactions

Check out the /app directory:

  • /app/blocks
  • /app/toolbox
  • /app/workspaces

Tools

Transformer

Compiles a directory tree of DSL files into Blockly source files. This is where the main app is.

Dev Environment

Provides a web application to host the Blockly project under development. Combines the Transformer with Vite to automatically compile and serve the app. The expressivity and ergonomics of the DSL coupled with this environment which instantly visualize changes as they are made is the point of this project: a reaosonable Blockly dev environment.

  • lives in /src
  • ingets from /app
  • hosts app at http://localhost:5173 (or something)

Exporter

A brutal chunk of code to produce deployment-ready Blockly source files. Currently rough and ready, but effective. Lots of options should be supported but aren't.

  • lives in /exporter

  • ingests from /app

  • exports to /export

  • /app: custom Blockly app in development

  • /src: the Blockly Tool application

  • /export: where app files go when an export is performed

  • /dist: where Blockly Tool app files go when exporting this application for testing and demonstration purposes