# priyadharshinik15/astra-lex-analyser architecture

> Architecture diagram of the GitHub repository priyadharshinik15/astra-lex-analyser, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/priyadharshinik15/astra-lex-analyser
- Repository: https://github.com/priyadharshinik15/astra-lex-analyser

## Overview

AstraLex is a contract-intelligence workbench. Users authenticate, then manage contract records from the dashboard or use separate AI analysis, generation, scanning, chat, and translation tools; map and chart views visualize contract data. The frontend is the primary product, while the README describes the backend as proposed/in progress. Links reflect sampled imports and calls or explicit README capabilities; unsampled implementation details and backend persistence connections are not inferred.

Main entry points: [`App.tsx`](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/App.tsx) (App and navigation), [`services/geminiService.ts`](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/services/geminiService.ts) (Gemini service), [`components/Dashboard.tsx`](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/Dashboard.tsx) (Dashboard), [`components/AIWorkbench.tsx`](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/AIWorkbench.tsx) (AI workbench)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application shell"]
  node_app["App and navigation<br/>[App.tsx]"]
end

subgraph group_contracts["Contract workspace"]
  node_dashboard["Dashboard<br/>[Dashboard.tsx]"]
  node_contract_service["Contract service<br/>[contractService.ts]"]
  node_mock_data[("Prototype contract data<br/>[mockData.ts]")]
  node_contract_details["Contract details"]
  node_distribution["Distribution chart"]
  node_global_map["Global contracts map"]
end

subgraph group_ai["AI tools"]
  node_ai_workbench["AI workbench<br/>[AIWorkbench.tsx]"]
  node_risk_result["Risk analysis result"]
  node_generator["Contract generator"]
  node_scanner["Camera scanner<br/>[CameraScanner.tsx]"]
  node_camera_hook["Camera capture<br/>[useCamera.ts]"]
  node_chatbot["AI chatbot<br/>[Chatbot.tsx]"]
  node_translator["Translation"]
  node_gemini["Gemini service<br/>[geminiService.ts]"]
end

subgraph group_identity["Identity services"]
  node_auth_pages["Login and registration<br/>[LoginPage.tsx]"]
  node_register_page["Registration page<br/>[RegisterPage.tsx]"]
  node_auth_service["Auth service<br/>[authService.ts]"]
  node_backend_server["Express server<br/>[server.js]"]
  node_auth_routes["Auth routes<br/>[auth.js]"]
  node_user_model[("User model<br/>[User.js]")]
end

node_user(("User"))
node_gemini_api{{"Google Gemini API"}}

node_user -->|"uses"| node_app
node_app -->|"renders"| node_dashboard
node_app -->|"routes to"| node_ai_workbench
node_app -->|"routes to"| node_generator
node_app -->|"routes to"| node_scanner
node_app -->|"routes to"| node_global_map
node_app -->|"renders"| node_chatbot
node_app -->|"renders"| node_translator
node_app -->|"fetches and updates"| node_contract_service
node_contract_service -->|"reads"| node_mock_data
node_dashboard -->|"opens"| node_contract_details
node_dashboard -->|"renders"| node_distribution
node_global_map -->|"opens"| node_contract_details
node_ai_workbench -->|"requests analysis"| node_gemini
node_ai_workbench -->|"shows results"| node_risk_result
node_generator -->|"requests generation"| node_gemini
node_scanner -->|"captures frames"| node_camera_hook
node_scanner -->|"requests OCR"| node_gemini
node_chatbot -->|"requests replies"| node_gemini
node_translator -->|"requests translation"| node_gemini
node_gemini -->|"calls"| node_gemini_api
node_user -->|"authenticates"| node_auth_pages
node_app -->|"shows registration"| node_register_page
node_auth_pages -->|"submits credentials"| node_auth_service
node_register_page -->|"submits registration"| node_auth_service
node_auth_service -->|"sends auth requests"| node_auth_routes
node_backend_server -->|"mounts routes"| node_auth_routes
node_auth_routes -->|"queries users"| node_user_model

