# akprasad614/apniko architecture

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

- Interactive diagram: https://gitdiagram.com/akprasad614/apniko
- Repository: https://github.com/akprasad614/apniko

## Overview

Apniko is a neighbourhood-commerce platform: customers discover nearby grocery shops and order essentials, while shopkeepers manage catalogue, stock and orders. The frontend routes users into customer and shopkeeper experiences; the backend provides authentication, marketplace, order, payment, delivery, analytics and administration capabilities. The order service coordinates order state and inventory-sensitive work. Several backend routes and integrations are documented by module names or the README rather than inspected source, so those connections are omitted or marked unverified.

Main entry points: [`frontend/src/features/shopkeeper/ShopkeeperDashboard.tsx`](https://github.com/akprasad614/apniko/blob/main/frontend/src/features/shopkeeper/ShopkeeperDashboard.tsx) (Shopkeeper dashboard), [`frontend/src/app/App.tsx`](https://github.com/akprasad614/apniko/blob/main/frontend/src/app/App.tsx) (App routing), [`frontend/src/features/customer/CustomerStorefront.tsx`](https://github.com/akprasad614/apniko/blob/main/frontend/src/features/customer/CustomerStorefront.tsx) (Customer storefront), [`src/main/java/com/localcart/service/OrderService.java`](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/OrderService.java) (Order lifecycle)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_app["App routing<br/>[App.tsx]"]
  node_authui["Session and auth UI<br/>[AuthProvider.tsx]"]
  node_storefront["Customer storefront"]
  node_customerorders["Customer orders UI<br/>[CustomerOrders.tsx]"]
  node_shopdashboard["Shopkeeper dashboard"]
  node_webapi["API client<br/>[api.ts]"]
end

subgraph group_commerce["Commerce services"]
  node_marketplace["Marketplace discovery"]
  node_orders["Order lifecycle<br/>[OrderService.java]"]
  node_ordercontroller["Order endpoints"]
  node_deliverycontroller["Delivery endpoints"]
  node_orderdb[("Order records")]
  node_payments["Payment processing"]
  node_paymentcontroller["Payment endpoints"]
  node_gateway["Razorpay gateway"]
end

subgraph group_operations["Shop operations"]
  node_inventory["Shop inventory"]
  node_inventorydb[("Inventory records")]
  node_shopops["Shop and product management<br/>[ShopService.java]"]
  node_analytics["Shop analytics"]
  node_insights["Demand insights"]
end

subgraph group_platform["Platform services"]
  node_auth["Authentication<br/>[AuthService.java]"]
  node_authcontroller["Auth endpoints"]
  node_users[("User records")]
  node_adminservice["Admin management<br/>[AdminService.java]"]
  node_notifications["Notifications"]
end

node_customer(("Customer"))
node_shopkeeper(("Shopkeeper"))
node_delivery(("Delivery partner"))
node_administrator(("Administrator"))
node_mysql[("MySQL")]

node_customer -->|"uses"| node_app
node_shopkeeper -->|"uses"| node_app
node_app -->|"provides session"| node_authui
node_app -->|"routes to"| node_storefront
node_app -->|"routes to"| node_shopdashboard
node_storefront -->|"requests data"| node_webapi
node_storefront -->|"renders"| node_customerorders
node_shopdashboard -->|"requests data"| node_webapi
node_authui -->|"sends auth"| node_webapi
node_webapi -.->|"calls backend"| node_authcontroller
node_authcontroller -.->|"delegates auth"| node_auth
node_auth -->|"reads and saves"| node_users
node_auth -.->|"persists users"| node_mysql
node_storefront -.->|"loads marketplace"| node_marketplace
node_marketplace -.->|"searches listings"| node_inventorydb
node_inventory -.->|"reads and updates"| node_inventorydb
node_ordercontroller -->|"delegates orders"| node_orders
node_deliverycontroller -->|"delegates delivery"| node_orders
node_orders -.->|"reads and saves"| node_orderdb
node_orders -.->|"checks stock"| node_inventorydb
node_paymentcontroller -.->|"delegates payment"| node_payments
node_payments -->|"loads orders"| node_orderdb
node_payments -.->|"uses gateway"| node_gateway
node_shopdashboard -.->|"manages shop"| node_shopops
node_shopdashboard -.->|"manages stock"| node_inventory
node_shopdashboard -.->|"views analytics"| node_analytics
node_shopdashboard -.->|"views forecasts"| node_insights
node_administrator -.->|"manages platform"| node_adminservice
node_delivery -.->|"handles deliveries"| node_deliverycontroller
node_administrator -.->|"uses administration"| node_adminservice

click node_app "https://github.com/akprasad614/apniko/blob/main/frontend/src/app/App.tsx"
click node_authui "https://github.com/akprasad614/apniko/blob/main/frontend/src/auth/AuthProvider.tsx"
click node_storefront "https://github.com/akprasad614/apniko/blob/main/frontend/src/features/customer/CustomerStorefront.tsx"
click node_customerorders "https://github.com/akprasad614/apniko/blob/main/frontend/src/features/customer/CustomerOrders.tsx"
click node_shopdashboard "https://github.com/akprasad614/apniko/blob/main/frontend/src/features/shopkeeper/ShopkeeperDashboard.tsx"
click node_webapi "https://github.com/akprasad614/apniko/blob/main/frontend/src/lib/api.ts"
click node_auth "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/AuthService.java"
click node_authcontroller "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/controller/AuthController.java"
click node_users "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/repository/UserRepository.java"
click node_marketplace "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/CustomerMarketplaceService.java"
click node_inventory "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/ShopInventoryService.java"
click node_inventorydb "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/repository/ShopInventoryRepository.java"
click node_orders "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/OrderService.java"
click node_ordercontroller "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/controller/OrderController.java"
click node_deliverycontroller "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/controller/DeliveryOrderController.java"
click node_orderdb "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/repository/OrderRepository.java"
click node_payments "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/PaymentService.java"
click node_paymentcontroller "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/controller/PaymentController.java"
click node_gateway "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/RazorpayGatewayClient.java"
click node_shopops "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/ShopService.java"
click node_analytics "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/AnalyticsService.java"
click node_insights "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/ShopkeeperAiInsightsService.java"
click node_adminservice "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/AdminService.java"
click node_notifications "https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/NotificationService.java"

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_authui,node_storefront,node_customerorders,node_shopdashboard,node_webapi toneBlue
class node_marketplace,node_orders,node_ordercontroller,node_deliverycontroller,node_orderdb,node_payments,node_paymentcontroller,node_gateway,node_mysql toneAmber
class node_inventory,node_inventorydb,node_shopops,node_analytics,node_insights toneMint
class node_auth,node_authcontroller,node_users,node_adminservice,node_notifications toneRose
class node_customer,node_shopkeeper,node_delivery,node_administrator toneIndigo
```

## Components

### Web application

- [App routing](https://github.com/akprasad614/apniko/blob/main/frontend/src/app/App.tsx): `frontend/src/app/App.tsx`
- [Session and auth UI](https://github.com/akprasad614/apniko/blob/main/frontend/src/auth/AuthProvider.tsx): `frontend/src/auth/AuthProvider.tsx`
- [Customer storefront](https://github.com/akprasad614/apniko/blob/main/frontend/src/features/customer/CustomerStorefront.tsx): `frontend/src/features/customer/CustomerStorefront.tsx`
- [Customer orders UI](https://github.com/akprasad614/apniko/blob/main/frontend/src/features/customer/CustomerOrders.tsx): `frontend/src/features/customer/CustomerOrders.tsx`
- [Shopkeeper dashboard](https://github.com/akprasad614/apniko/blob/main/frontend/src/features/shopkeeper/ShopkeeperDashboard.tsx): `frontend/src/features/shopkeeper/ShopkeeperDashboard.tsx`
- [API client](https://github.com/akprasad614/apniko/blob/main/frontend/src/lib/api.ts): `frontend/src/lib/api.ts`

### Commerce services

- [Marketplace discovery](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/CustomerMarketplaceService.java): `src/main/java/com/localcart/service/CustomerMarketplaceService.java`
- [Order lifecycle](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/OrderService.java): `src/main/java/com/localcart/service/OrderService.java`
- [Order endpoints](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/controller/OrderController.java): `src/main/java/com/localcart/controller/OrderController.java`
- [Delivery endpoints](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/controller/DeliveryOrderController.java): `src/main/java/com/localcart/controller/DeliveryOrderController.java`
- [Order records](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/repository/OrderRepository.java): `src/main/java/com/localcart/repository/OrderRepository.java`
- [Payment processing](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/PaymentService.java): `src/main/java/com/localcart/service/PaymentService.java`
- [Payment endpoints](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/controller/PaymentController.java): `src/main/java/com/localcart/controller/PaymentController.java`
- [Razorpay gateway](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/RazorpayGatewayClient.java): `src/main/java/com/localcart/service/RazorpayGatewayClient.java`

### Shop operations

- [Shop inventory](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/ShopInventoryService.java): `src/main/java/com/localcart/service/ShopInventoryService.java`
- [Inventory records](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/repository/ShopInventoryRepository.java): `src/main/java/com/localcart/repository/ShopInventoryRepository.java`
- [Shop and product management](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/ShopService.java): `src/main/java/com/localcart/service/ShopService.java`
- [Shop analytics](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/AnalyticsService.java): `src/main/java/com/localcart/service/AnalyticsService.java`
- [Demand insights](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/ShopkeeperAiInsightsService.java): `src/main/java/com/localcart/service/ShopkeeperAiInsightsService.java`

### Platform services

- [Authentication](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/AuthService.java): `src/main/java/com/localcart/service/AuthService.java`
- [Auth endpoints](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/controller/AuthController.java): `src/main/java/com/localcart/controller/AuthController.java`
- [User records](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/repository/UserRepository.java): `src/main/java/com/localcart/repository/UserRepository.java`
- [Admin management](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/AdminService.java): `src/main/java/com/localcart/service/AdminService.java`
- [Notifications](https://github.com/akprasad614/apniko/blob/main/src/main/java/com/localcart/service/NotificationService.java): `src/main/java/com/localcart/service/NotificationService.java`

### Other components

- **Customer**
- **Shopkeeper**
- **Delivery partner**
- **Administrator**
- **MySQL**

## Connections

- Customer → App routing: uses
- Shopkeeper → App routing: uses
- App routing → Session and auth UI: provides session (evidence: `frontend/src/app/App.tsx`)
- App routing → Customer storefront: routes to (evidence: `frontend/src/app/App.tsx`)
- App routing → Shopkeeper dashboard: routes to (evidence: `frontend/src/app/App.tsx`)
- Customer storefront → API client: requests data (evidence: `frontend/src/features/customer/CustomerStorefront.tsx`)
- Customer storefront → Customer orders UI: renders (evidence: `frontend/src/features/customer/CustomerStorefront.tsx`)
- Shopkeeper dashboard → API client: requests data (evidence: `frontend/src/features/shopkeeper/ShopkeeperDashboard.tsx`)
- Session and auth UI → API client: sends auth (evidence: `frontend/src/auth/AuthProvider.tsx`)
- API client → Auth endpoints: calls backend
- Auth endpoints → Authentication: delegates auth
- Authentication → User records: reads and saves (evidence: `src/main/java/com/localcart/service/AuthService.java`)
- Authentication → MySQL: persists users
- Customer storefront → Marketplace discovery: loads marketplace
- Marketplace discovery → Inventory records: searches listings
- Shop inventory → Inventory records: reads and updates (evidence: `src/main/java/com/localcart/service/ShopInventoryService.java`)
- Order endpoints → Order lifecycle: delegates orders (evidence: `src/main/java/com/localcart/controller/OrderController.java`)
- Delivery endpoints → Order lifecycle: delegates delivery (evidence: `src/main/java/com/localcart/controller/DeliveryOrderController.java`)
- Order lifecycle → Order records: reads and saves (evidence: `src/main/java/com/localcart/service/OrderService.java`)
- Order lifecycle → Inventory records: checks stock (evidence: `src/main/java/com/localcart/service/OrderService.java`)
- Payment endpoints → Payment processing: delegates payment
- Payment processing → Order records: loads orders (evidence: `src/main/java/com/localcart/service/PaymentService.java`)
- Payment processing → Razorpay gateway: uses gateway (evidence: `src/main/java/com/localcart/service/PaymentService.java`)
- Shopkeeper dashboard → Shop and product management: manages shop
- Shopkeeper dashboard → Shop inventory: manages stock
- Shopkeeper dashboard → Shop analytics: views analytics
- Shopkeeper dashboard → Demand insights: views forecasts
- Administrator → Admin management: manages platform
- Delivery partner → Delivery endpoints: handles deliveries
- Administrator → Admin management: uses administration
