← Beginner tutorial: build an accessible counter

2. Replace luastra.json

luastra/ui · app.render · app.handle · about 15 minutes
one app module · one test module · ui.render

The manifest declares every source file, dependency, test, and host capability used by this tutorial.

When to use it

Replace the generated manifest before checking the project so the test can import the application and the application can import luastra/ui.

  • ui.render admits host rendering; it does not grant storage, network, media, or filesystem access.
  • Dependencies are per module: app/main imports luastra/ui, while the test imports app/main.
  • The test module is listed in both modules and tests because declaration and execution are separate manifest responsibilities.

Focused example

{
  "schemaVersion": 2,
  "project": {
    "id": "dev.luastra.beginner-counter",
    "entry": "app/main"
  },
  "sdk": {
    "contract": 1
  },
  "capabilities": ["ui.render"],
  "modules": [
    {
      "id": "app/main",
      "source": "src/main.luau",
      "dependencies": ["luastra/app", "luastra/ui"]
    },
    {
      "id": "app/tests/counter",
      "source": "tests/smoke.luau",
      "dependencies": ["app/main"]
    }
  ],
  "tests": ["app/tests/counter"]
}

Complete inventory

View all pages in Beginner tutorial: build an accessible counter
← Previous: 1. Create the projectNext: 3. Replace src/main.luau →