Thank you for your interest in contributing to the ImageKit Editor! We welcome contributions from the community and are grateful for your support.
- Getting Started
- Development Setup
- Project Structure
- Making Changes
- Testing
- Submitting Changes
- Coding Standards
- Commit Message Guidelines
- Issue Guidelines
- Pull Request Guidelines
- Fork the repository on GitHub
- Clone your fork locally
- Set up the development environment
- Create a new branch for your changes
- Make your changes
- Test your changes
- Submit a pull request
- Node.js (version 20, for development)
- Yarn package manager
- Git
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/imagekit-editor.git
cd imagekit-editor- Install dependencies:
yarn install- Start the development server:
yarn dev- Build the project:
yarn build- Generate a tarball for testing (optional):
yarn packageThis builds the project and creates a .tgz file in the builds/ directory that you can use to test the package locally in other projects before publishing.
imagekit-editor/
├── packages/
│ ├── imagekit-editor/ # Published package
│ │ ├── dist/ # Built files
│ │ └── package.json
│ └── imagekit-editor-dev/ # Development package
│ ├── src/ # Source code
│ │ ├── components/ # React components
│ │ ├── hooks/ # Custom hooks
│ │ ├── schema/ # Validation schemas
│ │ ├── utils/ # Utility functions
│ │ ├── ImageKitEditor.tsx
│ │ ├── index.tsx
│ │ └── store.ts # State management
│ ├── package.json
│ ├── tsconfig.json
│ └── vite.config.ts
├── README.md
├── CONTRIBUTING.md
└── package.json
- Check if there's already an issue for what you want to work on
- If not, create an issue to discuss your proposed changes
- Wait for feedback from maintainers before starting work on large changes
- Create a new branch from
main:
git checkout -b feature/your-feature-name-
Make your changes in the
packages/imagekit-editor-dev/srcdirectory -
Test your changes:
yarn dev # Start development server
yarn build # Build the project-
Commit your changes following our commit message guidelines
-
Push your branch and create a pull request
Currently, the project uses manual testing through the development server. When contributing:
- Test your changes thoroughly in the development environment
- Verify that the build process completes successfully
- Test with different image types and transformations
- Ensure TypeScript compilation passes without errors
- Update the README.md if your changes affect the public API
- Ensure your code follows the project's coding standards
- Write clear, descriptive commit messages
- Include a detailed description of your changes in the PR
- Link any related issues in your PR description
When creating a pull request, please include:
- Description: What changes does this PR introduce?
- Motivation: Why are these changes needed?
- Testing: How have you tested these changes?
- Screenshots: If applicable, include screenshots of UI changes
- Breaking Changes: List any breaking changes
- Related Issues: Link to related issues
- Use TypeScript for all new code
- Provide proper type definitions
- Avoid using
anytype - Use interfaces for object shapes
- Export types that might be useful for consumers
- Use functional components with hooks
- Follow React best practices
- Use proper prop types and interfaces
- Implement proper error boundaries where needed
- Use 2 spaces for indentation
- Use semicolons
- Use double quotes for strings
- Use trailing commas in objects and arrays
- Follow ESLint and Prettier configurations
We follow conventional commit format:
<type>: <description>
[optional body]
[optional footer]
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
feat: add new transformation type for image rotation
fix: resolve issue with signed URL generation
docs: update API documentation for signer function
refactor: improve component structure for better maintainability
When reporting bugs, please include:
- Clear description of the issue
- Steps to reproduce
- Expected behavior
- Actual behavior
- Browser and version information
- Screenshots or error messages if applicable
When requesting features, please include:
- Clear description of the feature
- Use case and motivation
- Proposed implementation (if you have ideas)
- Any related issues or discussions
- Code follows the project's coding standards
- Changes have been tested thoroughly
- Documentation has been updated if needed
- Commit messages follow the conventional format
- No breaking changes without discussion
- TypeScript compilation passes
- Build process completes successfully
- Maintainers will review your PR
- Address any feedback or requested changes
- Once approved, your PR will be merged
- Your changes will be included in the next release
If you need help or have questions:
- Check existing issues and discussions
- Create a new issue for bugs or feature requests
- Reach out to maintainers via email: developer@imagekit.io
- Join our community forum: community.imagekit.io
Contributors will be recognized in our release notes and documentation. Thank you for helping make ImageKit Editor better!
By contributing to this project, you agree that your contributions will be licensed under the same MIT License that covers the project.