# vcsreddy2004/pilot-terraform-project architecture

> Architecture diagram of the GitHub repository vcsreddy2004/pilot-terraform-project, 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/vcsreddy2004/pilot-terraform-project
- Repository: https://github.com/vcsreddy2004/pilot-terraform-project

## Overview

Gerado is a TypeScript/Express backend for an e-commerce workflow: clients use API routes to authenticate, browse products, manage carts, and place or track orders. The code separates HTTP controllers, domain services, repositories, and Sequelize models. Authentication’s service-to-repository behavior and several controller-to-service calls are visible in sampled source; other module internals and their integrations are inferred from the file tree, so uncertain call links are omitted.

Main entry points: [`src/routes/index.ts`](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/routes/index.ts) (API routes), [`src/server.ts`](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/server.ts) (Express server), [`src/modules/product/product.controller.ts`](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/product/product.controller.ts) (Product controller), [`src/modules/auth/auth.service.ts`](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/auth/auth.service.ts) (Auth service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API entry"]
  node_server["Express server<br/>[server.ts]"]
  node_routes["API routes<br/>[index.ts]"]
  node_auth_mw["Auth middleware<br/>[auth.middleware.ts]"]
end

subgraph group_commerce["Commerce"]
  node_product_controller["Product controller"]
  node_product_service["Product service<br/>[product.service.ts]"]
  node_product_router["Product router<br/>[product.router.ts]"]
  node_cart_controller["Cart controller<br/>[cart.controller.ts]"]
  node_cart_service["Cart service<br/>[cart.service.ts]"]
  node_cart_router["Cart router<br/>[cart.router.ts]"]
  node_order_controller["Order controller"]
  node_order_service["Order service<br/>[order.service.ts]"]
  node_order_router["Order router<br/>[order.router.ts]"]
end

subgraph group_identity["Identity"]
  node_auth_controller["Auth controller<br/>[auth.controller.ts]"]
  node_auth_service["Auth service<br/>[auth.service.ts]"]
  node_auth_repo["Auth repository<br/>[auth.repository.ts]"]
  node_auth_router["Auth router<br/>[auth.router.ts]"]
  node_user_controller["User controller<br/>[user.controller.ts]"]
  node_user_service["User service<br/>[user.service.ts]"]
  node_user_router["User router<br/>[user.router.ts]"]
end

subgraph group_data["Persistence and integrations"]
  node_models["Sequelize models<br/>[associations.ts]"]
  node_database[("MySQL database<br/>[database.ts]")]
  node_upload["Upload middleware<br/>[upload.ts]"]
  node_s3_handler["S3 handler<br/>[s3.handler.ts]"]
  node_email["Email service<br/>[email.service.ts]"]
  node_razorpay["Razorpay helper<br/>[razorpay.ts]"]
end

node_client(("API client"))
node_s3[("S3 object storage")]

node_client -->|"sends requests"| node_server
node_server -->|"mounts routes"| node_routes
node_routes -->|"dispatches auth"| node_auth_router
node_routes -->|"dispatches users"| node_user_router
node_routes -->|"dispatches products"| node_product_router
node_routes -->|"dispatches cart"| node_cart_router
node_routes -->|"dispatches orders"| node_order_router
node_auth_router -->|"dispatches handlers"| node_auth_controller
node_user_router -->|"dispatches handlers"| node_user_controller
node_product_router -->|"dispatches handlers"| node_product_controller
node_cart_router -->|"dispatches handlers"| node_cart_controller
node_order_router -->|"dispatches handlers"| node_order_controller
node_auth_controller -->|"calls"| node_auth_service
node_auth_service -->|"calls"| node_auth_repo
node_user_controller -->|"calls"| node_user_service
node_product_controller -->|"calls"| node_product_service
node_cart_controller -->|"calls"| node_cart_service
node_order_controller -->|"calls"| node_order_service
node_server -->|"authenticates connection"| node_database
node_auth_repo -->|"queries models"| node_models
node_database -->|"backs persistence"| node_models
node_product_controller -.->|"accepts files"| node_upload
node_s3_handler -->|"uploads and deletes"| node_s3
node_auth_service -.->|"sends email"| node_email
node_order_service -.->|"payment integration"| node_razorpay

click node_server "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/server.ts"
click node_routes "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/routes/index.ts"
click node_auth_mw "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/middleware/auth.middleware.ts"
click node_product_controller "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/product/product.controller.ts"
click node_product_service "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/product/product.service.ts"
click node_product_router "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/product/product.router.ts"
click node_cart_controller "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/cart/cart.controller.ts"
click node_cart_service "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/cart/cart.service.ts"
click node_cart_router "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/cart/cart.router.ts"
click node_order_controller "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/order/order.controller.ts"
click node_order_service "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/order/order.service.ts"
click node_order_router "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/order/order.router.ts"
click node_auth_controller "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/auth/auth.controller.ts"
click node_auth_service "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/auth/auth.service.ts"
click node_auth_repo "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/auth/auth.repository.ts"
click node_auth_router "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/auth/auth.router.ts"
click node_user_controller "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/user/user.controller.ts"
click node_user_service "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/user/user.service.ts"
click node_user_router "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/user/user.router.ts"
click node_models "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/models/associations.ts"
click node_database "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/config/database.ts"
click node_upload "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/middleware/upload.ts"
click node_s3_handler "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/utils/s3.handler.ts"
click node_email "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/notifications/email/email.service.ts"
click node_razorpay "https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/utils/razorpay.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_server,node_routes,node_auth_mw,node_client toneBlue
class node_product_controller,node_product_service,node_product_router,node_cart_controller,node_cart_service,node_cart_router,node_order_controller,node_order_service,node_order_router,node_s3 toneAmber
class node_auth_controller,node_auth_service,node_auth_repo,node_auth_router,node_user_controller,node_user_service,node_user_router toneMint
class node_models,node_database,node_upload,node_s3_handler,node_email,node_razorpay toneRose
```

## Components

### API entry

- [Express server](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/server.ts): `src/server.ts`
- [API routes](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/routes/index.ts): `src/routes/index.ts`
- [Auth middleware](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/middleware/auth.middleware.ts): `src/middleware/auth.middleware.ts`

### Commerce

- [Product controller](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/product/product.controller.ts): `src/modules/product/product.controller.ts`
- [Product service](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/product/product.service.ts): `src/modules/product/product.service.ts`
- [Product router](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/product/product.router.ts): `src/modules/product/product.router.ts`
- [Cart controller](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/cart/cart.controller.ts): `src/modules/cart/cart.controller.ts`
- [Cart service](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/cart/cart.service.ts): `src/modules/cart/cart.service.ts`
- [Cart router](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/cart/cart.router.ts): `src/modules/cart/cart.router.ts`
- [Order controller](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/order/order.controller.ts): `src/modules/order/order.controller.ts`
- [Order service](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/order/order.service.ts): `src/modules/order/order.service.ts`
- [Order router](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/order/order.router.ts): `src/modules/order/order.router.ts`

### Identity

- [Auth controller](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/auth/auth.controller.ts): `src/modules/auth/auth.controller.ts`
- [Auth service](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/auth/auth.service.ts): `src/modules/auth/auth.service.ts`
- [Auth repository](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/auth/auth.repository.ts): `src/modules/auth/auth.repository.ts`
- [Auth router](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/auth/auth.router.ts): `src/modules/auth/auth.router.ts`
- [User controller](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/user/user.controller.ts): `src/modules/user/user.controller.ts`
- [User service](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/user/user.service.ts): `src/modules/user/user.service.ts`
- [User router](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/modules/user/user.router.ts): `src/modules/user/user.router.ts`

### Persistence and integrations

- [Sequelize models](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/models/associations.ts): `src/models/associations.ts`
- [MySQL database](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/config/database.ts): `src/config/database.ts`
- [Upload middleware](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/middleware/upload.ts): `src/middleware/upload.ts`
- [S3 handler](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/utils/s3.handler.ts): `src/utils/s3.handler.ts`
- [Email service](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/notifications/email/email.service.ts): `src/notifications/email/email.service.ts`
- [Razorpay helper](https://github.com/vcsreddy2004/pilot-terraform-project/blob/main/src/utils/razorpay.ts): `src/utils/razorpay.ts`

### Other components

- **API client**
- **S3 object storage**

## Connections

- API client → Express server: sends requests
- Express server → API routes: mounts routes
- API routes → Auth router: dispatches auth
- API routes → User router: dispatches users
- API routes → Product router: dispatches products
- API routes → Cart router: dispatches cart
- API routes → Order router: dispatches orders
- Auth router → Auth controller: dispatches handlers
- User router → User controller: dispatches handlers
- Product router → Product controller: dispatches handlers
- Cart router → Cart controller: dispatches handlers
- Order router → Order controller: dispatches handlers
- Auth controller → Auth service: calls
- Auth service → Auth repository: calls
- User controller → User service: calls
- Product controller → Product service: calls
- Cart controller → Cart service: calls
- Order controller → Order service: calls
- Express server → MySQL database: authenticates connection
- Auth repository → Sequelize models: queries models
- MySQL database → Sequelize models: backs persistence
- Product controller → Upload middleware: accepts files
- S3 handler → S3 object storage: uploads and deletes
- Auth service → Email service: sends email
- Order service → Razorpay helper: payment integration
