A container repository that hosts multiple standalone DA (Document Authoring) tools side-by-side, with a landing page at the repo root (index.html) that links to all of them. Most tools are self-contained Vite + React apps in their own top-level folder, built to <tool>/dist/ and served as static files from AEM Edge Delivery Services (the "code bus"); a few are lighter-weight no-build tools served directly from their own folder. Each tool is embedded in DA at its own URL.
Open the DA Tools home page for cards linking to every tool, or go straight to one:
Block Finder, Document Counter, Block Index, and GitHub Package Comparator are static (no-build) tools served at <tool>/index; the others are built Vite apps served at <tool>/dist/index. Append ?ref=<branch> to preview a non-main branch, e.g. …/da-document-generator/dist/index?ref=my-branch.
da-tools/ (repo)
├─ index.html # landing page — cards linking to every tool
├─ pdp-document-generator/ # PDP tool — bulk-generate product pages (Zazzle) [Vite/React, built]
│ ├─ src/ index.html vite.config.ts package.json
│ └─ dist/{ index.html, assets/ } # built output (committed)
├─ da-document-generator/ # generic {{token}} → DA document generator [Vite/React, built]
│ ├─ src/ index.html vite.config.ts package.json
│ └─ dist/{ index.html, assets/ } # built output (committed)
├─ block-signature-migrator/ # inspect block structure + schemas, audit drift [Vite/React, built]
│ ├─ src/ index.html vite.config.js package.json
│ └─ dist/{ index.html, assets/ } # built output (committed)
├─ block-finder/ # find every /express page using a block [static, no build]
│ └─ index.html index.js
├─ document-counter/ # count HTML docs under a directory path [static, no build]
│ └─ index.html index.js
├─ block-index/ # index every block in the /express tree [static, no build]
│ └─ index.html index.js
├─ github-package-comparator/ # compare package.json across GitHub repos [static, no build]
│ └─ index.html index.js github-package-comparator.js *.css
├─ shared/da-api.js # DA fetch helpers shared by the static tools
├─ fstab.yaml # repo-level: registers the EDS site
├─ SERVING.md # repo-level: how serving works + troubleshooting
└─ README.md
Each Vite tool is independent: its own package.json, node_modules, Vite config, and build. There is intentionally no root package.json — you work inside a tool's folder. The static tools (block-finder/, document-counter/, block-index/) have no build at all — they're hand-authored ES modules that share shared/da-api.js and load the DA SDK from https://da.live/nx/utils/sdk.js at runtime.
cd pdp-document-generator # or: cd da-document-generator
npm install
npm run dev # local dev server
npm run build # compiles to ./dist (commit the result)The built dist/ is committed because AEM Code Sync serves the repo's files directly (there is no CI build step). After npm run build, commit the updated <tool>/dist/ and push — Code Sync mirrors it to the code bus in ~1–2 min.
- Create a new top-level folder
my-tool/as a standard Vite + React app (copy an existing tool as a starting point). - In its
vite.config.ts, set the productionbaseto the served subfolder:const base = command === 'serve' ? '/' : '/my-tool/dist/'
npm install && npm run buildinside the folder, commitmy-tool/(includingdist/), and push.- It's live at
https://da.live/app/maxn-adobe/da-tools/my-tool/dist/index.
Then add a card for it to the root index.html so it appears on the DA Tools home page. A tool that needs no framework can instead be a static, no-build folder (like block-finder/) — a plain index.html + ES modules served directly at <tool>/index, with no dist/ and no base to set; see SERVING.md.
No per-tool site registration is needed — the whole repo is one EDS site (see SERVING.md).
All tools are served through AEM Edge Delivery Services and embedded in da.live. See SERVING.md for how it works (site registration, Code Sync, the per-tool subfolder pattern) and an x-error troubleshooting table.