# indu9424/covid19-india-portal architecture

> Architecture diagram of the GitHub repository indu9424/covid19-india-portal, 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/indu9424/covid19-india-portal
- Repository: https://github.com/indu9424/covid19-india-portal

## Overview

This is an Express API for authenticated Covid-19 state and district data operations. The main workflow is login against the user table, issue a JWT, verify it on protected requests, then read or modify state and district records or aggregate district statistics by state. All application behavior is implemented in app.js, so the graph separates its responsibilities rather than implying separate modules. The README documents the API capabilities, and the sampled source also implements district details lookup.

Main entry points: [`app.js`](https://github.com/indu9424/covid19-india-portal/blob/main/app.js) (JWT middleware), [`covid19IndiaPortal.db`](https://github.com/indu9424/covid19-india-portal/blob/main/covid19IndiaPortal.db) (SQLite database)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API operations"]
  node_states["State reads<br/>[app.js]"]
  node_districts["District CRUD<br/>[app.js]"]
  node_stats["State statistics<br/>[app.js]"]
  node_details["District details<br/>[app.js]"]
  node_mapping["Response mapping<br/>[app.js]"]
end

subgraph group_auth["Authentication"]
  node_login["Login handler<br/>[app.js]"]
  node_middleware["JWT middleware<br/>[app.js]"]
  node_jwt["JWT library"]
  node_bcrypt["Bcrypt library"]
end

subgraph group_data["Persistence"]
  node_db[("SQLite database")]
end

node_client(("API client"))

node_client -->|"submits credentials"| node_login
node_login -->|"looks up user"| node_db
node_login -->|"checks password"| node_bcrypt
node_login -->|"signs token"| node_jwt
node_login -->|"returns token"| node_client
node_client -->|"sends protected request"| node_middleware
node_middleware -->|"verifies token"| node_jwt
node_middleware -->|"dispatches after verification"| node_states
node_middleware -->|"dispatches after verification"| node_districts
node_middleware -->|"dispatches after verification"| node_stats
node_middleware -->|"dispatches after verification"| node_details
node_client -->|"requests states"| node_states
node_client -->|"requests district operation"| node_districts
node_client -->|"requests statistics"| node_stats
node_client -->|"requests details"| node_details
node_states -->|"reads states"| node_db
node_states -->|"maps state rows"| node_mapping
node_districts -->|"reads or writes districts"| node_db
node_districts -->|"maps district rows"| node_mapping
node_stats -->|"aggregates district totals"| node_db
node_details -->|"joins district and state"| node_db

click node_login "https://github.com/indu9424/covid19-india-portal/blob/main/app.js"
click node_middleware "https://github.com/indu9424/covid19-india-portal/blob/main/app.js"
click node_states "https://github.com/indu9424/covid19-india-portal/blob/main/app.js"
click node_districts "https://github.com/indu9424/covid19-india-portal/blob/main/app.js"
click node_stats "https://github.com/indu9424/covid19-india-portal/blob/main/app.js"
click node_details "https://github.com/indu9424/covid19-india-portal/blob/main/app.js"
click node_mapping "https://github.com/indu9424/covid19-india-portal/blob/main/app.js"
click node_db "https://github.com/indu9424/covid19-india-portal/blob/main/covid19IndiaPortal.db"

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_states,node_districts,node_stats,node_details,node_mapping,node_client toneBlue
class node_login,node_middleware,node_jwt,node_bcrypt toneAmber
class node_db toneMint
```

## Components

### API operations

- [State reads](https://github.com/indu9424/covid19-india-portal/blob/main/app.js): `app.js`
- [District CRUD](https://github.com/indu9424/covid19-india-portal/blob/main/app.js): `app.js`
- [State statistics](https://github.com/indu9424/covid19-india-portal/blob/main/app.js): `app.js`
- [District details](https://github.com/indu9424/covid19-india-portal/blob/main/app.js): `app.js`
- [Response mapping](https://github.com/indu9424/covid19-india-portal/blob/main/app.js): `app.js`

### Authentication

- [Login handler](https://github.com/indu9424/covid19-india-portal/blob/main/app.js): `app.js`
- [JWT middleware](https://github.com/indu9424/covid19-india-portal/blob/main/app.js): `app.js`
- **JWT library**
- **Bcrypt library**

### Persistence

- [SQLite database](https://github.com/indu9424/covid19-india-portal/blob/main/covid19IndiaPortal.db): `covid19IndiaPortal.db`

### Other components

- **API client**

## Connections

- API client → Login handler: submits credentials
- Login handler → SQLite database: looks up user
- Login handler → Bcrypt library: checks password
- Login handler → JWT library: signs token
- Login handler → API client: returns token
- API client → JWT middleware: sends protected request
- JWT middleware → JWT library: verifies token
- JWT middleware → State reads: dispatches after verification
- JWT middleware → District CRUD: dispatches after verification
- JWT middleware → State statistics: dispatches after verification
- JWT middleware → District details: dispatches after verification
- API client → State reads: requests states
- API client → District CRUD: requests district operation
- API client → State statistics: requests statistics
- API client → District details: requests details
- State reads → SQLite database: reads states
- State reads → Response mapping: maps state rows
- District CRUD → SQLite database: reads or writes districts
- District CRUD → Response mapping: maps district rows
- State statistics → SQLite database: aggregates district totals
- District details → SQLite database: joins district and state
