# Pre-requisites

## Before You Start

To develop or customise services on the DIGIT (CMS) platform, both technical and non-technical prerequisites must be fulfilled.

***

#### ✅ **Minimum Recommended Machine Configuration (for Local Setup)**

**🖥️ Operating System**

* **Ubuntu 22.04+**, or
* **Windows 10/11 Pro (64-bit)** (WSL2 preferred if running Linux-based tools), or
* **macOS 12+** (Monterey or later)

**⚙️ Hardware Requirements**

| Component   | Minimum         | Recommended (Ideal)      |
| ----------- | --------------- | ------------------------ |
| **CPU**     | 4 cores         | 8 cores or higher        |
| **RAM**     | 16 GB           | 32 GB or higher          |
| **Disk**    | 256 GB SSD      | 512 GB NVMe SSD          |
| **Network** | Stable Internet | 100 Mbps+ for EKS access |

***

## Technical Prerequisites

Ensure you have a working knowledge of:

* Java / J2EE
* Spring Boot Framework
* REST APIs (Path params, headers, JSON, etc.)
* Git version control system
* PostgreSQL database
* Kafka (Messaging Queue)

#### Required Services (Should be running or configured with remote URLs):

* User Service
* MDMS (Master Data Management System)
* Persister
* Location Service
* Localization Service
* Id-Gen Service
* Billing Service
* URL Shortener Service

***

## Non-Technical Prerequisites

#### &#x20;Docker Registry Setup

A container registry (DockerHub, AWS ECR, GitHub Packages, etc.) should be configured to store and deploy Docker images.

#### &#x20;CI/CD Pipeline Setup

