# Backend Developer Guide

This guide provides detailed steps for developers to create a new microservice on top of DIGIT. At the end of this guide, you will be able to run the [sample module](https://github.com/egovernments/DIGIT-OSS/tree/master/tutorials/backend-developer-guide/btr-services) provided (code provided), test it out locally and also deploy it using CI/CD to your DIGIT environment.

**Steps to create a microservice:**

* Set up your development environment
* Develop the registries, services, and APIs for a voter registration module that were described in the [Design Guide](/platform/guides/design-guide.md)
* Integrate with an existing DIGIT environment and re-use a lot of the common services using Kubernetes port forwarding
* Test the new module and debug
* Build and deploy the new service in the DIGIT environment

The guide is divided into multiple sections for ease of use. Click on the section cards below to follow the development steps.

<table data-view="cards"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td><a href="/pages/JLzD4fP3k0vSao8CxSR9"><mark style="color:blue;"><strong>Section 0: System Setup</strong></mark></a></td><td>Learn all about the development pre-requisites, design inputs, and environment setup</td><td></td></tr><tr><td><a href="/pages/z0IHAkOSLzUskQTdsvr0"><mark style="color:blue;"><strong>Section 1: Create Project</strong></mark></a></td><td>The first step is to create and configure a spring boot project</td><td></td></tr><tr><td><a href="/pages/Rbd9mTk7lmkX65HILL3e"><mark style="color:blue;"><strong>Section 2: Integrate Persister Service</strong></mark></a></td><td>The next step is to integrate the Persister service and Kafka to enable read/write from the DB</td><td></td></tr><tr><td><a href="/pages/BPGlmqTXz4M9UsyrT4lm"><mark style="color:blue;"><strong>Section 3: Integrate with other DIGIT services</strong></mark></a></td><td>Steps on how to integrate with other key DIGIT services</td><td></td></tr><tr><td><a href="/pages/WNdR8jBui75CnKxPF9gl"><mark style="color:blue;"><strong>Section 4: Billing &#x26; Payment Integration</strong></mark></a></td><td>Learn how to integrate the billing and payment services to the module</td><td></td></tr><tr><td><a href="/pages/RC7Ilykrcvevr3uA8tvm"><mark style="color:blue;"><strong>Section 5: Advanced Integrations</strong></mark></a></td><td>Learn how to integrate advanced services to the built module</td><td></td></tr><tr><td><a href="/pages/OTkB1Kedzu1sNj15Q8Cr"><mark style="color:blue;"><strong>Section 6: Run Application</strong></mark></a></td><td>Test run the built application in the local environment</td><td></td></tr><tr><td><a href="/pages/UDTDVfghNS1OHnbPnO60"><mark style="color:blue;"><strong>Section 7: Build &#x26; Deploy Instructions</strong></mark></a></td><td>Deploy and run the modules</td><td></td></tr></tbody></table>

Access the sample module [here](https://github.com/egovernments/DIGIT-OSS/tree/master/tutorials/backend-developer-guide/btr-services). Download and run this in the local environment.


---

# 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/platform/guides/developer-guide/backend-developer-guide.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.
