# nithishsenthil2025/pluten architecture

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

- Interactive diagram: https://gitdiagram.com/nithishsenthil2025/pluten
- Repository: https://github.com/nithishsenthil2025/pluten

## Overview

Pluten is a digital-products storefront and portfolio platform, with customer and admin experiences backed by an Express API. The main purchase flow runs from product checkout through server-side pricing and Cashfree payment, then records fulfillment and grants library access. Portfolio publishing and public viewing, account/library features, support, offers, and analytics/admin tools are distinct product areas. The README is empty, and several sources are only partially sampled, so the graph omits uncertain internal wiring while retaining major capabilities visible in the tree.

Main entry points: [`frontend/src/lib/apiClient.ts`](https://github.com/nithishsenthil2025/pluten/blob/main/frontend/src/lib/apiClient.ts) (Frontend API client), [`backend/server.js`](https://github.com/nithishsenthil2025/pluten/blob/main/backend/server.js) (API server), [`backend/controllers/paymentController.js`](https://github.com/nithishsenthil2025/pluten/blob/main/backend/controllers/paymentController.js) (Payment controller), [`backend/lib/prisma.js`](https://github.com/nithishsenthil2025/pluten/blob/main/backend/lib/prisma.js) (Application database)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_storefront["Storefront<br/>[page.tsx]"]
  node_product["Product checkout"]
  node_library["Customer library<br/>[page.tsx]"]
  node_adminui["Admin console<br/>[page.tsx]"]
  node_portfolio_ui["Portfolio editor<br/>[page.tsx]"]
  node_public_portfolio["Public portfolio<br/>[page.tsx]"]
  node_frontend_api["Frontend API client<br/>[apiClient.ts]"]
end

subgraph group_commerce["Commerce API"]
  node_api["API server<br/>[server.js]"]
  node_payment_routes["Payment routes<br/>[paymentRoutes.js]"]
  node_payment["Payment controller"]
  node_pricing["Offer pricing<br/>[pricingService.js]"]
  node_fulfillment["Order fulfillment"]
  node_entitlement["Entitlements"]
  node_product_routes["Product routes<br/>[productRoutes.js]"]
end

subgraph group_creation["Portfolio platform"]
  node_portfolio_routes["Portfolio routes<br/>[portfolioRoutes.js]"]
  node_portfolio_controller["Portfolio management"]
  node_portfolio_service["Portfolio service"]
end

subgraph group_operations["Operations"]
  node_admin_routes["Admin routes<br/>[adminRoutes.js]"]
  node_admin_controller["Admin analytics<br/>[adminController.js]"]
  node_analytics_routes["Analytics routes<br/>[analyticsRoutes.js]"]
  node_auth_routes["Authentication routes<br/>[authRoutes.js]"]
  node_support_routes["Support routes<br/>[supportRoutes.js]"]
end

node_customer(("Customer"))
node_admin(("Administrator"))
node_cashfree{{"Cashfree gateway"}}
node_database[("Application database<br/>[prisma.js]")]
node_cashfree_ui{{"Cashfree checkout"}}

node_customer -->|"browses"| node_storefront
node_storefront -->|"opens product"| node_product
node_customer -->|"checks out"| node_product
node_product -->|"requests quote"| node_frontend_api
node_product -->|"creates order"| node_frontend_api
node_frontend_api -->|"sends API request"| node_api
node_api -->|"mounts routes"| node_payment_routes
node_payment_routes -->|"dispatches"| node_payment
node_payment -->|"calculates price"| node_pricing
node_payment -->|"reads and writes"| node_database
node_payment -->|"creates payment"| node_cashfree
node_cashfree_ui -->|"processes checkout"| node_cashfree
node_payment -->|"fulfills paid order"| node_fulfillment
node_fulfillment -->|"updates order"| node_database
node_fulfillment -->|"grants access"| node_entitlement
node_entitlement -->|"stores entitlement"| node_database
node_library -->|"loads library"| node_frontend_api
node_admin -->|"manages platform"| node_adminui
node_adminui -->|"requests admin data"| node_frontend_api
node_frontend_api -->|"sends API request"| node_admin_routes
node_admin_routes -->|"dispatches"| node_admin_controller
node_admin_controller -->|"queries metrics"| node_database
node_customer -->|"creates portfolio"| node_portfolio_ui
node_portfolio_ui -->|"sends portfolio request"| node_frontend_api
node_frontend_api -->|"sends API request"| node_portfolio_routes
node_portfolio_routes -->|"dispatches"| node_portfolio_controller
node_portfolio_controller -->|"uses service"| node_portfolio_service
node_portfolio_controller -->|"reads and writes"| node_database
node_public_portfolio -->|"loads public portfolio"| node_frontend_api
node_frontend_api -->|"sends API request"| node_product_routes
node_api -->|"mounts routes"| node_product_routes
node_api -->|"mounts routes"| node_auth_routes
node_api -->|"mounts routes"| node_analytics_routes
node_api -->|"mounts routes"| node_support_routes

click node_storefront "https://github.com/nithishsenthil2025/pluten/blob/main/frontend/src/app/page.tsx"
click node_product "https://github.com/nithishsenthil2025/pluten/blob/main/frontend/src/app/product/%5Bid%5D/ProductDetailClient.tsx"
click node_library "https://github.com/nithishsenthil2025/pluten/blob/main/frontend/src/app/library/page.tsx"
click node_adminui "https://github.com/nithishsenthil2025/pluten/blob/main/frontend/src/app/admin/page.tsx"
click node_portfolio_ui "https://github.com/nithishsenthil2025/pluten/blob/main/frontend/src/app/portfolio/page.tsx"
click node_public_portfolio "https://github.com/nithishsenthil2025/pluten/blob/main/frontend/src/app/p/%5Busername%5D/page.tsx"
click node_api "https://github.com/nithishsenthil2025/pluten/blob/main/backend/server.js"
click node_payment_routes "https://github.com/nithishsenthil2025/pluten/blob/main/backend/routes/paymentRoutes.js"
click node_payment "https://github.com/nithishsenthil2025/pluten/blob/main/backend/controllers/paymentController.js"
click node_pricing "https://github.com/nithishsenthil2025/pluten/blob/main/backend/services/pricingService.js"
click node_fulfillment "https://github.com/nithishsenthil2025/pluten/blob/main/backend/services/orderFulfillmentService.js"
click node_entitlement "https://github.com/nithishsenthil2025/pluten/blob/main/backend/services/entitlementService.js"
click node_portfolio_routes "https://github.com/nithishsenthil2025/pluten/blob/main/backend/routes/portfolioRoutes.js"
click node_portfolio_controller "https://github.com/nithishsenthil2025/pluten/blob/main/backend/controllers/portfolioController.js"
click node_portfolio_service "https://github.com/nithishsenthil2025/pluten/blob/main/backend/services/portfolioService.js"
click node_admin_routes "https://github.com/nithishsenthil2025/pluten/blob/main/backend/routes/adminRoutes.js"
click node_admin_controller "https://github.com/nithishsenthil2025/pluten/blob/main/backend/controllers/adminController.js"
click node_analytics_routes "https://github.com/nithishsenthil2025/pluten/blob/main/backend/routes/analyticsRoutes.js"
click node_product_routes "https://github.com/nithishsenthil2025/pluten/blob/main/backend/routes/productRoutes.js"
click node_auth_routes "https://github.com/nithishsenthil2025/pluten/blob/main/backend/routes/authRoutes.js"
click node_support_routes "https://github.com/nithishsenthil2025/pluten/blob/main/backend/routes/supportRoutes.js"
click node_database "https://github.com/nithishsenthil2025/pluten/blob/main/backend/lib/prisma.js"
click node_frontend_api "https://github.com/nithishsenthil2025/pluten/blob/main/frontend/src/lib/apiClient.ts"

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_storefront,node_product,node_library,node_adminui,node_portfolio_ui,node_public_portfolio,node_frontend_api toneBlue
class node_api,node_payment_routes,node_payment,node_pricing,node_fulfillment,node_entitlement,node_product_routes,node_database toneAmber
class node_portfolio_routes,node_portfolio_controller,node_portfolio_service toneMint
class node_admin_routes,node_admin_controller,node_analytics_routes,node_auth_routes,node_support_routes toneRose
class node_customer,node_admin,node_cashfree,node_cashfree_ui toneIndigo
```

## Components

### Web experience

- [Storefront](https://github.com/nithishsenthil2025/pluten/blob/main/frontend/src/app/page.tsx): `frontend/src/app/page.tsx`
- [Product checkout](https://github.com/nithishsenthil2025/pluten/blob/main/frontend/src/app/product/%5Bid%5D/ProductDetailClient.tsx): `frontend/src/app/product/[id]/ProductDetailClient.tsx`
- [Customer library](https://github.com/nithishsenthil2025/pluten/blob/main/frontend/src/app/library/page.tsx): `frontend/src/app/library/page.tsx`
- [Admin console](https://github.com/nithishsenthil2025/pluten/blob/main/frontend/src/app/admin/page.tsx): `frontend/src/app/admin/page.tsx`
- [Portfolio editor](https://github.com/nithishsenthil2025/pluten/blob/main/frontend/src/app/portfolio/page.tsx): `frontend/src/app/portfolio/page.tsx`
- [Public portfolio](https://github.com/nithishsenthil2025/pluten/blob/main/frontend/src/app/p/%5Busername%5D/page.tsx): `frontend/src/app/p/[username]/page.tsx`
- [Frontend API client](https://github.com/nithishsenthil2025/pluten/blob/main/frontend/src/lib/apiClient.ts): `frontend/src/lib/apiClient.ts`

### Commerce API

- [API server](https://github.com/nithishsenthil2025/pluten/blob/main/backend/server.js): `backend/server.js`
- [Payment routes](https://github.com/nithishsenthil2025/pluten/blob/main/backend/routes/paymentRoutes.js): `backend/routes/paymentRoutes.js`
- [Payment controller](https://github.com/nithishsenthil2025/pluten/blob/main/backend/controllers/paymentController.js): `backend/controllers/paymentController.js`
- [Offer pricing](https://github.com/nithishsenthil2025/pluten/blob/main/backend/services/pricingService.js): `backend/services/pricingService.js`
- [Order fulfillment](https://github.com/nithishsenthil2025/pluten/blob/main/backend/services/orderFulfillmentService.js): `backend/services/orderFulfillmentService.js`
- [Entitlements](https://github.com/nithishsenthil2025/pluten/blob/main/backend/services/entitlementService.js): `backend/services/entitlementService.js`
- [Product routes](https://github.com/nithishsenthil2025/pluten/blob/main/backend/routes/productRoutes.js): `backend/routes/productRoutes.js`

### Portfolio platform

- [Portfolio routes](https://github.com/nithishsenthil2025/pluten/blob/main/backend/routes/portfolioRoutes.js): `backend/routes/portfolioRoutes.js`
- [Portfolio management](https://github.com/nithishsenthil2025/pluten/blob/main/backend/controllers/portfolioController.js): `backend/controllers/portfolioController.js`
- [Portfolio service](https://github.com/nithishsenthil2025/pluten/blob/main/backend/services/portfolioService.js): `backend/services/portfolioService.js`

### Operations

- [Admin routes](https://github.com/nithishsenthil2025/pluten/blob/main/backend/routes/adminRoutes.js): `backend/routes/adminRoutes.js`
- [Admin analytics](https://github.com/nithishsenthil2025/pluten/blob/main/backend/controllers/adminController.js): `backend/controllers/adminController.js`
- [Analytics routes](https://github.com/nithishsenthil2025/pluten/blob/main/backend/routes/analyticsRoutes.js): `backend/routes/analyticsRoutes.js`
- [Authentication routes](https://github.com/nithishsenthil2025/pluten/blob/main/backend/routes/authRoutes.js): `backend/routes/authRoutes.js`
- [Support routes](https://github.com/nithishsenthil2025/pluten/blob/main/backend/routes/supportRoutes.js): `backend/routes/supportRoutes.js`

### Other components

- **Customer**
- **Administrator**
- **Cashfree gateway**
- [Application database](https://github.com/nithishsenthil2025/pluten/blob/main/backend/lib/prisma.js): `backend/lib/prisma.js`
- **Cashfree checkout**

## Connections

- Customer → Storefront: browses
- Storefront → Product checkout: opens product
- Customer → Product checkout: checks out
- Product checkout → Frontend API client: requests quote
- Product checkout → Frontend API client: creates order
- Frontend API client → API server: sends API request
- API server → Payment routes: mounts routes
- Payment routes → Payment controller: dispatches
- Payment controller → Offer pricing: calculates price
- Payment controller → Application database: reads and writes
- Payment controller → Cashfree gateway: creates payment
- Cashfree checkout → Cashfree gateway: processes checkout
- Payment controller → Order fulfillment: fulfills paid order
- Order fulfillment → Application database: updates order
- Order fulfillment → Entitlements: grants access
- Entitlements → Application database: stores entitlement
- Customer library → Frontend API client: loads library
- Administrator → Admin console: manages platform
- Admin console → Frontend API client: requests admin data
- Frontend API client → Admin routes: sends API request
- Admin routes → Admin analytics: dispatches
- Admin analytics → Application database: queries metrics
- Customer → Portfolio editor: creates portfolio
- Portfolio editor → Frontend API client: sends portfolio request
- Frontend API client → Portfolio routes: sends API request
- Portfolio routes → Portfolio management: dispatches
- Portfolio management → Portfolio service: uses service
- Portfolio management → Application database: reads and writes
- Public portfolio → Frontend API client: loads public portfolio
- Frontend API client → Product routes: sends API request
- API server → Product routes: mounts routes
- API server → Authentication routes: mounts routes
- API server → Analytics routes: mounts routes
- API server → Support routes: mounts routes
