# jahnutanai/lrms architecture

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

- Interactive diagram: https://gitdiagram.com/jahnutanai/lrms
- Repository: https://github.com/jahnutanai/lrms

## Overview

This is a browser-based loyalty and rewards operations dashboard for administrators. Users sign in, navigate an operational workspace, configure campaigns and reward programs, manage merchants and program reference data, then review customer reward activity, analytics, reports, and system operations. The sampled campaign screens use local component state and hard-coded example data; no backend, persistent store, or service integrations are evidenced. Other capabilities are represented by routed page modules, but their internal behavior was not sampled, so their wiring beyond routing is left unspecified.

Main entry points: [`src/app/App.tsx`](https://github.com/jahnutanai/lrms/blob/main/src/app/App.tsx) (Routes), [`src/app/pages/CampaignListing.tsx`](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/CampaignListing.tsx) (Campaign listing), [`src/app/components/layout/MainLayout.tsx`](https://github.com/jahnutanai/lrms/blob/main/src/app/components/layout/MainLayout.tsx) (Workspace layout), [`src/main.tsx`](https://github.com/jahnutanai/lrms/blob/main/src/main.tsx) (Application entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_shell["App shell"]
  node_entry["Application entry<br/>[main.tsx]"]
  node_router["Routes<br/>[App.tsx]"]
  node_layout["Workspace layout<br/>[MainLayout.tsx]"]
  node_header["Header<br/>[Header.tsx]"]
  node_navigation["Sidebar navigation<br/>[Sidebar.tsx]"]
  node_login["Login<br/>[LoginPage.tsx]"]
end

subgraph group_campaigns["Campaign operations"]
  node_campaignlist["Campaign listing"]
  node_campaigncreate["Campaign creation"]
  node_campaigndetail["Campaign details"]
  node_campaignedit["Campaign editing<br/>[CampaignEdit.tsx]"]
end

subgraph group_program["Program administration"]
  node_cashback["Cashback configuration<br/>[CashbackConfig.tsx]"]
  node_points["Points configuration<br/>[PointsConfig.tsx]"]
  node_vouchers["Voucher management"]
  node_tiers["Tier management<br/>[TierManagement.tsx]"]
  node_channels["Channel management"]
  node_transactiontypes["Transaction types"]
  node_mcc["MCC management<br/>[MCCManagement.tsx]"]
  node_events["Non-transaction events"]
  node_merchants["Merchant listing"]
  node_merchantdetail["Merchant details"]
end

subgraph group_insights["Monitoring and insights"]
  node_dashboard["Overview dashboard<br/>[Dashboard.tsx]"]
  node_ledger["Customer rewards ledger"]
  node_redemptions["Redemption monitoring"]
  node_analytics["Analytics dashboard"]
  node_reports["Reports<br/>[ReportsPage.tsx]"]
end

subgraph group_admin["System administration"]
  node_audit["Audit logs<br/>[AuditLogs.tsx]"]
  node_notifications["Notifications"]
  node_users["User roles"]
  node_system["System configuration"]
end

node_admin(("Administrator"))

node_admin -->|"opens"| node_entry
node_entry -->|"renders"| node_router
node_router -->|"routes"| node_login
node_router -->|"routes"| node_layout
node_layout -->|"renders"| node_header
node_layout -->|"renders"| node_navigation
node_router -->|"routes"| node_dashboard
node_router -->|"routes"| node_campaignlist
node_router -->|"routes"| node_campaigncreate
node_router -->|"routes"| node_campaigndetail
node_router -->|"routes"| node_campaignedit
node_router -->|"routes"| node_cashback
node_router -->|"routes"| node_points
node_router -->|"routes"| node_vouchers
node_router -->|"routes"| node_tiers
node_router -->|"routes"| node_channels
node_router -->|"routes"| node_transactiontypes
node_router -->|"routes"| node_mcc
node_router -->|"routes"| node_events
node_router -->|"routes"| node_merchants
node_router -->|"routes"| node_merchantdetail
node_router -->|"routes"| node_ledger
node_router -->|"routes"| node_redemptions
node_router -->|"routes"| node_analytics
node_router -->|"routes"| node_reports
node_router -->|"routes"| node_audit
node_router -->|"routes"| node_notifications
node_router -->|"routes"| node_users
node_router -->|"routes"| node_system
node_campaignlist -->|"links to"| node_campaigncreate
node_campaignlist -->|"links to"| node_campaigndetail
node_campaignlist -->|"links to"| node_campaignedit

click node_entry "https://github.com/jahnutanai/lrms/blob/main/src/main.tsx"
click node_router "https://github.com/jahnutanai/lrms/blob/main/src/app/App.tsx"
click node_layout "https://github.com/jahnutanai/lrms/blob/main/src/app/components/layout/MainLayout.tsx"
click node_header "https://github.com/jahnutanai/lrms/blob/main/src/app/components/layout/Header.tsx"
click node_navigation "https://github.com/jahnutanai/lrms/blob/main/src/app/components/layout/Sidebar.tsx"
click node_login "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/LoginPage.tsx"
click node_dashboard "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/Dashboard.tsx"
click node_campaignlist "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/CampaignListing.tsx"
click node_campaigncreate "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/CampaignCreation.tsx"
click node_campaigndetail "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/CampaignDetails.tsx"
click node_campaignedit "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/CampaignEdit.tsx"
click node_cashback "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/CashbackConfig.tsx"
click node_points "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/PointsConfig.tsx"
click node_vouchers "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/VoucherManagement.tsx"
click node_tiers "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/TierManagement.tsx"
click node_channels "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/ChannelManagement.tsx"
click node_transactiontypes "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/TransactionTypeManagement.tsx"
click node_mcc "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/MCCManagement.tsx"
click node_events "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/NonTransactionalEvents.tsx"
click node_merchants "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/MerchantListing.tsx"
click node_merchantdetail "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/MerchantDetails.tsx"
click node_ledger "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/CustomerRewardsLedger.tsx"
click node_redemptions "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/RewardRedemptionMonitoring.tsx"
click node_analytics "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/AnalyticsDashboard.tsx"
click node_reports "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/ReportsPage.tsx"
click node_audit "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/AuditLogs.tsx"
click node_notifications "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/NotificationCenter.tsx"
click node_users "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/UserRoleManagement.tsx"
click node_system "https://github.com/jahnutanai/lrms/blob/main/src/app/pages/SystemConfiguration.tsx"

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_entry,node_router,node_layout,node_header,node_navigation,node_login toneBlue
class node_campaignlist,node_campaigncreate,node_campaigndetail,node_campaignedit toneAmber
class node_cashback,node_points,node_vouchers,node_tiers,node_channels,node_transactiontypes,node_mcc,node_events,node_merchants,node_merchantdetail toneMint
class node_dashboard,node_ledger,node_redemptions,node_analytics,node_reports toneRose
class node_audit,node_notifications,node_users,node_system,node_admin toneIndigo
```

## Components

### App shell

- [Application entry](https://github.com/jahnutanai/lrms/blob/main/src/main.tsx): `src/main.tsx`
- [Routes](https://github.com/jahnutanai/lrms/blob/main/src/app/App.tsx): `src/app/App.tsx`
- [Workspace layout](https://github.com/jahnutanai/lrms/blob/main/src/app/components/layout/MainLayout.tsx): `src/app/components/layout/MainLayout.tsx`
- [Header](https://github.com/jahnutanai/lrms/blob/main/src/app/components/layout/Header.tsx): `src/app/components/layout/Header.tsx`
- [Sidebar navigation](https://github.com/jahnutanai/lrms/blob/main/src/app/components/layout/Sidebar.tsx): `src/app/components/layout/Sidebar.tsx`
- [Login](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/LoginPage.tsx): `src/app/pages/LoginPage.tsx`

### Campaign operations

- [Campaign listing](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/CampaignListing.tsx): `src/app/pages/CampaignListing.tsx`
- [Campaign creation](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/CampaignCreation.tsx): `src/app/pages/CampaignCreation.tsx`
- [Campaign details](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/CampaignDetails.tsx): `src/app/pages/CampaignDetails.tsx`
- [Campaign editing](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/CampaignEdit.tsx): `src/app/pages/CampaignEdit.tsx`

### Program administration

- [Cashback configuration](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/CashbackConfig.tsx): `src/app/pages/CashbackConfig.tsx`
- [Points configuration](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/PointsConfig.tsx): `src/app/pages/PointsConfig.tsx`
- [Voucher management](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/VoucherManagement.tsx): `src/app/pages/VoucherManagement.tsx`
- [Tier management](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/TierManagement.tsx): `src/app/pages/TierManagement.tsx`
- [Channel management](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/ChannelManagement.tsx): `src/app/pages/ChannelManagement.tsx`
- [Transaction types](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/TransactionTypeManagement.tsx): `src/app/pages/TransactionTypeManagement.tsx`
- [MCC management](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/MCCManagement.tsx): `src/app/pages/MCCManagement.tsx`
- [Non-transaction events](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/NonTransactionalEvents.tsx): `src/app/pages/NonTransactionalEvents.tsx`
- [Merchant listing](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/MerchantListing.tsx): `src/app/pages/MerchantListing.tsx`
- [Merchant details](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/MerchantDetails.tsx): `src/app/pages/MerchantDetails.tsx`

### Monitoring and insights

- [Overview dashboard](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/Dashboard.tsx): `src/app/pages/Dashboard.tsx`
- [Customer rewards ledger](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/CustomerRewardsLedger.tsx): `src/app/pages/CustomerRewardsLedger.tsx`
- [Redemption monitoring](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/RewardRedemptionMonitoring.tsx): `src/app/pages/RewardRedemptionMonitoring.tsx`
- [Analytics dashboard](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/AnalyticsDashboard.tsx): `src/app/pages/AnalyticsDashboard.tsx`
- [Reports](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/ReportsPage.tsx): `src/app/pages/ReportsPage.tsx`

### System administration

- [Audit logs](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/AuditLogs.tsx): `src/app/pages/AuditLogs.tsx`
- [Notifications](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/NotificationCenter.tsx): `src/app/pages/NotificationCenter.tsx`
- [User roles](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/UserRoleManagement.tsx): `src/app/pages/UserRoleManagement.tsx`
- [System configuration](https://github.com/jahnutanai/lrms/blob/main/src/app/pages/SystemConfiguration.tsx): `src/app/pages/SystemConfiguration.tsx`

### Other components

- **Administrator**

## Connections

- Administrator → Application entry: opens
- Application entry → Routes: renders
- Routes → Login: routes
- Routes → Workspace layout: routes
- Workspace layout → Header: renders
- Workspace layout → Sidebar navigation: renders
- Routes → Overview dashboard: routes
- Routes → Campaign listing: routes
- Routes → Campaign creation: routes
- Routes → Campaign details: routes
- Routes → Campaign editing: routes
- Routes → Cashback configuration: routes
- Routes → Points configuration: routes
- Routes → Voucher management: routes
- Routes → Tier management: routes
- Routes → Channel management: routes
- Routes → Transaction types: routes
- Routes → MCC management: routes
- Routes → Non-transaction events: routes
- Routes → Merchant listing: routes
- Routes → Merchant details: routes
- Routes → Customer rewards ledger: routes
- Routes → Redemption monitoring: routes
- Routes → Analytics dashboard: routes
- Routes → Reports: routes
- Routes → Audit logs: routes
- Routes → Notifications: routes
- Routes → User roles: routes
- Routes → System configuration: routes
- Campaign listing → Campaign creation: links to
- Campaign listing → Campaign details: links to
- Campaign listing → Campaign editing: links to
