No description
Find a file
2025-02-07 11:53:41 -05:00
.github/workflows fix special case for main 2024-07-03 08:18:22 -04:00
.vscode snippets for custom blocks and field lines 2024-01-08 22:29:47 -05:00
app make end of range optional via cron 2024-12-09 15:45:32 -05:00
src route old blocks to onSchedule, ignore payload key 2024-12-09 13:37:17 -05:00
test/app/util add "no delay" expand and use options helper 2024-11-22 15:23:44 -05:00
.gitattributes Initial commit 2023-08-31 09:02:19 -04:00
.gitignore ignore export dir 2023-12-08 12:51:17 -05:00
.npmignore Initial commit 2023-08-31 09:02:19 -04:00
.tool-versions bump node, enable jsdoc type checking 2024-11-21 16:08:33 -05:00
eslint.config.js update eslint config, lint and lint-export tasks 2024-05-14 15:04:12 -04:00
export.js store delay settings 2024-08-30 15:50:34 -04:00
index.html dev tooling, workspace monitor 2024-12-02 15:34:40 -05: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 set up tests and absolute/named imports 2024-11-21 14:02:09 -05:00
package.json bump node, enable jsdoc type checking 2024-11-21 16:08:33 -05:00
README.md cleanup, docs 2025-02-07 11:53:41 -05:00
scratch.md cleanup, docs 2025-02-07 11:53:41 -05:00
vite.config.js let build depend on exported files. scripts heed 2024-08-26 14:27:02 -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