Thank you for your interest in contributing to Object UI! This document provides guidelines and instructions for contributing.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/object-ui.git - Install dependencies:
pnpm install - Create a new branch:
git checkout -b feature/your-feature-name
# Run all tests
pnpm test
# Run tests in watch mode
pnpm test:watch
# Run tests with UI
pnpm test:ui
# Generate coverage report
pnpm test:coverage# Build all packages
pnpm build
# Build specific package
cd packages/core && pnpm build# Lint all packages
pnpm lintAll tests should be placed in __tests__ directories within the source code. We use Vitest and React Testing Library.
Example test structure:
import { describe, it, expect } from 'vitest';
import { render, screen } from '@testing-library/react';
describe('ComponentName', () => {
it('should render correctly', () => {
render(<ComponentName />);
expect(screen.getByText('Expected Text')).toBeInTheDocument();
});
});We follow conventional commit messages:
feat:- New featuresfix:- Bug fixesdocs:- Documentation changestest:- Adding or updating testschore:- Maintenance tasksrefactor:- Code refactoring
Example: feat: add new button variant
- Ensure all tests pass:
pnpm test - Ensure the build succeeds:
pnpm build - Update documentation if needed
- Create a pull request with a clear description of changes
- Link any relevant issues
- Follow existing code style in the project
- Use TypeScript for type safety
- Write meaningful variable and function names
- Add comments for complex logic
- Keep functions small and focused
If you need to add a new package to the monorepo:
- Create a new directory under
packages/ - Add a
package.jsonwith proper workspace dependencies - Update the main README if the package is user-facing
- Add tests for the new package
If you have questions, feel free to:
- Open an issue with the
questionlabel - Start a discussion in GitHub Discussions
- Reach out to the maintainers
By contributing, you agree that your contributions will be licensed under the MIT License.