Setup Instructions:[ Jenkins Setup for DIGIT](https://core.digit.org/guides/installation-guide/infrastructure-setup/ci-cd-set-up)

***

## Tools Installation Checklist

To setup the DIGIT development environment -

1. Run Kafka and PostgreSQL on the development machine and reuse other services from the DIGIT development environment. The following tools are required for development:

   * **Install Git**

     [Git for Windows](https://git-scm.com/download/win)

     [Git for Linux](https://www.digitalocean.com/community/tutorials/how-to-install-git-on-ubuntu-18-04-quickstart)
   * **Install JDK17**

     [JDK17 for Windows](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)

     [JDK17 for Linux](https://javahelps.com/install-oracle-jdk-17-on-linux)
   * **Install IDE** - To create SpringBoot/Java applications, it is recommended to use the IntelliJ IDE. IntelliJ can be downloaded from the following links -

     [IntelliJ for Windows](https://www.jetbrains.com/idea/download/#section=windows)

     [IntelliJ for Linux](https://www.jetbrains.com/idea/download/#section=linux)
   * Install the Lombok plugins for IntelliJ, as we use Lombok annotations in this module.
   * **Install Kafka** (version 3.2.0, which is the latest version) - To install and run Kafka locally, follow the following links -

     [Kafka for Windows](https://dzone.com/articles/running-apache-kafka-on-windows-os)

     [Kafka for Linux](https://tecadmin.net/install-apache-kafka-ubuntu/)
   * **Install Postman** - To install Postman, follow the following links -

     [Postman for Windows](https://www.postman.com/downloads/)

     [Postman for Linux](https://dl.pstmn.io/download/latest/linux64)
   * **Install Kubectl** - Kubectl is the tool that we use to interact with services deployed on our sandbox environment - [kubectl for Windows](https://core.digit.org/guides/operations-guide/working-with-kubernetes/installation-of-kubectl)

   &#x20;     <https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/>

   * **Install aws-iam-authenticator** - (if the DIGIT development environment is in AWS) - <https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html>
   * **Install PostgreSQL v14 locally**

2. **Add configuration** - Post installation of Kubectl, add the following configuration in the Kubernetes config file to enable access to resources in our sandbox environment. The Kubernetes config file is available in the user's home directory (which varies from OS to OS).

   For example, on a Mac, it is available at:`/Users/xyz/.kube/config`

   Once the config file is created, add the following content to it.

```
Note: Replace the placeholder keys and tokens in the snippet below with your AWS-specific keys. Contact your system administrator for help with this.
```

***

## Kubernetes Access Configuration (kubectl)

Post kubectl installation, you must configure access to the Kubernetes cluster. Below is a sample configuration (typically placed in \~/.kube/config):

```
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJd01EVXhNekV6TlRReE5sb1hEVE13TURVeE1URXpOVFF4Tmxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTkJyClN6aHJjdDNORE1VZVF5TENTYWhwbEgyajJ1bkdYSWk1QThJZjF6OTgwNEZpSjZ6OS9qUHVpY3FjaTB1VURJQnUKS3hjdVFJRkozMG1MRWg3RGNiQlh2dDRnUlppZWtlZzVZNGxDT2NlTWZFZkFHY01KdDE1RVVCUFVzdlYyclRMcQp6a0ovRzVRUUFXMmhwREJLaFBoblZJTktYN1YzOU9tMUtuTklTbllPWERsZ1g3dW9Wa3I1OFhzREFHWEVsdC9uClpyc3laM2pkMWplWS8rMXlQQzlxbkorT0QwZlRQVGdCV1hMQlFwMHZKdHVzNE1JV2JLdkhlcUZ5eWtGd2V5MmoKSzk5eU1Yb0oraUpCaFJvWGllU3ZrNnFYdG44S2l4bVJtOXZPQk1hcWpuNkwwTjc3UWNCNjVRaHNKb0tWKzBiMQp5VVpJTHVTWWVTY0Yra3h6TzFVQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFNdnF3THl6d2RUL05OWlkvanNzb0lmQmIyNDgKZ3oxSHRuSXJ4UGhaY3RrYjBSMExxeTYzRFZBMFNSN0MrWk90aTNNd3BHMkFSVHVzdG1vYm9HV3poUXlXRk16awpVMVNIZSt6S3poeGcweUpjUjliZnlxM1ZtQVVCZlQyTVV5cVl2OVg0aWxpbmV0SURQaFBuWnlPMERQTHJITGoyCkcxZy8vWmZYbmFCT2k3dlZLSXFXUUR6RlltWGkwME9vOEVoalVyMU5sQ3FISnF1dUo3TlRWQWk1cXA0Qm1xWU8KUTBrbTVxTVVHbG9ZdkNmN1lHQWREWTVnWGg4dzFVMVdaNWNub0Q4WWc3aEtlSjRMRzRram1adlNucGZrS3VxNApiVDdUSjEwUEZlWFJkek8xa2FkQ3VMQSttUlg3OEd5WEw0UTZnOFdPUlhOVDYzdXN3MnlpMXVVN1lMTT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
    server: https://3201E325058272AA0990C04346DA6E82.yl4.ap-south-1.eks.amazonaws.com
  name: eks_egov-dev
contexts:
- context:
    cluster: eks_egov-dev
    namespace: egov
    user: eks_egov-dev
  name: dev
current-context: dev
kind: Config
preferences: {}
users:
- name: eks_egov-dev
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      args:
      - token
      - -i
      - egov-dev
      command: aws-iam-authenticator
      env:
      - name: AWS_ACCESS_KEY
        value: {AWS_ACCESS_KEY_PLACEHOLDER}
      - name: AWS_SECRET_ACCESS_KEY
        value: {AWS_SECRET_ACCESS_KEY_PLACEHOLDER}
      - name: AWS_REGION
        value: {AWS_REGION_PLACEHOLDER}
```

{% hint style="info" %}
**Note:** If you see the error: error: You must be logged in to the server (Unauthorised). Try running the command with sudo, e.g., sudo kubectl get pods
{% endhint %}

***

This setup ensures your machine is ready for DIGIT-based service development and deployment.&#x20;


---

# 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.digit.org/complaints-management/complaints-resolution-v2.10/deploy/customise/backend/local-setup/pre-requisites.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.
