# anup7-star/evault architecture

> Architecture diagram of the GitHub repository anup7-star/evault, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/anup7-star/evault
- Repository: https://github.com/anup7-star/evault

## Overview

EVault is a wallet-authenticated secrets vault with administrator and member portals: administrators create encrypted vaults and grant expiring access; members sign in with SIWE and request authorized secrets. The tree and excerpts show a Next.js frontend, an Express/JSON-file backend, and a Rust/Postgres backend scaffold, while the README describes a co-located Next.js API. The Rust vault service is explicitly TODO, so its intended workflow is not drawn as implemented; no contract source is present in the tree.

Main entry points: [`app/admin/page.tsx`](https://github.com/anup7-star/evault/blob/main/app/admin/page.tsx) (Admin console), [`lib/apiClient.ts`](https://github.com/anup7-star/evault/blob/main/lib/apiClient.ts) (API client), [`server.js`](https://github.com/anup7-star/evault/blob/main/server.js) (Vault and auth API), [`backend/src/api/vaults.rs`](https://github.com/anup7-star/evault/blob/main/backend/src/api/vaults.rs) (Rust API routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web portals"]
  node_admin["Admin console<br/>[page.tsx]"]
  node_member["Member portal<br/>[page.tsx]"]
  node_session["Session state<br/>[SessionContext.tsx]"]
  node_client["API client<br/>[apiClient.ts]"]
  node_contract["Contract calls<br/>[contract.ts]"]
end

subgraph group_express["Express backend"]
  node_expressapi["Vault and auth API<br/>[server.js]"]
  node_jsondb[("JSON vault store<br/>[server.js]")]
  node_crypt["Secret encryption<br/>[server.js]"]
end

subgraph group_rust["Rust backend"]
  node_rustapi["Rust API routes<br/>[vaults.rs]"]
  node_rustauth["SIWE and sessions<br/>[auth.rs]"]
  node_rustchain["Contract client<br/>[contract_client.rs]"]
  node_repo["Secret repository<br/>[repository.rs]"]
  node_pg[("Postgres")]
  node_audit["Audit logging<br/>[mod.rs]"]
  node_rustentry["Rust server setup<br/>[main.rs]"]
end

subgraph group_chain["Blockchain access"]
end

node_wallet(("Wallet signer"))
node_evm{{"Access contract"}}

node_admin -->|"signs messages"| node_wallet
node_admin -->|"registers vaults"| node_contract
node_admin -->|"grants access"| node_contract
node_contract -->|"submits transactions"| node_evm
node_admin -->|"syncs grants"| node_client
node_member -->|"signs in"| node_wallet
node_member -->|"requests secrets"| node_client
node_admin -->|"requests authentication"| node_client
node_client -->|"sends API requests"| node_expressapi
node_expressapi -->|"reads and writes"| node_jsondb
node_expressapi -->|"encrypts and decrypts"| node_crypt
node_client -->|"stores verified session"| node_session
node_rustentry -->|"mounts routes"| node_rustauth
node_rustentry -->|"mounts routes"| node_rustapi
node_rustauth -->|"stores nonces and sessions"| node_pg
node_rustauth -->|"records auth outcomes"| node_audit
node_rustapi -->|"checks chain permissions"| node_rustchain
node_rustapi -->|"reads and stores secrets"| node_repo
node_repo -->|"reads and writes ciphertext"| node_pg
node_rustchain -->|"queries permissions"| node_evm

click node_admin "https://github.com/anup7-star/evault/blob/main/app/admin/page.tsx"
click node_member "https://github.com/anup7-star/evault/blob/main/app/user/page.tsx"
click node_session "https://github.com/anup7-star/evault/blob/main/components/SessionContext.tsx"
click node_client "https://github.com/anup7-star/evault/blob/main/lib/apiClient.ts"
click node_expressapi "https://github.com/anup7-star/evault/blob/main/server.js"
click node_jsondb "https://github.com/anup7-star/evault/blob/main/server.js"
click node_crypt "https://github.com/anup7-star/evault/blob/main/server.js"
click node_contract "https://github.com/anup7-star/evault/blob/main/lib/contract.ts"
click node_rustapi "https://github.com/anup7-star/evault/blob/main/backend/src/api/vaults.rs"
click node_rustauth "https://github.com/anup7-star/evault/blob/main/backend/src/api/auth.rs"
click node_rustchain "https://github.com/anup7-star/evault/blob/main/backend/src/blockchain/contract_client.rs"
click node_repo "https://github.com/anup7-star/evault/blob/main/backend/src/vault/repository.rs"
click node_audit "https://github.com/anup7-star/evault/blob/main/backend/src/audit/mod.rs"
click node_rustentry "https://github.com/anup7-star/evault/blob/main/backend/src/main.rs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_admin,node_member,node_session,node_client,node_contract toneBlue
class node_expressapi,node_jsondb,node_crypt toneAmber
class node_rustapi,node_rustauth,node_rustchain,node_repo,node_pg,node_audit,node_rustentry toneMint
class node_wallet,node_evm toneIndigo
```

## Components

### Web portals

- [Admin console](https://github.com/anup7-star/evault/blob/main/app/admin/page.tsx): `app/admin/page.tsx`
- [Member portal](https://github.com/anup7-star/evault/blob/main/app/user/page.tsx): `app/user/page.tsx`
- [Session state](https://github.com/anup7-star/evault/blob/main/components/SessionContext.tsx): `components/SessionContext.tsx`
- [API client](https://github.com/anup7-star/evault/blob/main/lib/apiClient.ts): `lib/apiClient.ts`
- [Contract calls](https://github.com/anup7-star/evault/blob/main/lib/contract.ts): `lib/contract.ts`

### Express backend

- [Vault and auth API](https://github.com/anup7-star/evault/blob/main/server.js): `server.js`
- [JSON vault store](https://github.com/anup7-star/evault/blob/main/server.js): `server.js`
- [Secret encryption](https://github.com/anup7-star/evault/blob/main/server.js): `server.js`

### Rust backend

- [Rust API routes](https://github.com/anup7-star/evault/blob/main/backend/src/api/vaults.rs): `backend/src/api/vaults.rs`
- [SIWE and sessions](https://github.com/anup7-star/evault/blob/main/backend/src/api/auth.rs): `backend/src/api/auth.rs`
- [Contract client](https://github.com/anup7-star/evault/blob/main/backend/src/blockchain/contract_client.rs): `backend/src/blockchain/contract_client.rs`
- [Secret repository](https://github.com/anup7-star/evault/blob/main/backend/src/vault/repository.rs): `backend/src/vault/repository.rs`
- **Postgres**
- [Audit logging](https://github.com/anup7-star/evault/blob/main/backend/src/audit/mod.rs): `backend/src/audit/mod.rs`
- [Rust server setup](https://github.com/anup7-star/evault/blob/main/backend/src/main.rs): `backend/src/main.rs`

### Other components

- **Wallet signer**
- **Access contract**

## Connections

- Admin console → Wallet signer: signs messages
- Admin console → Contract calls: registers vaults
- Admin console → Contract calls: grants access
- Contract calls → Access contract: submits transactions
- Admin console → API client: syncs grants
- Member portal → Wallet signer: signs in
- Member portal → API client: requests secrets
- Admin console → API client: requests authentication
- API client → Vault and auth API: sends API requests
- Vault and auth API → JSON vault store: reads and writes
- Vault and auth API → Secret encryption: encrypts and decrypts
- API client → Session state: stores verified session
- Rust server setup → SIWE and sessions: mounts routes
- Rust server setup → Rust API routes: mounts routes
- SIWE and sessions → Postgres: stores nonces and sessions
- SIWE and sessions → Audit logging: records auth outcomes
- Rust API routes → Contract client: checks chain permissions
- Rust API routes → Secret repository: reads and stores secrets
- Secret repository → Postgres: reads and writes ciphertext
- Contract client → Access contract: queries permissions
