# Contributing (/docs/contributing)





# Contributing to Ucoder Insights [#contributing-to-ucoder-insights]

We welcome contributions from the community! Whether you are a developer, data enthusiast, or tester, there are many ways to get involved and help improve the core functionality of Ucoder Insights.

<Callout type="warn" title="Contribution Scope" icon="<ShieldAlert className=&#x22;w-5 h-5&#x22; />">
  **Our NPM packages are fully open-source and available on <PreviewLink href="https://github.com/soumydip/ucoder_insight_core" title="Ucoder Insights Core" description="Ucoder Insights Core NPM Package"> GitHub </PreviewLink>.** However, please note that the &#x2A;*UI (Dashboard)** and **Documentation** repositories are currently closed-source and **not open to public contributions** at this time.
</Callout>

***

## How to Contribute [#how-to-contribute]

Since contributions are restricted to our core NPM packages, here is how you can help:

### Reporting Bugs and Issues [#reporting-bugs-and-issues]

If you find a bug in the SDK or core package, or have a feature request, please open an issue on our GitHub repository.

* Check existing issues to avoid duplicates.
* Provide a clear and descriptive title.
* Include steps to reproduce the bug or a detailed use-case for the feature.

***

## Standard Workflow [#standard-workflow]

We gladly accept Pull Requests (PRs) for bug fixes, performance improvements, and new core features. Follow these steps to submit your PR:

<Steps>
  <Step>
    ### Fork the repository [#fork-the-repository]

    Click the "Fork" button on the top right of the [Ucoder Insights Core Repository](https://github.com/soumydip/ucoder_insight_core).
  </Step>

  <Step>
    ### Clone your fork [#clone-your-fork]

    ```bash
    git clone https://github.com/soumydip/ucoder_insight_core
    ```
  </Step>

  <Step>
    ### Create a branch [#create-a-branch]

    Create a new branch for your feature or bugfix.

    ```bash
    git checkout -b feature/your-feature-name
    ```
  </Step>

  <Step>
    ### Make your changes [#make-your-changes]

    Keep your changes focused and write clean, readable code.
  </Step>

  <Step>
    ### Test your changes [#test-your-changes]

    Ensure that all existing tests pass and write new tests if necessary.
  </Step>

  <Step>
    ### Commit your changes [#commit-your-changes]

    Write clear and concise commit messages.

    ```bash
    git commit -m "feat: add awesome new tracker capability"
    ```
  </Step>

  <Step>
    ### Push to your fork `bash git push origin feature/your-feature-name ` [#push-to-your-fork-bash-git-push-origin-featureyour-feature-name-]
  </Step>

  <Step>
    ### Open a Pull Request [#open-a-pull-request]

    Go to the original repository and open a PR against the `main` branch. Provide a detailed description of your changes.
  </Step>
</Steps>

***

## Development Guidelines [#development-guidelines]

To ensure code quality and consistency across the `ucoder_insight_core` package, please adhere to the following guidelines:

* **TypeScript First:** All new code should be written in TypeScript with proper type definitions.
* **Linting and Formatting:** Run our configured linters (e.g., ESLint, Prettier) before submitting a PR to maintain code style.
* **Keep it Lightweight:** As an analytics SDK, performance and bundle size are critical. Avoid adding heavy external dependencies unless absolutely necessary. Also ensure that the bundle size remains under 10KB (Gzip & Minified) to maintain optimal performance for users.
* **Testing:** Write unit tests for new features and bug fixes. Use Jest or the testing framework specified in the repository.
* **Documentation:** Update the README and any relevant documentation to reflect your changes. Clear documentation is essential for users and future contributors.
* **Code Reviews:** Be open to feedback and willing to make changes based on code review comments. Constructive criticism helps improve the overall quality of the project.
* **Security:** Avoid introducing security vulnerabilities. Follow best practices for secure coding, especially when handling user data or network requests.
* **Commit Messages:** Use conventional commit messages (e.g., `feat:`, `fix:`, `docs:`) to clearly indicate the purpose of each commit.
* **Branch Naming:** Use descriptive branch names that reflect the purpose of the branch (e.g., `feature/new-tracker`, `bugfix/fix-event-logging`).
* **Stay Updated:** Regularly pull changes from the main repository to keep your fork up-to-date and avoid merge conflicts.

***

Contribute Ucoder Insights Today! [https://github.com/soumydip/ucoder\_insight\_core](https://github.com/soumydip/ucoder_insight_core)

## Need Help? [#need-help]

If you have questions about contributing or need help setting up the project locally, feel free to reach out:

* Open a discussion in the GitHub repository.
* Contact our support team at &#x2A;*[support@ucoder.in](mailto:support@ucoder.in)**.

Thank you for helping make Ucoder Insights better!
