Skip to content

Latest commit

 

History

History
196 lines (141 loc) · 7.47 KB

CONTRIBUTING.md

File metadata and controls

196 lines (141 loc) · 7.47 KB

Contributing to crowd.dev

Contributions are what make the open-source community such an amazing place to learn, inspire, and create.

Ways to contribute

  • Try the crowd.dev platform & API and give feedback by creating new issues.
  • Help with open issues.
  • Add a new integration following our framework.
  • Help create tutorials and blog posts.
  • Improve documentation by fixing incomplete or missing docs, bad wording, examples, or explanations.

Any contributions you make are greatly appreciated. ❤️

Issue priorities

Type of Issue Priority
Bug in Critical Features (Login, Integrations, etc)
Bug in Core Features (Home, Members, Organizations, Activities)
Confusing UX (but it's working)
Minor improvements

How to contribute to development

We welcome any contribution to crowd.dev. Before you start with your first issue, please consider the following points:

Requirements

  • Node v16.16.0
  • Docker and docker-compose

Setup the project

The project is a monorepo, meaning that it is a collection of multiple packages managed in the same repository. In the following steps, you'll learn how to get the project up and running for development purposes.

  1. Get the mono repo from GitHub
git clone git@github.com:CrowdDotDev/crowd.dev.git
  1. Run the start script:
cd scripts
./cli start

For hot reloading, you can run:

cd scripts
./cli clean-start-dev

The app will be available at http://localhost:8081

For more information on development, you can check our docs.

Running services individually

To optimize resource usage during development, we would suggest starting only the necessary services and leveraging hot reloading where applicable.

  1. Start the scaffold service, including the necessary components like the database, etc:
./cli scaffold up

This will set up the foundational services required for the project.

  1. If you are primarily working on the frontend but also need the API without hot reloading:
DEV=1 ./cli service frontend up
./cli service api up

By selectively starting the frontend and API services without enabling hot reloading, helps reduce resource usage.

Feel free to adjust the commands based on the specific services you need for your development tasks.

Coding guidelines

To ensure consistency throughout the source code, please keep these rules in mind as you are working:

  • All features or bug fixes must be tested by one or more specs (unit tests).
  • Backend and services use oxlint (pnpm lint) and oxfmt (pnpm format / pnpm format-check) from the repo root. Frontend still uses ESLint.
  • In-code documentation is required for every function or class that is not self-evident.
  • All new API endpoints that are relevant to the public API must have in-code documentation to generate OpenAPI specifications.
  • The pipeline must pass.
Commit Message Guidelines

This project uses Conventional Commits enforced by commitlint.

Documentation:

Enforcement: Commitlint runs automatically via Husky on every commit. Invalid commit messages will be rejected.

Pull Request Guidelines

PR Title Requirements:

  • Must follow conventional commit format: type(scope): description
  • Description starts lowercase and has no trailing period: feat: add new feature

PR Process:

  1. Ensure your commits follow the conventional commit format
  2. Provide clear description of changes, linking the tracking issue (Closes linuxfoundation/lfx-cdp-insights-ops#123 or Refs linuxfoundation/lfx-cdp-insights-ops#123)
  3. Ensure all tests pass
  4. Request review from a member of the team
Issue Tracking

Work is tracked as GitHub issues in linuxfoundation/lfx-cdp-insights-ops (private) and on the LFX CDP and Insights board.

  • Branches: type/issue-<issue-number>-short-description (e.g. feat/issue-123-github-discussions)
  • Commits: reference the issue in the body as Refs linuxfoundation/lfx-cdp-insights-ops#123
  • PR titles: no issue reference
  • PR descriptions: Closes linuxfoundation/lfx-cdp-insights-ops#123 when the PR completes the issue, Refs … otherwise

Always use the fully-qualified org/repo#123 form — a bare #123 resolves against this repository.

AI Development Guidelines

Leveraging AI Tools: The Linux Foundation provides guidelines and best practices for using AI in development workflows.

Documentation:

Best Practices:

  • Follow LFX guidelines when using AI tools for code generation
  • Ensure AI-generated code meets our quality standards
  • Review and test all AI-assisted contributions thoroughly

Need help? 🛟

If you need help with any sort of contribution, please feel free to reach out on Discord or book a contributor onboarding call.