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 test
andpnpm lint
). - Push your branch to your fork and open a pull request against the
master
branch. - Please follow the guidelines in the
PULL_REQUEST_TEMPLATE.md
when 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.