List and details of technologies used to develop and deploy DIGIT
DIGIT core services are developed using the following technologies -
Click the links below to learn more about the open-source tools and API gateways used in DIGIT.
Infrastructure resources required to deploy DIGIT
Various infrastructure resources required for DIGIT deployment can be provisioned from the AWS cloud manually. However, the best practice is to maintain consistency, automation, audit, reusability, and cost forecast. The use of infra-as-code using tools like terraform templates works well to this end.
Open Source Tools
Complete list of tool stack used in DIGIT with licence details
API Gateway
Details of the API gateway used in DIGIT
Platform architecture details
Overall tool stack used in DIGIT
DIGIT being an open source platform, all the tools and tech stack used to build, deploy and operate DIGIT - are also open source and community edition. The various tools used are listed below with the specific versions used and their short description.
Platform Tools | Used Version | Description | Licence Type |
---|---|---|---|
Dev Stack Tools | Latest Version | Used Version | Description | License Type |
---|---|---|---|---|
DevOps Stack Tools | Latest Version | Used Version | Description | License Type |
---|---|---|---|---|
​ Kafka
3.6.1
Apache Kafka is an open-sourced distributed event streaming platform capable of handling trillions of events a day.
​Elasticsearch
8.11.3
Elasticsearch is a distributed, free and open search and analytics engine for all types of data, including textual, numerical, geospatial, structured and unstructured.
​Kibana
8.11.3
Kibana is a free and open frontend application that sits on top of the Elastic Stack, providing search and data visualization capabilities for data indexed in Elasticsearch.
​Postgresql
14.0 or later
PostgreSQL is a powerful, open source object-relational database system with over 30 years of active development that has earned it a strong reputation for reliability, feature robustness, and performance
​Redis
7.2
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams.
​BSD License
​Jaeger
1.52
Jaeger is open source software for tracing transactions between distributed services. It's used for monitoring and troubleshooting complex microservices environments.
​OpenJDK
JDK17
17
OpenJDK is completely open source and can be used it freely
​GPL-2
​SpringBoot
3.2.2
Spring Boot is an open-source micro framework maintained by a company called Pivotal. It provides Java developers with a platform to get started with an auto configurable production-grade Spring application.
​17.0.2
16.7.0
React is one of Facebook's first open source projects that is both under very active development and is also being used to ship code to everybody on facebook.com.
​MIT
16.8.0
Material-UI CE (Community Edition) has been 100% open-source (MIT) since the very beginning, and always will be. Developers can ensure Material-UI is the right choice for their React applications through Material-UI's community maintenance strategy.
​MIT
​NodeJS
14.0
8.4.0
Node. js is an open-source, cross-platform, JavaScript runtime environment. It executes JavaScript code outside of a browser.
​MIT
Kubernetes
1.30
1.27.x
Kubernetes, also known as K8s, is an open-source system for automating deployment, scaling, and management of containerized applications.
Docker
24.0.6
19.x
Docker, a subset of the Moby project, is a software framework for building, running, and managing containers on servers and the cloud.
Helm
3.6.3
3.x.x
Helm helps you manage Kubernetes applications — Helm Charts help you define, install, and upgrade even the most complex Kubernetes.
​Terraform
1.8.2
v1.5.7
Terraform allows infrastructure to be expressed as code in a simple, human readable language called HCL (HashiCorp Configuration Language).
Jenkins
2.306
2.289
Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software.
​MIT
Go Lang
1.21.2
1.13.3
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Groovy
3.0
Apache Groovy is a powerful, optionally typed and dynamic language, with static-​typing and static compilation capabilities, for the Java platform aimed at improving developer productivity thanks to a concise, familiar and easy to learn syntax.
Python
​3.9.6
​v3.9.6
Python software and documentation are licensed under the PSF License Agreement. Starting with Python 3.8.6,
PSF
​Sops
sops is an editor of encrypted files that supports YAML, JSON, ENV, INI and BINARY formats and encrypts with AWS KMS, GCP KMS, Azure Key Vault, age, and PGP.
​yaml
1.2
1.2
YAML is a human-readable data serialization standard that can be used in conjunction with all programming languages and is often used to write configuration files.
​License
Deployment framework and approach
Continuous Integration/Continuous Deployment (CI/CD) software is the backbone of the modern DevOps environment. CI/CD bridges the gap between development and operations teams by automating the build, test, and deployment of applications.
Microservice reusable building blocks architecture
DIGIT consists of several reusable building blocks on top of which one can develop a citizen service delivery solution. Read on to learn more about the microservice building blocks architecture.
To develop a new service, one needs to create a microservice and make it available through the API gateway. The API gateway calls the for authentication and the for authorisation. The service developer can configure the roles and map the roles and actions using the .
- The service user interface can be developed as part of the Citizen Dashboard or can be an independent solution. The citizen can log in using a mobile number and OTP. They can apply for a new service using the service UI. The allows users to upload relevant documentation.
The stores the submitted application asynchronously into the registry. The PII data is encrypted using the before storing. All changes are digitally signed and logged using the (ongoing). The transforms and enriches the application data. The also strips the PII data and sends it to the .
The executes configured queries on the stripped data and makes the aggregated data available to the for the administrator or employee view. The views are in accordance with the user role access which is also configurable.
The generates a demand based on the calculation logic for the given service delivery. Based on this demand, a bill is generated against which the payment has to be made. The citizen can either make an online payment or can pay at the counter (offline payment). The is called for online payments and this is integrated with third-party service providers. The service routes the citizen to the service provider's website and then back to the citizen's UI once the payment is successful.
The is the payment registry and records all the successful payments. For offline payments, a record is made in the collection service after the collection of the Cash/Cheque/DD/RTGS. The allowed payment modes are configurable. The PDF service is used to generate receipts based on a configurable template.
The service then triggers the to assign tasks for verification and approval. Workflows can be configured. The Employee Service allows employee registrations and enables them to log in using the Employee Dashboard. The dashboard displays the list of pending applications as per the employee's role. The employee can perform actions on these applications using the employee UI for the service.
As the status changes or actions are taken on the applications the relevant sends the updates to the applicant. Once the application is approved, the applicant can download the final certificate which is generated using .
DIGIT has multi-tenant configuration capabilities. The allows the configuration of the tenant hierarchy and maps multiple tenants like Country, State, District or State, Department, and Sub Department. Each tenant can have their own configurations for service, roles, workflows etc. This allows for variations across different agencies in tune with the local context.
The facilitates the support of multiple languages in DIGIT. This service stores the translations in multiple languages.