Contributing to Embetty
Thank you for your interest in contributing to Embetty! We welcome contributions from the community.
Development Setup
Embetty is a monorepo managed with pnpm. To get started, you'll need Node.js and pnpm installed.
-
Clone the repository:
git clone https://github.com/heiseonline/embetty.git cd embetty -
Install dependencies: This command will install dependencies for all packages in the workspace and link them together.
pnpm install
The workspace is defined in pnpm-workspace.yaml and includes packages in the libs/, tools/, embetty/, and embetty-server/ directories.
Common Scripts
You can run scripts from the root of the repository to affect all packages.
-
Build all packages:
pnpm build -
Run all tests:
pnpm test -
Lint all packages:
pnpm lint
Commit Conventions
This project follows the Conventional Commits specification. This is enforced through commitlint.
When you commit, a husky hook will trigger commitlint to validate your commit message format. Please format your commit messages like this:
feat: add support for mastodon embeds
This commit introduces a new component, embetty-mastodon, and the corresponding server-side logic to fetch status data.
Common types include feat, fix, docs, style, refactor, test, chore, build.
Submitting Changes
- Create a new branch for your feature or bugfix.
- Make your changes and commit them following the commit conventions.
- Ensure all tests and lint checks pass (
pnpm testandpnpm lint). - Push your branch to your fork and open a pull request against the
masterbranch. - Please follow the guidelines in the
PULL_REQUEST_TEMPLATE.mdwhen describing your changes.
Versioning and Releasing
This project uses Changesets to manage versioning and releases. When you contribute a change that should be included in the changelog, you'll need to add a changeset file.
After making your changes, run:
pnpm changeset
This will prompt you to select which packages have been changed, the bump type (major, minor, or patch), and a description of the change. This information will be used to automatically update package versions and changelogs during the release process.