click node_app "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/App.tsx"
click node_dashboard "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/Dashboard.tsx"
click node_contract_service "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/services/contractService.ts"
click node_mock_data "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/data/mockData.ts"
click node_contract_details "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/shared/ContractDetailModal.tsx"
click node_distribution "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/ContractDistributionChart.tsx"
click node_global_map "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/GlobalContractsMap.tsx"
click node_ai_workbench "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/AIWorkbench.tsx"
click node_risk_result "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/shared/RiskAnalysisResult.tsx"
click node_generator "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/ContractGenerator.tsx"
click node_scanner "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/CameraScanner.tsx"
click node_camera_hook "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/hooks/useCamera.ts"
click node_chatbot "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/Chatbot.tsx"
click node_translator "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/shared/TranslationModal.tsx"
click node_gemini "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/services/geminiService.ts"
click node_auth_pages "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/LoginPage.tsx"
click node_register_page "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/RegisterPage.tsx"
click node_auth_service "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/services/authService.ts"
click node_backend_server "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/backend/server.js"
click node_auth_routes "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/backend/routes/auth.js"
click node_user_model "https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/backend/models/User.js"

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_app,node_user toneBlue
class node_dashboard,node_contract_service,node_mock_data,node_contract_details,node_distribution,node_global_map toneAmber
class node_ai_workbench,node_risk_result,node_generator,node_scanner,node_camera_hook,node_chatbot,node_translator,node_gemini,node_gemini_api toneMint
class node_auth_pages,node_register_page,node_auth_service,node_backend_server,node_auth_routes,node_user_model toneRose
```

## Components

### Application shell

- [App and navigation](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/App.tsx): `App.tsx`

### Contract workspace

- [Dashboard](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/Dashboard.tsx): `components/Dashboard.tsx`
- [Contract service](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/services/contractService.ts): `services/contractService.ts`
- [Prototype contract data](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/data/mockData.ts): `data/mockData.ts`
- [Contract details](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/shared/ContractDetailModal.tsx): `components/shared/ContractDetailModal.tsx`
- [Distribution chart](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/ContractDistributionChart.tsx): `components/ContractDistributionChart.tsx`
- [Global contracts map](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/GlobalContractsMap.tsx): `components/GlobalContractsMap.tsx`

### AI tools

- [AI workbench](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/AIWorkbench.tsx): `components/AIWorkbench.tsx`
- [Risk analysis result](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/shared/RiskAnalysisResult.tsx): `components/shared/RiskAnalysisResult.tsx`
- [Contract generator](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/ContractGenerator.tsx): `components/ContractGenerator.tsx`
- [Camera scanner](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/CameraScanner.tsx): `components/CameraScanner.tsx`
- [Camera capture](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/hooks/useCamera.ts): `hooks/useCamera.ts`
- [AI chatbot](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/Chatbot.tsx): `components/Chatbot.tsx`
- [Translation](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/shared/TranslationModal.tsx): `components/shared/TranslationModal.tsx`
- [Gemini service](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/services/geminiService.ts): `services/geminiService.ts`

### Identity services

- [Login and registration](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/LoginPage.tsx): `components/LoginPage.tsx`
- [Registration page](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/components/RegisterPage.tsx): `components/RegisterPage.tsx`
- [Auth service](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/services/authService.ts): `services/authService.ts`
- [Express server](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/backend/server.js): `backend/server.js`
- [Auth routes](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/backend/routes/auth.js): `backend/routes/auth.js`
- [User model](https://github.com/priyadharshinik15/astra-lex-analyser/blob/main/backend/models/User.js): `backend/models/User.js`

### Other components

- **User**
- **Google Gemini API**

## Connections

- User → App and navigation: uses (evidence: `README.md`)
- App and navigation → Dashboard: renders (evidence: `App.tsx`)
- App and navigation → AI workbench: routes to (evidence: `App.tsx`)
- App and navigation → Contract generator: routes to (evidence: `App.tsx`)
- App and navigation → Camera scanner: routes to (evidence: `App.tsx`)
- App and navigation → Global contracts map: routes to (evidence: `App.tsx`)
- App and navigation → AI chatbot: renders (evidence: `App.tsx`)
- App and navigation → Translation: renders (evidence: `App.tsx`)
- App and navigation → Contract service: fetches and updates (evidence: `App.tsx`)
- Contract service → Prototype contract data: reads (evidence: `services/contractService.ts`)
- Dashboard → Contract details: opens (evidence: `components/Dashboard.tsx`)
- Dashboard → Distribution chart: renders (evidence: `components/Dashboard.tsx`)
- Global contracts map → Contract details: opens (evidence: `components/GlobalContractsMap.tsx`)
- AI workbench → Gemini service: requests analysis (evidence: `components/AIWorkbench.tsx`)
- AI workbench → Risk analysis result: shows results (evidence: `components/AIWorkbench.tsx`)
- Contract generator → Gemini service: requests generation (evidence: `components/ContractGenerator.tsx`)
- Camera scanner → Camera capture: captures frames (evidence: `components/CameraScanner.tsx`)
- Camera scanner → Gemini service: requests OCR (evidence: `components/CameraScanner.tsx`)
- AI chatbot → Gemini service: requests replies (evidence: `components/Chatbot.tsx`)
- Translation → Gemini service: requests translation (evidence: `components/shared/TranslationModal.tsx`)
- Gemini service → Google Gemini API: calls (evidence: `services/geminiService.ts`)
- User → Login and registration: authenticates (evidence: `README.md`)
- App and navigation → Registration page: shows registration (evidence: `App.tsx`)
- Login and registration → Auth service: submits credentials (evidence: `services/authService.ts`)
- Registration page → Auth service: submits registration (evidence: `services/authService.ts`)
- Auth service → Auth routes: sends auth requests (evidence: `services/authService.ts`)
- Express server → Auth routes: mounts routes (evidence: `backend/server.js`)
- Auth routes → User model: queries users (evidence: `backend/routes/auth.js`)
