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.
This project uses GitHub Flow, so all changes happen through pull requests:
- Fork the repo and create your branch from
main
. - If you've added code that should be tested, add tests.
- If you've changed APIs, update the documentation.
- Ensure the test suite passes.
- Submit that pull request!
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 |
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.
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 CHANGELOG.md
- The
"version"
field in package.json- Git tags
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.
All contributors are required to adhere to the code of conduct in all interactions with this project.
All code contributions from non-owner contributors shall be made using the MIT license.