Contributing
March 3, 2026 ยท View on GitHub
We welcome contributions to Tyler Forge! Whether it's bug fixes, new features, or documentation improvements, we appreciate your help.
Repository Overview
Tyler Forge is a monorepo managed with pnpm workspaces and Turbo.
| Package | Description |
|---|---|
| @tylertech/forge | Web components library |
| @tylertech/forge-core | Core utilities and base classes |
Requirements
- Node.js 22.12+
- pnpm 10+
Setup
git clone https://github.com/tyler-technologies-oss/forge.git
cd forge
pnpm install
pnpm dev:forge
Commands
| Command | Description |
|---|---|
pnpm dev:forge | Start dev server |
pnpm storybook:forge | Start Storybook |
pnpm build | Build all packages |
pnpm test | Run tests |
pnpm lint | Lint code (ESLint + Stylelint) |
pnpm format | Format code (Prettier) |
Running commands for a specific package:
pnpm run --filter @tylertech/forge <command>
pnpm run --filter @tylertech/forge-core <command>
Running tests for a specific path (relative to the package root):
pnpm run --filter @tylertech/forge test src/lib/button/
pnpm run --filter @tylertech/forge test dialog
Development Workflow
- Testing: Vitest in browser mode with Playwright. Run
pnpm testto execute all tests. - Linting: ESLint for TypeScript/JavaScript, Stylelint for SCSS. Configs are in the root and package directories.
- Formatting: Prettier with config in
.prettierrc. Runpnpm formatto auto-format.
Pull Requests
- Open an issue first to discuss your proposed change
- Fork the repo and create a feature branch
- Make your changes with tests as needed
- Run
pnpm changesetto create a changeset (see Versioning) - Validate locally:
pnpm build && pnpm test && pnpm lint - Submit your PR
Versioning & Releases
This project uses Changesets for versioning and changelog generation.
For contributors:
When submitting a PR that changes published packages, create a changeset:
pnpm changeset
Follow the prompts to:
- Select affected packages
- Choose the semver bump type:
patch- Bug fixes, minor tweaksminor- New features, non-breaking changesmajor- Breaking changes
- Write a description of your change
Release process:
Releases are automated via GitHub Actions. When PRs with changesets are merged to main:
- A "Version Bump" PR is automatically created
- When merged, packages are published to npm
- Changelogs are updated automatically
Commit Guidelines
Use Conventional Commits format (enforced by commitlint).
<type>(<scope>): <description>
Examples:
feat(button): add loading statefix(dialog): correct focus trap behaviordocs: update READMEchore: update dependencies
Common types: feat, fix, docs, chore, refactor, test, perf
Reporting Issues
- Bugs: Create an issue with reproduction steps
- Feature requests: Open an issue to discuss first. New features go through a governance process to ensure alignment with the library's vision.
- Questions: Use GitHub Discussions
License
Tyler Forge is licensed under the Apache 2.0 License.