An open-source consent management system compliant with India's DPDP Act, 2023.
Consent Enforcement Service - Video
Solving Consent Fatigue via Portable Consent Artifacts (PCA) - A Proposal
DPDP Wallet Demonstration - Video
Verifiable Parent Consent - Video
Standardized Erasure Interface for DPDP Consent Managers - A Proposal
Securing Court-Ready Evidence under BSA Section 62
DPDP Inclusion: Interactive Voice Consent using Sarvam AI
- Clone the repository to a separate folder
git clone https://github.com/tsi-coop/tsi-dpdp-cms.git tsi-dpdp-cms-eval
- Start the TSI DPDP CMS service
cd tsi-dpdp-cms-eval sudo docker compose up -d
Check out v0.3 release
The system includes a pre-configured interactive tour designed for evaluators and administrators.
Access the Tour: Open your browser and navigate to: http://localhost:8080/tour
Follow the Guided Journey:
-
System Setup: Initialize your environment and configure master admin credentials.
-
Org Configuration: Onboard your Fiduciaries, link Apps, and publish Multilingual Data Policies.
-
Consent Collector: Experience the notice and capture workflow from a Data Principal's perspective.
-
Consent Verifier: Test real-time API validation used by Data Processors to ensure purpose-limited processing.
-
User Dashboard: Exercise principal rights: view consent artifacts, withdraw permissions, and submit grievances.
-
Enforcement Logic: View the visual logic for technical data deletion, retention periods, and audit trail integrity.
-
DPO Console Tour: Comprehensive video walkthrough of the administrative console for managing compliance workflows.
-
System Integration: API specifications for Data Fiduciaries and Processors to integrate CMS logic into backend technical stacks.
-
Verifiable Parental Consent: Experience the Section 9 workflow: verifiable parental consent with OTP-based guardian identification for learners under 18.
-
DPDP Wallet Demo: Experience portable privacy. Checkout the DPDP Wallet concept, then download your PCA from the User Dashboard to manage your processing rights independently.
-
Password Recovery: Explore the "break-glass" account recovery mechanism using secure Master Recovery Keys.
-
Legal Module: Explore the crystallization of immutable audit trails into cryptographically signed, BSA Section 62-compliant digital evidence artifacts for court and regulatory submission.
-
Voice Consent Gateway: Experience hands-free, granular consent collection using Sarvam AI (TTS/STT) to obtain informed voice affirmations for processing purposes.
Before you begin, ensure you have the following software installed on your development machine or server:
-
Java Development Kit (JDK) 17 or higher: Required to build and run the Java application.
- Installation Steps:
- Linux (Ubuntu/Debian):
sudo apt update sudo apt install openjdk-17-jdk
- Windows: Download the JDK 17 installer from Oracle (requires account) or Adoptium (Eclipse Temurin, recommended open-source distribution) and follow the installation wizard. Ensure
JAVA_HOMEenvironment variable is set and%JAVA_HOME%\binis in your system'sPath.
- Linux (Ubuntu/Debian):
- Verification:
java -version javac -version
- Installation Steps:
-
Apache Maven 3.6.0 or higher: Project build automation tool.
- Installation Steps:
- Linux (Ubuntu/Debian):
sudo apt install maven
- Windows: Download the Maven binary zip from the Apache Maven website, extract it, and add the
bindirectory to your system'sPathenvironment variable.
- Linux (Ubuntu/Debian):
- Verification:
mvn -v
- Installation Steps:
-
Docker Desktop (For Docker based development): Essential for containerizing and running the application and database locally.
- Installation Steps:
- Windows: Download and install Docker Desktop from the official Docker website.
- Linux: Follow the official Docker Engine installation guide for your specific distribution (e.g., Docker Docs). Install Docker Compose separately if using Docker Engine.
- Configuration & Verification (Windows Specific):
- Ensure WSL 2 is enabled and configured. Open PowerShell as Administrator and run
wsl --installorwsl --update. - Verify virtualization (Intel VT-x / AMD-V) is enabled in your computer's BIOS/UEFI settings.
- Start Docker Desktop and wait for the whale icon in the system tray to turn solid.
- Ensure WSL 2 is enabled and configured. Open PowerShell as Administrator and run
- Verification:
docker --version docker compose version # Or docker compose --version for older installations
- Installation Steps:
-
Git: For cloning the repository.
- Installation Steps:
- Linux (Ubuntu/Debian):
sudo apt install git
- Windows: Download the Git for Windows installer from git-scm.com and follow the installation wizard.
- Linux (Ubuntu/Debian):
- Verification:
git --version
- Installation Steps:
-
Jetty (For Non Docker Development):Navigate to the Eclipse Jetty Downloads page.
-
Download the Jetty 11 (Standard) distribution (e.g., jetty-home-11.x.x.tar.gz or .zip).
-
Extract the archive to a permanent directory:
Linux/macOS: /opt/jetty-home
Windows: C:\jetty-home
-
Follow these steps to get the TSI DPDP CMS solution running on your local machine using Docker Compose:
-
Change Docker to Dev mode:
To build from local source, uncomment the block below in docker-compose.yml
build: context: . dockerfile: Dockerfile -
Clone the Repository:
git clone https://github.com/tsi-coop/tsi-dpdp-cms.git cd tsi-dpdp-cms -
Create
.envFile: This file stores sensitive configurations (passwords, API keys, etc.) and is NOT committed to Git.cp .example .env
Now, edit the newly created
.envfile and fill in the placeholder values. -
Build the Java WAR File: Navigate to the project root and build your Java application.
mvn clean package
This will create
target/tsi_dpdp_cms.war -
Initialize PostgreSQL Database Schema: The
postgresDocker image only runs initialization scripts on its first startup when the data directory is empty. To ensure your schema is loaded:docker compose down -v
-
Build and Start Docker Services: This command will build your application's Docker image and start both the PostgreSQL database and the Jetty application.
docker compose up --build -d
--build: Ensures Docker images are rebuilt, picking up any changes in your Java code or Dockerfile.-d: Runs the containers in detached mode (in the background).
-
Verify Services and Check Logs:
- Check if containers are running:
docker ps - Monitor PostgreSQL logs for schema initialization:
docker compose logs -f postgres_db - Monitor Jetty application logs for successful deployment:
docker compose logs -f jetty_app
- Check if containers are running:
These steps describe how to install and run the TSI DPDP CMS solution directly on a Linux/Windows server without using Docker.
-
Clone the Repository:
git clone https://github.com/tsi-coop/tsi-dpdp-cms.git cd tsi-dpdp-cms -
PostgreSQL Database Setup:
- Log in as the PostgreSQL superuser (e.g.,
postgresuser on Linux).
sudo -i -u postgres psql
- Create the database and user:
CREATE DATABASE <<your-db-name-here>>; CREATE USER <<your-db-user-here>> WITH ENCRYPTED PASSWORD '<<your_db_password_here>>';
- Connect to the new database and grant permissions: (Note: These steps are required for PostgreSQL 15+ compatibility)
\c <<your-db-name-here>> ALTER SCHEMA public OWNER TO <<your-db-user-here>>; GRANT ALL PRIVILEGES ON SCHEMA public TO <<your-db-user-here>>; GRANT ALL PRIVILEGES ON DATABASE <<your-db-name-here>> TO <<your-db-user-here>>;
- Exit the postgres user:
exit - Initialize Schema: Execute the
db/init.sqlscript to create the necessary tables.
psql -U <<your-db-user-here>> -d <<your-db-name-here>> -h localhost -f /path/to/tsi-dpdp-cms/db/init.sql - Log in as the PostgreSQL superuser (e.g.,
-
Build WAR:
cd /path/to/tsi-dpdp-cms mvn clean packageThis will generate
target/tsi-dpdp-cms.war. -
Deploy Solution (linux):
cd /path/to/tsi-dpdp-cms/server cp .example .envNow, edit the newly created
.envfile and fill in the placeholder values../set-base.sh #Sets the jetty base directory ./serve.sh # Copies the target/tsi-dpdp-cms.war to $JETTY_BASE/webapps/ROOT.war. Starts the server in 8080
-
Deploy Solution (windows):
cd /path/to/tsi-dpdp-cms/server copy .example .envNow, edit the newly created
.envfile and fill in the placeholder values.set-base.bat #Sets the jetty base directory serve.bat # Copies the target/tsi_dpdp_cms.war to %JETTY_BASE%/webapps/ROOT.war. Starts the server in 8080
-
Validation Step: To confirm server status.
curl -I http://localhost:8080
TSI DPDP CMS is licensed under the Apache 2.0 license