Skip to content
myconsentapp

For CIOs, CTOs and security teams

Technical architecture

What runs where, what data we hold, how it is protected and how your systems connect. Everything below is described from the code and infrastructure we run today; planned items are marked as such.

Hosting
Mumbai, India
We hold
Consent records, not your customer data
Signing
ECDSA P-256 + ML-DSA-65 (post-quantum) in a hardware security module (HSM)
Database
Managed relational database, multi-zone

System overview

Three kinds of caller reach one platform through the edge. Application services run in private subnets; data, keys and logs never leave the Mumbai region.

System overviewCallersCloud region · Mumbai, IndiaPrivate subnets · 3 availability zonesOutside our cloudData PrincipalWeb · Android · iOSData FiduciaryYour backend · SDKsAuditor / BoardPublic verifier · JWKSCDN + web firewallTLS 1.3 · rate limitsStatic hostingWeb app · this siteLoad balancerTLS · health checksConsent APIContainers · DjangoWorkerExpiry · webhooks · anchoringDatabaseMulti-zone · encrypted · PITRKey management (HSM)P-256 signing · envelope keysImmutable storageLedger batches · WORMLogs and monitoringLogs 400 days · secrets vaultWhatsApp Cloud APISign-in codesOther Consent ManagersOAuth + signed JWS
LiveSimulated today, live with partner agreements

One consent, end to end

  1. 1

    Request

    Your backend calls POST /v1/consent-requests with a notice and your customer reference, and gets a hosted consent link.

  2. 2

    Notice

    The person opens the link, reads the itemised notice (before signing in), signs in with a code and chooses each purpose separately.

  3. 3

    Record

    In one database transaction we store the consent and append a signed, hash-chained ledger event. The person gets a receipt.

  4. 4

    Check

    Before processing, your systems call POST /v1/consents/verify for that person and purpose.

  5. 5

    Withdraw

    The person withdraws in one tap. A signed webhook reaches you; your acknowledgement is recorded on their timeline.

Technology stack

  • Consent API

    Python 3.12, Django and Django REST Framework on gunicorn. A modular monolith: identity, tenants, catalogue, consent, ledger, receipts, verification, rights and interop are separate modules with their own routes, jobs and SQL schema.

  • Worker

    The same codebase as a separate service: consent expiry, webhook delivery from a transactional outbox, ledger integrity checks and anchoring.

  • Data

    A managed relational database, accessed through plain SQL with versioned migrations. Background work runs from a transactional outbox in the same database, so no event is lost between services.

  • Web app

    React and Vite single-page app: the person’s dashboard, the hosted consent page, the business console and the developer portal.

  • Mobile app

    Expo / React Native for Android and iOS, at feature parity with the web dashboard.

  • Infrastructure

    Every cloud resource is defined in Terraform, with separate dev, sandbox and production stacks.

Data residency and what we store

All personal data, backups and logs are stored and processed in India (Mumbai). The API refuses to start in any other region. We carry consent records, not the customer data you process. The only global components are the CDN’s web firewall rules and TLS certificate; they hold no personal data.

DataWhereProtection
Person’s mobile number (for sign-in)DatabaseAES-256-GCM envelope encryption with a data key from the key management service; looked up by keyed hash
Console user name and emailDatabaseSame envelope encryption
Your customer referenceDatabaseKeyed hash scoped to your organisation; the plain value is never stored
Consent ledgerDatabase + immutable storagePseudonyms only, append-only, signed and hash-chained
Sessions, codes, API keysDatabaseOnly SHA-256 or HMAC hashes of secrets
Application logsLog servicePersonal data redacted, ids only, encrypted, kept 400 days

Security controls

Evidence anyone can verify

  • Hash-chained ledger

    Every notice served, grant, change, withdrawal and acknowledgement is appended in the same transaction as the change itself, canonicalised (RFC 8785), hashed and chained to the event before. Database triggers block any update or delete, and the whole chain is re-verified every 10 minutes.

  • Signed in hardware

    Each event hash is signed with ECDSA P-256 inside a hardware security module. Public keys are published as JWKS, so signatures can be checked by anyone, even in a browser.

  • Quantum-ready signatures

    The same hash is also signed with ML-DSA-65, the NIST post-quantum standard (FIPS 204). ECDSA is what every browser verifies today; ML-DSA stays secure against a future quantum computer that could break ECDSA. Forging a receipt means breaking both.

  • Anchored and time-stamped

    Events are batched into RFC 6962 Merkle trees, written to write-once (WORM) storage with seven-year retention and time-stamped (RFC 3161), with inclusion proofs for each event. For now, timestamps come from a local development authority; external RFC 3161 timestamping starts with the live API.

  • Independent verification

    People get JSON and PDF/QR receipts. An auditor, the Board or a court can check any receipt on the public verifier or with the open-source cmverify tool, without trusting us.

How your systems connect

Developer overview

Availability and operations

How it maps to the DPDP Act

  • Notice (s.5)

    Itemised, versioned notices per purpose, in English and all 22 Eighth Schedule languages. Each consent points to the exact version shown.

  • Consent (s.6)

    Each purpose chosen separately; withdrawal as easy as giving, propagated to you by webhook with acknowledgement.

  • Children and guardians (s.9)

    Age gate, guardian adulthood verified through DigiLocker, and no tracking or targeted-ads purposes for children.

  • Security and breach (s.8)

    The controls above, plus a breach register with notices to people and 72-hour Board report tracking.

  • Rights and grievances (ss.11–14)

    Access, correction and erasure requests, grievances with response deadlines, and nomination.

  • Consent Manager records

    Signed, verifiable records designed to be kept for at least seven years.

Status and what comes next

Planning an architecture or security review?

We walk your team through the design and share the threat model, ASVS checklist, DPIA template and pentest scope under NDA.

Privacy choices

Choose what this site may store in your browser. Your choice is kept on this device only, is never sent to us, and you can change it here at any time.

Read our privacy notice