Getting Started
Meteor is available under the MIT license. All contributions are made under the same MIT license. If you’ve never contributed to an open source project, the Open Source Guide is a great place to start.Ways to Contribute
There are many ways to contribute to Meteor:- Report bugs: Help us identify and fix issues
- Request features: Suggest new components or improvements
- Submit pull requests: Add features or fix bugs
- Improve documentation: Help make our docs better
- Share feedback: Let us know how we can improve
Before You Start
Before making larger changes to the codebase:- Check existing issues: Look through existing issues to avoid duplicates
- Open a discussion: For major changes, open an issue first to discuss your approach
- Read the code of conduct: Familiarize yourself with our code of conduct
Reporting Bugs
Found a bug? Here’s how to report it effectively:- Search first: Check existing issues to see if it’s already reported
- Use the issue template: Complete as much information as possible
- Provide reproduction: Include a link to a reproduction (e.g., StackBlitz)
- Include details:
- Steps to reproduce
- Expected behavior
- Actual behavior
- Browser and version
- Meteor version
Requesting Features
Have an idea for a new component or feature?- Search existing requests: Check if someone already requested it
- Upvote existing requests: If your idea exists, upvote it to show community interest
- Create a new request: If not, create a new issue
- Provide context:
- Use case and problem it solves
- Proposed solution
- Examples from other design systems
- Mockups or designs (if applicable)
Development Setup
Prerequisites
Make sure you have the following installed:- Node.js: Version 18 or higher
- pnpm: Package manager used by Meteor
Clone and Install
- Fork the repository: Click the “Fork” button on GitHub
- Clone your fork:
- Install dependencies:
Project Structure
Meteor is organized as a monorepo with multiple packages:Running Scripts
Meteor uses Turborepo for managing the monorepo. You have three ways to run scripts:1. Using Turbo (Recommended)
2. Using pnpm filter
3. From Package Directory
Development Workflow
Working on Components
- Start Storybook (for component development):
http://localhost:6006
-
Make your changes to components in
packages/component-library/src/components/ - Write tests for your changes
Working on Tokens
-
Edit token files in
packages/tokens/dictionaries/ - Generate CSS files:
- Preview changes in the component library
Local Development with Yalc
To test your changes in another project before publishing:- Install yalc:
- Publish to local store from the package directory:
- Link in your project:
- Remove when done:
Before Submitting a Pull Request
Run these checks to ensure your code meets our standards:1. Lint your code
2. Check types
3. Run tests
4. Create a changeset
Meteor uses changesets for changelog management:- Select packages: Choose which packages your changes affect
- Choose version bump:
major,minor, orpatchmajor: Breaking changesminor: New features (backwards compatible)patch: Bug fixes
- Write summary: Describe your changes clearly
.changeset/ that will be used to generate the changelog.
Creating a Pull Request
- Create a branch:
- Make your changes and commit them:
- Push to your fork:
- Open a pull request on GitHub:
- Provide a clear title and description
- Reference any related issues
- Include screenshots or videos for UI changes
- Ensure all checks pass
Pull Request Guidelines
- Keep it focused: One feature/fix per PR
- Write clear commit messages: Follow conventional commits
- Update documentation: Include relevant docs updates
- Add tests: Cover your changes with tests
- Include a changeset: Required for all changes
Release Process
The release process is automated:- When your PR is merged: A GitHub Action detects your changeset
- Release PR is created: Changesets creates a release PR automatically
- Maintainer merges release PR: This triggers the release
- Automated release: Changesets updates changelogs, bumps versions, and publishes to npm
Visual Tests
Meteor uses visual regression testing. To update visual test snapshots:- Go to the Actions tab on GitHub
- Click “Visual Tests” in the left sidebar
- Click “Run workflow”
- Select your branch from the dropdown
- Click “Run workflow” button
- Wait for completion and check for updated snapshots
Code Style
Meteor uses:- ESLint: For JavaScript/TypeScript linting
- Prettier: For code formatting
- Stylelint: For CSS/SCSS linting
Testing
Write tests for all new features and bug fixes:Component Guidelines
When creating new components:- Follow naming conventions: Use
mt-prefix (e.g.,mt-button) - Write stories: Add comprehensive Storybook stories
- Add tests: Include unit tests and interaction tests
- Document props: Use JSDoc comments for all props
- Support accessibility: Include ARIA attributes and keyboard navigation
- Use design tokens: Leverage the token system for styling
- Follow Vue best practices: Use Composition API and TypeScript
Getting Help
Need help? Here’s where to reach out:- GitHub Issues: For bugs and feature requests
- GitHub Discussions: For questions and general discussion
- Pull Request Comments: For questions about your specific PR
Recognition
Contributors are recognized in:- Release notes and changelogs
- GitHub contributors page
- Special thanks in documentation