Set up the monorepo
Clone the Azmara Platform repository, build every package and run the docs site locally. For contributors; to use @azmr/ui in your own app, see Installation.
View as Markdown for coding assistants, or see llms.txt.
This page is for working on the packages themselves. To use @azmr/ui in an app, follow Installation instead.
Prerequisites
- Node.js >= 20.0.0
- pnpm >= 9.0.0
- For
@azmr/ai: Visual Studio 2022 with "Desktop development with C++" workload
Clone & install
git clone https://github.com/azmara-labs/platform.git
cd platform
pnpm installEnvironment setup
cp .env.example .envFill in the required values:
# Generate an encryption key
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"Build all packages
pnpm buildTry the playground
pnpm --filter @azmr/site devThen open /playground — a live, interactive demo of @azmr/core, @azmr/query, and @azmr/ui
working together, no separate app to run. See the Playground guide for
what it demonstrates.
Check the docs site
CI checks the docs in four ways beyond the unit tests, and you can run each locally:
-
Links, demos and entry points:
pnpm --filter @azmr/site testchecks every link and anchor, that every demo exists and renders, and that every package entry has a page. -
Accessibility of the rendered pages: build and start the site, then run axe over every page in light and dark mode in Chrome.
pnpm turbo run build --filter=@azmr/site pnpm --filter @azmr/site start & pnpm --filter @azmr/site check:pagesA violation fails the check. The few we accept are listed with a reason in
apps/site/a11y-known-issues.json, and a listed issue that stops occurring fails the check too, so remove it. -
Performance: Lighthouse (mobile) runs three times on the landing page and on the menu page, and the medians are compared with
apps/site/lighthouse-budgets.json. Each page has a target (the project standards: 96 on every score, FCP under 1.5 s, LCP under 2.5 s, CLS under 0.1) and a limit, the worst accepted for now. A page past its limit fails the check; a missed target is reported, so the check tells the truth about the gap without failing every pull request. Tighten a limit as the page improves. Run it withpnpm --filter @azmr/site check:lighthouseagainst the running site. The limits were set from runs on the CI runner, which is steadier than a laptop: a single local run can swing by 20 points, so judge a change by the CI result, or by the median of several local runs. On the CI runner the menu page has two modes, about 3.1 to 3.5 s or 4.4 s, depending on whether the first paint lands before or after the page's JavaScript has loaded; its limit is set from the slower, steadier one, and the way to bring it down is less JavaScript on the docs pages. -
Spelling: the docs use New Zealand English, and a test fails on American spellings in prose (
color,behavior,organize). Code, link targets and the generated changelogs are not checked.
Native module note
@azmr/ai uses isolated-vm which requires native compilation.
Windows:
- Install Visual Studio 2022 with "Desktop development with C++" workload
- Run
pnpm rebuild isolated-vm
macOS: Xcode Command Line Tools (xcode-select --install)
Linux: sudo apt install build-essential python3