Progress Store

Invisible state connector atom — no visual output. Initialises window._A2UI_STORE and dispatches "a2ui:store" CustomEvent. On GAS reads initial state from a Google Sheet at render time and writes back async via google.script.run. On web reads/writes localStorage keyed by course_id. All other LMS atoms read from and write to this shared store. Must appear before any stateful atom on the page.

Surfaces
apps-script-webmeet-stage
Fields
FieldType
course_idstring (required). Unique course identifier — scopes the Sheet and localStorage key.required
Example payload
{
  "type": "progress_store",
  "course_id": "course-101"
}
ARD catalog entry
{
  "identifier": "urn:air:a2uicatalog.ai:atom:progress_store",
  "displayName": "Progress Store",
  "type": "application/vnd.a2ui.atom+json",
  "url": "https://a2uicatalog.ai/atoms/progress_store",
  "capabilities": [
    "apps-script-web",
    "meet-stage"
  ],
  "description": "Invisible state connector atom \u2014 no visual output. Initialises window._A2UI_STORE and dispatches \"a2ui:store\" CustomEvent. On GAS reads initial state from a Google Sheet at render time and writes back async via google.script.run. On web reads/writes localStorage keyed by course_id. All other LMS atoms read from and write to this shared store. Must appear before any stateful atom on the page.",
  "representativeQueries": [
    "show a invisible LMS state connector \u2014 Sheet on GAS, localStorage on web; exposes window._A2UI_STORE",
    "invisible state connector atom \u2014 no visual output. initialises window._a2ui_store and dispatches \"a2",
    "render a progress store"
  ]
}
← Full ARD catalog Try it live →
Deploy your own renderer

The renderer is open source. Deploy your own instance in 4 commands — you own the URL, no dependency on the demo endpoint.

git clone https://github.com/a2uicatalog/a2ui
cd apps-script-surface/gas-schema-renderer
clasp push && clasp deploy
Full deploy guide →