Thanks for your interest in contributing to churchsuite-api! This guide covers everything you need to get started.
This project follows the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code.
- Node.js 18 or later
- npm
git clone https://github.com/Danomanic/churchsuite-api.git
cd churchsuite-api
npm install| Command | Description |
|---|---|
npm run lint |
Type-check with TypeScript (strict mode) |
npm test |
Run all tests |
npm run test:watch |
Run tests in watch mode |
npm run test:coverage |
Run tests with coverage report |
npm run build |
Build ESM + CJS + type declarations |
Create a feature branch from main:
git checkout -b feat/my-featureUse descriptive branch prefixes:
feat/-- new featuresfix/-- bug fixesdocs/-- documentation changesrefactor/-- code changes that don't fix bugs or add features
- TypeScript strict mode -- the project uses strict compiler settings, so all code must pass strict type checking
- No runtime dependencies -- this package ships with zero dependencies; keep it that way
- Follow existing patterns -- look at how similar modules are structured and match that style
- Keep changes focused -- one feature or fix per PR
- Every new module method needs a test
- Tests use Vitest with the
createMockFetchhelper fromtests/setup.ts - Test files mirror the source structure:
src/modules/calendar/events.ts->tests/modules/calendar/events.test.ts - Tests should verify: URL construction, HTTP method, headers, query params, request body, and response parsing
Before submitting a PR, make sure everything passes:
npm run lint && npm testCI will also run the full matrix (Node 18, 20, 22) on your PR.
- Fork the repo and create your branch from
main - Make your changes with tests
- Ensure
npm run lint && npm testpasses locally - Push your branch and open a PR against
main - Fill in the PR description with what changed and why
- Wait for CI checks to pass and a review
- Keep PRs small and focused
- Update type definitions if you change any API interfaces
- Add a line to CHANGELOG.md under the
Unreleasedsection - Squash merge is enforced -- your PR title becomes the commit message, so make it descriptive
Use the GitHub issue templates:
- Bug report -- for something that isn't working
- Feature request -- for new functionality
Open a discussion if you have questions about contributing.