# EasyCLA Development Components

Following are the third-party services, backend components and frontend consoles used in the development of the EasyCLA tool.

### Third-party Services <a href="#third-party-services" id="third-party-services"></a>

Besides integration with the LFX platform and its underlying services, EasyCLA uses the following third party services:

* ​[Docusign](https://www.docusign.com) for the CLA agreement e-sign flow
* ​[Docraptor](https://docraptor.com) for converting CLA templates from HTML to PDF
* ​[GitHub](https://github.com) for GitHub PR CLA authorization checking/gating
* Gerrit for CLA authorization review checking/gating
* Auth0 For Single Sign On
* Salesforce through the LFX Platform APIs
* <200b>[GitLab](https://gitlab.com) for GitLab merge request CLA authorization checking and gating. In the current EasyCLA workflow, project managers connect a GitLab group from Project Control Center (PCC), open the GitLab installation/authorization URL, authorize the application, and then return to PCC to complete the setup. EasyCLA then manages the GitLab integration through GitLab APIs and webhooks.

### EasyCLA Backend <a href="#cla-backend" id="cla-backend"></a>

The EasyCLA tool has two backend components.

* V1 - Some older APIs are implemented in Golang and can be found in the [cla-backend-legacy](https://github.com/linuxfoundation/easycla/tree/main/cla-backend-legacy) directory. Internally they are v1 and v2 APIs.
* V2 - Most of the backend development is implemented in Golang, and can be found in the [cla-backend-go](https://github.com/linuxfoundation/easycla/tree/main/cla-backend-go) directory. Internally they are v3 and v4 APIs. In particular, this backend contains APIs powering most of the APIs which integrate with the LFX Platform (including Salesforce data), and the LFX platform permissions model.

### EasyCLA Frontend or Consoles <a href="#easycla-frontend-or-consoles" id="easycla-frontend-or-consoles"></a>

EasyCLA v2 uses multiple web applications that are maintained in separate repositories and monorepos rather than a single Ionic codebase:

* <200b>[EasyCLA Project Console](https://projectadmin.lfx.linuxfoundation.org) for a project's director or manager (typically an LF staff member) to oversee the project's CLA setup. This experience is delivered through the LFX Project Control Center (PCC).
* <200b>[EasyCLA Contributor Console](https://github.com/linuxfoundation/easycla-contributor-console) for a contributor to a project to sign an Individual CLA (ICLA), or to kick off the corporate CLA (CCLA) signature process. This is a standalone Angular application.
* <200b>[EasyCLA Corporate Console](https://organization.lfx.linuxfoundation.org) for a company's CLA Manager to coordinate the corporate CLA signature process, and then to manage their company's authorized contributors. This experience is delivered by the LFX Corporate CLA Console application.

### License <a href="#license" id="license"></a>

This project’s source code is licensed under the MIT License. A copy of the license is available in [LICENSE](https://github.com/linuxfoundation/easycla/blob/main/LICENSE). The project includes source code from `keycloak`, which is licensed under the Apache License, version 2.0 (Apache-2.0), a copy of which is available in [LICENSE-keycloak](https://github.com/linuxfoundation/easycla/blob/main/LICENSE-keycloak). This project’s documentation is licensed under the Creative Commons Attribution 4.0 International License (CC-BY-4.0). A copy of the license is available in [LICENSE-docs](https://github.com/linuxfoundation/easycla/blob/main/LICENSE-docs).

## EasyCLA Architecture <a href="#easycla-architecture" id="easycla-architecture"></a>

The following diagram illustrates EasyCLA architecture:

![EasyCLA Architecture Overview](https://files.gitbook.com/v0/b/gitbook-legacy-files/o/assets%2F-M2DCN9UgoRgMEkgnLyP%2F-MOb5j37wjwk61u_ukKN%2F-MObHlodbcm0W1MV1whk%2Feasycla-architecture-overview.png?alt=media\&token=b6733d43-464d-4e42-b896-3ceccde87f42)

## EasyCLA Release Process <a href="#easycla-release-process" id="easycla-release-process"></a>

The following diagram illustrates the EasyCLA release process:

![EasyCLA Release Process](https://files.gitbook.com/v0/b/gitbook-legacy-files/o/assets%2F-M2DCN9UgoRgMEkgnLyP%2F-M6cYV0z4DSsvgtt1MtI%2F-M6c_728flGfhAMw3L5V%2Feasycla-software-development-and-release_process.png?alt=media\&token=460da65a-6214-4139-aebe-aa85db69a26f)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.linuxfoundation.org/lfx/easycla/v2-current/getting-started/easycla-development-components.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
