Skip to content

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

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors