👋 Thank you for your interest in contributing to Nylas Web! We're excited to have you as part of our open source community.
This repository contains modern, developer-friendly JavaScript/TypeScript packages for integrating with the Nylas platform. Your contributions help make email, calendar, and contacts integration easier for developers everywhere.
- Code of Conduct
- Getting Started
- Development Setup
- How to Contribute
- Pull Request Process
- Testing
- Style Guide
- Getting Help
This project adheres to a code of conduct that promotes a welcoming and inclusive environment. By participating, you are expected to uphold these standards. Please report unacceptable behavior to the project maintainers.
- Node.js: Version 22 or higher
- pnpm: We use pnpm for package management
- Git: For version control
-
Fork and clone the repository
git clone https://github.com/YOUR_USERNAME/web.git cd web -
Install dependencies
pnpm install
-
Build all packages
pnpm build
-
Run tests to ensure everything is working
pnpm test
This is a monorepo containing multiple packages:
packages/nylas-connect/- Modern OAuth connection library for Nylas APIs- More packages coming soon!
Each package is independently versioned and published to npm.
Found a bug? Help us fix it!
- Search existing issues first to avoid duplicates
- Create a new issue using our bug report template
- Include:
- Clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
- Environment details (Node version, browser, etc.)
- Code samples if applicable
Have an idea for improvement?
- Check existing feature requests to see if it's already been suggested
- Create a feature request with:
- Clear description of the feature
- Use case and benefits
- Possible implementation approach (if you have ideas)
We welcome code contributions! Here's how to get started:
- Feel free to submit a PR directly
- Reference the issue number in your PR description
- Please open an issue first to discuss the feature
- This helps ensure alignment with project goals
- Avoids duplicate work
-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
- Write clean, well-documented code
- Follow our style guide
- Add tests for new functionality
-
Test your changes
pnpm test pnpm lint -
Commit your changes
git add . git commit -m "feat: add amazing new feature"
-
Push and create a PR
git push origin feature/your-feature-name
- Tests pass locally (
pnpm test) - Code follows our style guide (
pnpm lint) - Changes are documented (JSDoc, README updates, etc.)
- Commit messages follow conventional commit format
-
Clear title and description
- Explain what changes you made and why
- Reference any related issues
-
License confirmation
- All external contributors must include this text in the PR description:
"I confirm that this contribution is made under the terms of the MIT license and that I have the authority necessary to make this contribution on behalf of its copyright owner."
-
Maintain test coverage
- New features require tests
- Bug fixes should include regression tests
- Maintainers will review your PR as soon as possible
- We may request changes or ask questions
- Once approved, a maintainer will merge your PR
We use Vitest for testing. Our test philosophy:
- Unit tests for individual functions and components
- Integration tests for complex workflows
- High coverage to ensure reliability
# Run all tests
pnpm test
# Run tests in watch mode
pnpm test:watch
# Run tests for specific package
pnpm --filter @nylas/connect test- Place test files next to the code they test (
.test.tssuffix) - Use descriptive test names
- Test both happy paths and error cases
- Mock external dependencies appropriately
- ESM only - No CommonJS support
- TypeScript - Strongly typed code
- Modern JavaScript - Use latest ES features
- Functional programming - Prefer pure functions when possible
We use automated formatting tools:
# Format code
pnpm format
# Check formatting
pnpm format:checkWe follow Conventional Commits:
type(scope): description
feat(connect): add popup authentication flow
fix(connect): resolve token refresh issue
docs(readme): update installation instructions
Types: feat, fix, docs, style, refactor, test, chore
- General questions: GitHub Discussions
- Bug reports: GitHub Issues
- Feature requests: GitHub Issues
- Developer documentation: developer.nylas.com
- Community forum: discuss.nylas.com
- Support email: support@nylas.com
Contributors are recognized in our CONTRIBUTORS.md file and release notes. Thank you for helping make Nylas Web better!
This project is licensed under the MIT License. See LICENSE for details.