# Architecture

Inji Web is an intuitive, user-friendly portal designed to helps users to access Verifiable Credentials.

The architecture diagram below illustrates the structure and components of Inji Web, including the new login functionality with Google and storage of downloaded Verifiable Credentials in the database.

<figure><img src="/files/tB3r4vwuI6lR9H07dEOP" alt=""><figcaption></figcaption></figure>

### Architecture Components

Let's briefly explore the key components of the architecture that constitute Inji Web:

1. **Inji Wallet:**\
   A React-based frontend portal that enables users to initiate credential-related workflows. It supports both guest and logged-in flows, allowing users to request, download, and verify Verifiable Credentials (VCs).
2. **Backend for Frontend (Mimoto):**\
   Acts as the central processing layer between Inji Wallet and backend services. It handles API calls, session management, login, and orchestrates communication with services like Certify, Verify, and credential storage systems.
3. **Credential Issuer (Inji Certify):**\
   Responds to credential requests from Mimoto and returns signed Verifiable Credentials. It adheres to protocols like OpenID4VCI to maintain secure and standardized issuance.
4. **Credential Verifier (Inji Verify):**\
   Validates the authenticity and integrity of credentials by processing verification requests from Mimoto. Ensures credentials are genuine and unaltered.
5. **Credential Storage - Datashare:**\
   Offers temporary storage for Verifiable Credentials, especially useful for guest sessions or public credential sharing scenarios.
6. **Persistent Storage - PostgreSQL:**\
   Stores Verifiable Credentials securely for logged-in users, enabling persistent access and history tracking of previously issued credentials.
7. **Session Store - Redis:**\
   Manages logged-in user sessions, and other volatile state data for performance-optimized authentication and session lifecycle handling.
8. **Login Provider - Google Login:**\
   Facilitates OAuth 2.0 based user authentication. Users can log in using their Google accounts, and the login state is managed by Mimoto.
9. **Authentication Layer - eSignet:**\
   Handles the authentication process, authorizing users, issuing access tokens, and preparing credentials by retrieving necessary data from the credential issuer.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.inji.io/inji-wallet/inji-web/technical-overview/architecture.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
