Skip to content

Anumati is an application that is designed to help individuals and organisations manage their consent in public data flows.

Notifications You must be signed in to change notification settings

WSL-IIITB/Anumati

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Anumati Project

Ownership & Information Flow Primitives for DPIs

Anumati Project is a reference implementation of Digital Public Infrastructure (DPI) primitives enabling legitimate, governed, transparent, and purpose-bound data sharing.
It provides a Locker-based architecture, Connection Types, Terms, and X-Node Structure for Maintaing the Flow Control for Transfer of Ownership


πŸ“ Updated Project Structure

Anumati-Project/
β”‚
β”œβ”€β”€ Backend/
β”‚   β”œβ”€β”€ api/
β”‚   β”œβ”€β”€ media/
β”‚   β”œβ”€β”€ mysite/
β”‚   β”œβ”€β”€ static/
β”‚   β”œβ”€β”€ templates/
β”‚   β”œβ”€β”€ .gitignore
β”‚   β”œβ”€β”€ Connection Type.png
β”‚   β”œβ”€β”€ Data.data
β”‚   β”œβ”€β”€ db.sqlite3
β”‚   β”œβ”€β”€ manage.py
β”‚   β”œβ”€β”€ README.md
β”‚   └── requirements_backend.txt
β”‚
└── Frontend/
    β”œβ”€β”€ frontendUpdated/
    β”œβ”€β”€ node_modules/
    β”œβ”€β”€ package.json
    └── package-lock.json

✨ Core Features

1. User Management

Sign Up

Endpoint: /signup-user (form-data)
Example:

  • username: iiitb
  • description: Deemed University
  • password: iiitb

Login

Endpoint: /login-user (form-data)


2. Locker Management

Users can create multiple lockers.
Lockers organize user resources (documents, files, certificates).

API: /create-locker
Example form-data:

name: Education
description: Education records locker

3. Resource Sharing via Connections

Connections link two lockers (host ↔ guest).

API: /create-new-connection
Example form-data:

connection_name: Connection No.1
connection_type_name: MTech 2024 Admissions
guest_username: Rohith
guest_lockername: Education
host_username: iiitb
host_lockername: Admissions

4. Connection Types

Define:

  • Obligations
  • Permissions
  • Rules
  • Validity
  • Purpose of sharing

API: /create-connection-type-and-terms
Example JSON:

{
  "connectionName": "Alumni Networks",
  "connectionDescription": "Connection type for alumni communication.",
  "lockerName": "Transcripts",
  "obligations": [{
      "labelName": "Graduation Batch",
      "typeOfAction": "Add Value",
      "typeOfSharing": "Share",
      "labelDescription": "Mandatory to enter graduation batch",
      "hostPermissions": ["Re-share", "Download"]
  }],
  "permissions": {
      "canShareMoreData": true,
      "canDownloadData": false
  },
  "validity": "2024-12-31"
}

5. Admin Functions

  • Freeze lockers
  • Manage global connections
  • Control connection types and terms

πŸš€ Running the Project


Backend Setup (Django)

1. Navigate to Backend folder

cd Backend

2. Install Python dependencies

pip install -r requirements_backend.txt

3. Make and apply migrations

python manage.py makemigrations
python manage.py migrate

4. Start backend server

python manage.py runserver

Backend runs at:
πŸ‘‰ http://127.0.0.1:8000/


Frontend Setup (React)

1. Navigate to Frontend folder

cd Frontend

2. Install Node dependencies

npm install

3. Start React development server

npm start
# OR
npm run dev

Frontend runs at:
πŸ‘‰ http://localhost:3000/


πŸ“˜ Workflow Overview

Step 1 β€” Create Connection Type

Defines:

  • Purpose
  • Terms
  • Obligations
  • Permissions
  • Validity

Step 2 β€” Create Lockers

Users create lockers to store their documents/resources.

Step 3 β€” Create Connection

Connect host ↔ guest lockers using a connection type.

Step 4 β€” Enforce Terms

System enforces:

  • Obligations
  • Permissions
  • Validity rules
  • Sharing restrictions

πŸ“œ Project Goals

  • Standardized primitives for legitimate data sharing
  • User-controlled data governance
  • Transparent & auditable access
  • DPI-aligned design (similar to UPI but for data)
  • Scalable for cross-border consented sharing

πŸ›  Tech Stack

Backend

  • Python
  • Django 5.x
  • Django REST Framework
  • SQLite

Frontend

  • React
  • Node.js
  • HTML/CSS/JS

πŸ“„ License

This project is developed as part of IIIT-B DPI Research Initiative and follows academic open-source guidelines.


About

Anumati is an application that is designed to help individuals and organisations manage their consent in public data flows.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •