To run Our Future Health design system toolkit locally you'll need to:
- Set up git
- Node.js 20.19.0+ (recommended: Node 24.13.1 LTS - see .nvmrc)
- pnpm 10+ (required - this project uses pnpm workspaces)
Type
git --versionto check if git is installed. This should print a version number like "git version 2.39.0".
Type
node -vto check if Node is installed. This should print a version number like "v24.13.0".
Type
pnpm --versionto check if pnpm is installed. This should print a version number like "10.29.2".
If you don't have pnpm installed:
npm install -g pnpm
# or
curl -fsSL https://get.pnpm.io/install.sh | shIf you use nvm, the project includes an .nvmrc file:
nvm use
# or install the recommended version
nvm installFork the repository first, if you're an external contributor.
You can clone the repository directly if you're a member of the Our Future Health GitHub organisation:
git clone https://github.com/ourfuturehealth/design-system-toolkit.gitOtherwise you'll have to clone your own fork:
git clone https://github.com/[Username]/design-system-toolkit.git design-system-toolkitReplace '[Username]' in the git clone command above with your own GitHub username.
We use pnpm to manage dependencies in this monorepo.
Navigate to the project directory and install all dependencies:
cd design-system-toolkit
pnpm installThis will install dependencies for all packages in the workspace.
The monorepo contains multiple packages. Choose the development workflow that matches what you're working on:
Build and serve the documentation website with hot reload:
pnpm dev:siteThe site will be available at http://localhost:8080.
Develop React components with Storybook:
pnpm storybookStorybook will be available at http://localhost:6006.
Work on the core design system (SCSS, vanilla JS):
pnpm dev:toolkitThis runs gulp watch to rebuild toolkit distribution files.
Test consuming the React components library:
pnpm dev:react-consumerThis runs both the library build watch and the consumer app dev server at http://localhost:5174.
Run all development servers concurrently:
pnpm devThis starts toolkit watch, site dev server, and Storybook simultaneously.
By default, build tools are configured to minimize log output and only show errors, warnings, and critical information. This keeps your development console clean and focused on what matters.
If you need detailed build information for debugging purposes, use the verbose variants:
From the root of the monorepo:
- Everything in verbose:
pnpm dev:verbose(runs toolkit, site, react-components, and Storybook in verbose mode) - Storybook only:
pnpm storybook:verbose - Individual packages:
pnpm dev:toolkit:verbosepnpm dev:site:verbosepnpm dev:react-components:verbosepnpm dev:react-consumer:verbose
Or run verbose mode directly in specific packages:
- Toolkit:
pnpm --filter=@ourfuturehealth/toolkit run watch:verbose - React Components:
pnpm --filter=@ourfuturehealth/react-components run watch:lib:verbose - React Consumer App:
pnpm --filter=@ourfuturehealth/example-react-consumer-app run watch:verbose - Site (Eleventy):
pnpm --filter=site run watch:eleventy:verbose - Site (Sass):
pnpm --filter=site run watch:css:verbose
These verbose modes will show:
- All file writes and transformations
- Detailed compilation steps
- Full webpack/vite/eleventy output
- Dependency resolution details
Use verbose mode when:
- Investigating build failures
- Debugging missing files or assets
- Troubleshooting watch mode issues
- Understanding the full build process
The monorepo contains:
packages/toolkit/- Core design system (SCSS, JS, templates)packages/react-components/- React component librarypackages/site/- Documentation website (Eleventy)packages/example-react-consumer-app/- Example React consumer app
See the main README for more details on the monorepo structure.
Related docs: