Read the README before getting started.
Before opening a PR, search existing issues and pull requests for anything related.
- The development branch is
main. - All pull requests should be opened against
main.
-
Clone the repository:
gh repo clone raphaelsalaja/calligraph
-
Create a new branch:
git checkout -b my-branch
-
Install dependencies:
pnpm install
-
Start developing:
pnpm dev
This starts Turborepo in watch mode — the library rebuilds on changes and the demo site hot-reloads.
-
When your changes are finished, commit them:
git add . git commit -m "feat: describe your changes"
-
Open a pull request:
gh pr create
| Path | Description |
|---|---|
packages/calligraph/ |
The library package |
apps/web/ |
Next.js demo site |
The library is intentionally a single-file package — packages/calligraph/src/index.tsx. Keep it that way unless there is a strong reason to split.
This project uses Biome for linting and formatting.
pnpm lintLinting runs automatically on pre-commit via Husky. CI will also catch anything that slips through.
We recommend installing the Biome extension for VS Code.
Commits must follow the Conventional Commits specification, enforced by commitlint. Examples:
feat: add duration prop
fix: correct LCS alignment for repeated characters
docs: update usage examples
chore: bump motion to v12.1
We use Changesets to manage versioning and changelogs.
If your PR changes the public API or fixes a bug, add a changeset:
pnpm changesetFollow the prompts to describe your change and select a semver bump. The generated markdown file should be committed with your PR.
If your change is internal (CI, docs, dev tooling), you do not need a changeset.
- Keep PRs focused — one feature or fix per PR.
- Link related issues in the description.
- Make sure
pnpm lintandpnpm buildpass before requesting review. - Add a changeset if applicable.