Structure an app project
Keep the manifest, tests, and custom page source together. The manifest is the deployable contract; your frontend build supplies files to a frontendPages resource.
my-app/
├── package.json
├── twl-tool.app.ts
├── twl-tool.tool.test.ts
├── frontend/
│ ├── src/
│ └── dist/
│ ├── index.html
│ └── assets/
└── README.md
Recommended responsibilities
| File | Responsibility |
|---|---|
twl-tool.app.ts | App identity, permissions, resources, surfaces, and bindings |
twl-tool.tool.test.ts | Executable expectations for the exact Tool version |
frontend/src | Developer-authored UI for custom surfaces |
frontend/dist | Static files included in resources.frontendPage() |
One source of truth
Use ref() wherever one manifest object depends on another. Avoid copying slugs or trying to predict installed database IDs. During installation, the platform resolves the reference for the target organization.
For a single-file proof of concept, files can contain an inline index.html. For a production page, read the compiled assets into the manifest as part of your build pipeline.