# wildcatdownstairs/mini-store-api architecture

> Architecture diagram of the GitHub repository wildcatdownstairs/mini-store-api, 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/wildcatdownstairs/mini-store-api
- Repository: https://github.com/wildcatdownstairs/mini-store-api

## Overview

Mini Store API is an ASP.NET Core e-commerce backend for customer and admin clients, backed by PostgreSQL through a shared EF Core context. The main customer journey is authenticate, browse products, manage a cart, receive a checkout quote, and place an order; operations then cover payment, warehouse fulfillment, delivery, and post-delivery reviews. Admin capabilities include catalog, customer, inventory, coupon, payment/refund, shipping, review moderation, and dashboard operations. Feature endpoints and several service implementations are unsampled, so their internal call wiring is not expanded beyond documented responsibilities and visible dependencies.

Main entry points: [`Program.cs`](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Program.cs) (API composition), [`Data/StoreDbContext.cs`](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Data/StoreDbContext.cs) (EF Core context), [`Features/Orders/OrderService.cs`](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Orders/OrderService.cs) (Order service), [`Features/Carts/CartService.cs`](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Carts/CartService.cs) (Cart service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API foundation"]
  node_program["API composition<br/>[Program.cs]"]
  node_auth["Authentication<br/>[AuthEndpoints.cs]"]
  node_authservice["Auth service<br/>[AuthService.cs]"]
end

subgraph group_commerce["Shopping and orders"]
  node_customers["Customer accounts"]
  node_customerdata["Customer service<br/>[CustomerService.cs]"]
  node_products["Product catalog"]
  node_productdata["Product service<br/>[ProductService.cs]"]
  node_cart["Shopping cart<br/>[CartEndpoints.cs]"]
  node_cartdata["Cart service<br/>[CartService.cs]"]
  node_pricing["Price calculation<br/>[Pricing.cs]"]
  node_checkout["Checkout"]
  node_checkoutdata["Checkout service<br/>[CheckoutService.cs]"]
  node_orders["Order management<br/>[OrderEndpoints.cs]"]
  node_orderdata["Order service<br/>[OrderService.cs]"]
end

subgraph group_operations["Store operations"]
  node_marketing["Coupons"]
  node_marketingdata["Marketing service"]
  node_inventory["Inventory"]
  node_inventorydata["Inventory service"]
  node_payments["Payments and refunds"]
  node_paymentdata["Payment service<br/>[PaymentService.cs]"]
  node_shipping["Shipping"]
  node_shippingdata["Shipping service<br/>[ShippingService.cs]"]
  node_reviews["Product reviews<br/>[ReviewEndpoints.cs]"]
  node_reviewdata["Review service<br/>[ReviewService.cs]"]
  node_dashboard["Admin dashboard"]
  node_dashboarddata["Dashboard service"]
end

subgraph group_data["Persistence"]
  node_dbcontext["EF Core context<br/>[StoreDbContext.cs]"]
  node_postgres[("PostgreSQL")]
end

node_customer(("Customer"))
node_admin(("Admin operator"))
node_web["Storefront"]
node_adminui["Admin frontend"]

node_web -->|"HTTP requests"| node_program
node_adminui -->|"HTTP requests"| node_program
node_program -->|"maps routes"| node_auth
node_program -->|"maps routes"| node_customers
node_program -->|"maps routes"| node_products
node_program -->|"maps routes"| node_cart
node_program -->|"maps routes"| node_checkout
node_program -->|"maps routes"| node_orders
node_program -->|"maps routes"| node_marketing
node_program -->|"maps routes"| node_inventory
node_program -->|"maps routes"| node_payments
node_program -->|"maps routes"| node_shipping
node_program -->|"maps routes"| node_reviews
node_program -->|"maps routes"| node_dashboard
node_customer -->|"uses"| node_web
node_admin -->|"uses"| node_adminui
node_auth -->|"calls"| node_authservice
node_customers -->|"calls"| node_customerdata
node_products -->|"calls"| node_productdata
node_cart -->|"calls"| node_cartdata
node_checkout -->|"calls"| node_checkoutdata
node_orders -->|"calls"| node_orderdata
node_marketing -->|"calls"| node_marketingdata
node_inventory -->|"calls"| node_inventorydata
node_payments -->|"calls"| node_paymentdata
node_shipping -->|"calls"| node_shippingdata
node_reviews -->|"calls"| node_reviewdata
node_dashboard -->|"calls"| node_dashboarddata
node_cartdata -->|"calculates totals"| node_pricing
node_checkoutdata -->|"calculates quote"| node_pricing
node_paymentdata -->|"transitions order"| node_orderdata
node_shippingdata -->|"releases stock"| node_orderdata
node_program -->|"configures"| node_dbcontext
node_authservice -->|"reads and writes"| node_dbcontext
node_customerdata -->|"reads and writes"| node_dbcontext
node_productdata -->|"reads and writes"| node_dbcontext
node_cartdata -->|"reads and writes"| node_dbcontext
node_checkoutdata -->|"reads and writes"| node_dbcontext
node_orderdata -->|"reads and writes"| node_dbcontext
node_marketingdata -->|"reads and writes"| node_dbcontext
node_inventorydata -->|"reads and writes"| node_dbcontext
node_paymentdata -->|"reads and writes"| node_dbcontext
node_shippingdata -->|"reads and writes"| node_dbcontext
node_reviewdata -->|"reads and writes"| node_dbcontext
node_dashboarddata -->|"reads"| node_dbcontext
node_dbcontext -->|"queries"| node_postgres

click node_program "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Program.cs"
click node_auth "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Auth/AuthEndpoints.cs"
click node_authservice "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Auth/AuthService.cs"
click node_customers "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Customers/CustomerEndpoints.cs"
click node_customerdata "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Customers/CustomerService.cs"
click node_products "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Products/ProductEndpoints.cs"
click node_productdata "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Products/ProductService.cs"
click node_cart "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Carts/CartEndpoints.cs"
click node_cartdata "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Carts/CartService.cs"
click node_pricing "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Checkout/Pricing.cs"
click node_checkout "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Checkout/CheckoutEndpoints.cs"
click node_checkoutdata "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Checkout/CheckoutService.cs"
click node_orders "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Orders/OrderEndpoints.cs"
click node_orderdata "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Orders/OrderService.cs"
click node_marketing "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Marketing/MarketingEndpoints.cs"
click node_marketingdata "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Marketing/MarketingService.cs"
click node_inventory "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Inventory/InventoryEndpoints.cs"
click node_inventorydata "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Inventory/InventoryService.cs"
click node_payments "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Payments/PaymentEndpoints.cs"
click node_paymentdata "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Payments/PaymentService.cs"
click node_shipping "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Shipping/ShippingEndpoints.cs"
click node_shippingdata "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Shipping/ShippingService.cs"
click node_reviews "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Reviews/ReviewEndpoints.cs"
click node_reviewdata "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Reviews/ReviewService.cs"
click node_dashboard "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Dashboard/DashboardEndpoints.cs"
click node_dashboarddata "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Dashboard/DashboardService.cs"
click node_dbcontext "https://github.com/wildcatdownstairs/mini-store-api/blob/main/Data/StoreDbContext.cs"

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_program,node_auth,node_authservice,node_adminui toneBlue
class node_customers,node_customerdata,node_products,node_productdata,node_cart,node_cartdata,node_pricing,node_checkout,node_checkoutdata,node_orders,node_orderdata toneAmber
class node_marketing,node_marketingdata,node_inventory,node_inventorydata,node_payments,node_paymentdata,node_shipping,node_shippingdata,node_reviews,node_reviewdata,node_dashboard,node_dashboarddata toneMint
class node_dbcontext,node_postgres toneRose
class node_customer,node_admin,node_web toneIndigo
```

## Components

### API foundation

- [API composition](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Program.cs): `Program.cs`
- [Authentication](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Auth/AuthEndpoints.cs): `Features/Auth/AuthEndpoints.cs`
- [Auth service](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Auth/AuthService.cs): `Features/Auth/AuthService.cs`

### Shopping and orders

- [Customer accounts](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Customers/CustomerEndpoints.cs): `Features/Customers/CustomerEndpoints.cs`
- [Customer service](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Customers/CustomerService.cs): `Features/Customers/CustomerService.cs`
- [Product catalog](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Products/ProductEndpoints.cs): `Features/Products/ProductEndpoints.cs`
- [Product service](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Products/ProductService.cs): `Features/Products/ProductService.cs`
- [Shopping cart](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Carts/CartEndpoints.cs): `Features/Carts/CartEndpoints.cs`
- [Cart service](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Carts/CartService.cs): `Features/Carts/CartService.cs`
- [Price calculation](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Checkout/Pricing.cs): `Features/Checkout/Pricing.cs`
- [Checkout](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Checkout/CheckoutEndpoints.cs): `Features/Checkout/CheckoutEndpoints.cs`
- [Checkout service](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Checkout/CheckoutService.cs): `Features/Checkout/CheckoutService.cs`
- [Order management](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Orders/OrderEndpoints.cs): `Features/Orders/OrderEndpoints.cs`
- [Order service](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Orders/OrderService.cs): `Features/Orders/OrderService.cs`

### Store operations

- [Coupons](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Marketing/MarketingEndpoints.cs): `Features/Marketing/MarketingEndpoints.cs`
- [Marketing service](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Marketing/MarketingService.cs): `Features/Marketing/MarketingService.cs`
- [Inventory](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Inventory/InventoryEndpoints.cs): `Features/Inventory/InventoryEndpoints.cs`
- [Inventory service](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Inventory/InventoryService.cs): `Features/Inventory/InventoryService.cs`
- [Payments and refunds](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Payments/PaymentEndpoints.cs): `Features/Payments/PaymentEndpoints.cs`
- [Payment service](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Payments/PaymentService.cs): `Features/Payments/PaymentService.cs`
- [Shipping](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Shipping/ShippingEndpoints.cs): `Features/Shipping/ShippingEndpoints.cs`
- [Shipping service](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Shipping/ShippingService.cs): `Features/Shipping/ShippingService.cs`
- [Product reviews](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Reviews/ReviewEndpoints.cs): `Features/Reviews/ReviewEndpoints.cs`
- [Review service](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Reviews/ReviewService.cs): `Features/Reviews/ReviewService.cs`
- [Admin dashboard](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Dashboard/DashboardEndpoints.cs): `Features/Dashboard/DashboardEndpoints.cs`
- [Dashboard service](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Features/Dashboard/DashboardService.cs): `Features/Dashboard/DashboardService.cs`

### Persistence

- [EF Core context](https://github.com/wildcatdownstairs/mini-store-api/blob/main/Data/StoreDbContext.cs): `Data/StoreDbContext.cs`
- **PostgreSQL**

### Other components

- **Customer**
- **Admin operator**
- **Storefront**
- **Admin frontend**

## Connections

- Storefront → API composition: HTTP requests
- Admin frontend → API composition: HTTP requests
- API composition → Authentication: maps routes
- API composition → Customer accounts: maps routes
- API composition → Product catalog: maps routes
- API composition → Shopping cart: maps routes
- API composition → Checkout: maps routes
- API composition → Order management: maps routes
- API composition → Coupons: maps routes
- API composition → Inventory: maps routes
- API composition → Payments and refunds: maps routes
- API composition → Shipping: maps routes
- API composition → Product reviews: maps routes
- API composition → Admin dashboard: maps routes
- Customer → Storefront: uses
- Admin operator → Admin frontend: uses
- Authentication → Auth service: calls
- Customer accounts → Customer service: calls
- Product catalog → Product service: calls
- Shopping cart → Cart service: calls
- Checkout → Checkout service: calls
- Order management → Order service: calls
- Coupons → Marketing service: calls
- Inventory → Inventory service: calls
- Payments and refunds → Payment service: calls
- Shipping → Shipping service: calls
- Product reviews → Review service: calls
- Admin dashboard → Dashboard service: calls
- Cart service → Price calculation: calculates totals
- Checkout service → Price calculation: calculates quote
- Payment service → Order service: transitions order
- Shipping service → Order service: releases stock
- API composition → EF Core context: configures
- Auth service → EF Core context: reads and writes
- Customer service → EF Core context: reads and writes
- Product service → EF Core context: reads and writes
- Cart service → EF Core context: reads and writes
- Checkout service → EF Core context: reads and writes
- Order service → EF Core context: reads and writes
- Marketing service → EF Core context: reads and writes
- Inventory service → EF Core context: reads and writes
- Payment service → EF Core context: reads and writes
- Shipping service → EF Core context: reads and writes
- Review service → EF Core context: reads and writes
- Dashboard service → EF Core context: reads
- EF Core context → PostgreSQL: queries
