Skip to content

Latest commit

 

History

History
80 lines (60 loc) · 5.73 KB

CONTRIBUTING.md

File metadata and controls

80 lines (60 loc) · 5.73 KB

How to Contribute

First, thank you for your input!

Before you begin, please check existing GitHub Issues and Pull Requests to see if your idea is already in the pipeline. If not, consider creating an issue, or sending an email to [email protected] before submitting your change.

Getting Started

This project uses GitHub Flow, so all changes happen through pull requests:

  1. Fork the repo and create your branch from main.
  2. If you've added code that should be tested, add tests.
  3. If you've changed APIs, update the documentation.
  4. Ensure the test suite passes.
  5. Submit that pull request!

Project Layout

Dir Purpose
.github/ GitHub Actions workflows and other GitHub-related files
schemas/ API schemas (OpenAPI)
src/ Source code
src/index.ts The server startup entrypoint
src/httpServer.ts The NodeJS http.Server instance
src/apolloServer.ts The ApolloServer instance
src/expressApp.ts The Express app instance
src/controllers/ API request/response handlers
src/events/ NodeJS event emitter and handlers
src/graphql/ GraphQL typedefs and resolvers
src/lib/ Third-party clients and internal cache
src/middleware/ Middleware functions
src/models/ Data-defining classes which encapsulate db CRUD operations
src/routes/ Express routers for REST path-based routes
src/server/ Server init logic and process event handlers
src/services/ Business-logic handlers
src/tests/ End-to-end tests and the Vitest setup file
src/types/ Global type definitions and codegen'd types
src/utils/ Utility functions

Commit Messages

Contributions to this project must use Conventional Commits for commit messages, as they are an integral part of this project's CI/CD automation. Commit messages are parsed by Semantic Release, integrated into the changelog, and included in the release notes.

Release Process

This project uses Semantic Release to automate the following components of the release process:

  • GitHub releases are automatically created based on the commit history since the last release.
  • The changelog is updated automatically based on the commit history since the last release.
  • Git tags and the "version" specified in the package.json are automatically updated based on the commit history since the last release.

Do not touch (please): 👉👈🚫

The robot minions work hard to manage these - please don't upset them 🤖

Once tests are passing on your pull request, and it has been approved by a maintainer, it will be merged into the next branch, which will trigger a versioned pre-release. After final review and approval of the pre-release build, a maintainer will merge next into main, which will trigger a release build.

Code of Conduct

All contributors are required to adhere to the code of conduct in all interactions with this project.

License

All code contributions from non-owner contributors shall be made using the MIT license.