Contributing
Fork, develop, verify, and submit changes to the library or docs.
Contributions can improve behavior, types, tests, translations, examples, or documentation.
Choose a repository
| Change | Repository |
|---|---|
| Components, API, types, inference, form behavior | erlangform |
| Documentation, translations, demos, navigation, or website styling | erlangform_docs |
If you do not have write access, fork the repository first. Collaborators can create a branch in the main repository. Avoid working directly on its default branch.
Clone and create a branch
git clone https://github.com/USERNAME/erlangform.git
cd erlangform
git remote add upstream https://github.com/erlanggaht/erlangform.git
git switch -c fix/describe-your-changeReplace USERNAME with your GitHub username. For documentation, use erlangform_docs for the clone, folder, and upstream URLs. origin points to your fork; upstream points to the main repository.
Install and run
Library: use Node.js 22 and pnpm 10.19.0.
pnpm install
pnpm dev
pnpm checkcheck runs typecheck, lint, build, and runtime tests. You can also run each check individually.
Documentation:
npm install
npm run fumadocs-dev
npm run lint
npm run fumadocs-buildCheck previews, copyable source, language switching, translated search, internal links, sidebar, mobile layout, and light/dark themes.
Submit a pull request
git add .
git commit -m "fix: describe the change"
git push -u origin fix/describe-your-changeOpen Compare & pull request on GitHub and target the main repository. Explain the problem, final change, validation, related issue, and screenshots for visual changes.
Keep your fork current
git fetch upstream
git switch main
git merge upstream/main
git push origin mainUse the actual default branch name if it is not main.
Documentation guidelines
- Use English in unsuffixed files and Indonesian in .id.mdx files; keep slugs aligned.
- Add each page to both meta.json and meta.id.json navigation.
- Put previews in components and mount them on both translated feature pages.
- Include actual demo source through DemoSource; documentation helpers are not library exports.
- Use z.infer and typed ErlForm/FieldConfig when needed.
- Keep internal links in the current language, and add redirects when moving pages.
- Keep changes focused and document actual renderer behavior, including limitations.
To report a problem without writing code, see Report a bug.