Thank you for helping make AdminKit better. These guidelines keep changes easy to review.
Node 24 is required. The version is pinned in .nvmrc.
nvm use
npm ci
npm run devnpm run dev serves the app on http://localhost:5173 and reloads on changes. npm run build writes the production build to dist/ (gitignored); npm run preview serves it. npm ci also installs the git hooks described below.
- Branch from
mainusing a short prefixed name:feat/<topic>,fix/<topic>,docs/<topic>,chore/<topic> - Open the pull request against
main - CI must be green before a PR is merged: lint, build, test and commitlint run on every PR
- Include screenshots for visual changes, in light and dark mode
- Reference issues and pull requests liberally
Commit messages follow Conventional Commits: type(scope): subject.
- Allowed types come from
@commitlint/config-conventional:build,chore,ci,docs,feat,fix,perf,refactor,revert,style,test - Allowed scopes:
free,pro,docs,web,build,deps - Use the imperative mood in the subject ("Add feature" not "Added feature") and keep it under 100 characters
Examples:
feat(free): add the forms page
fix(free): keep the dropdown inside the viewport on mobile
chore(deps): upgrade vite to 8.3.5
lefthook enforces this locally. The commit-msg hook runs commitlint on your message and the pre-commit hook runs ESLint and Prettier on staged files. Run npm run lint to check the whole repo and npm run format to fix formatting.
Page, plugin and icon counts are generated, never typed: npm run stats updates src/data/stats.json and the README table, and npm run lint fails while either is stale. src/data/editions/pro.json is a snapshot of AdminKit PRO's counts that the maintainers refresh before a release.
A PR that changes behaviour adds a line under Unreleased in CHANGELOG.md. The file follows Keep a Changelog. Pure refactors, formatting and tooling changes that users never notice don't need an entry. Keep each line short, imperative and user-facing ("Add pricing page (/pages-pricing)", "Upgrade to React Router 8"); no explanations.