Thank you for your interest in contributing to JSFE! This document will guide you through the process of setting up the development environment and submitting your contributions.
Before you begin, ensure you have the following installed:
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/jsfe.git cd jsfe -
Launch the local CI to bootstrap the monorepo and to check that everything is OK on your machine:
./local-ci.sh
-
Create a new branch for your feature/fix:
git checkout -b feat/your-feature-name # or git checkout -b fix/your-fix-name -
Start the development tasks:
pnpm dev
-
Make your changes and ensure they follow our coding standards:
# Run linting pnpm lint # Fix linting issues pnpm lint:fix # Check formatting pnpm format:check # Fix formatting pnpm format
-
Run tests:
# Run unit tests pnpm test:unit # Run e2e tests pnpm test:e2e # Run tests in watch mode during development pnpm test:unit:dev pnpm test:e2e:dev
We follow Conventional Commits specification. Your commit messages should be structured as follows:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Types:
feat: A new featurefix: A bug fixdocs: Documentation only changesstyle: Changes that do not affect the meaning of the coderefactor: A code change that neither fixes a bug nor adds a featureperf: A code change that improves performancetest: Adding missing tests or correcting existing testsbuild: Changes that affect the build system or external dependenciesci: Changes to our CI configuration files and scriptschore: Changes to the build process or auxiliary tools
Examples:
git commit -m "feat(engine): add support for custom validators"
git commit -m "fix(webawesome): resolve styling issues in dark mode"
git commit -m "docs: update API documentation"
git commit -m "build: update typescript to 5.8.3"
git commit -m "ci: add node 21 to test matrix"-
Push your changes to your fork:
git push origin feat/your-feature-name
-
Go to the original repository on GitHub and create a Pull Request
-
In your PR description:
- Clearly describe the problem and solution
- Include the relevant issue number if applicable
- Include screenshots/GIFs for UI changes
-
Wait for the maintainers to review your PR. Make any requested changes.
packages/
├── engine/ # Core form engine
├── generics/ # Generic utilities, form HTML element and helpers
├── webawesome/ # Web components form implementation
├── ...
e2e/ # End-to-end tests
example-app/ # Example application
scripts/ # Build and utility scripts
If you need help or have questions:
- Check the documentation
- Open an issue with a clear title and description
- Be respectful and constructive in all interactions
Thank you for contributing to JSON Schema Form Element! 💖