# lurevia/lurevia-ecommerce architecture

> Architecture diagram of the GitHub repository lurevia/lurevia-ecommerce, 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/lurevia/lurevia-ecommerce
- Repository: https://github.com/lurevia/lurevia-ecommerce

## Overview

Lurevia is a REST backend for a Malagasy artisan marketplace. Its main customer journey is discovering products, managing a cart and order, paying, and tracking delivery; sellers and administrators have separate product, finance, moderation, and verification capabilities. The tree and README establish those subsystems, while sampled files confirm selected route-to-controller and service-to-storage/provider links. Other domain wiring is omitted where source excerpts do not show the callers.

Main entry points: [`src/modules/media/media.service.ts`](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/media/media.service.ts) (Media Import), [`src/lib/prisma.ts`](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/lib/prisma.ts) (PostgreSQL via Prisma), [`src/modules/auth/auth.service.ts`](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/auth/auth.service.ts) (Authentication), [`src/modules/reviews/reviews.routes.ts`](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/reviews/reviews.routes.ts) (Reviews)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_catalog["Catalog and Discovery"]
  node_products["Product Catalog<br/>[products.routes.ts]"]
  node_categories["Categories"]
  node_media["Media Import<br/>[media.service.ts]"]
end

subgraph group_commerce["Commerce and Delivery"]
  node_cart["Shopping Cart<br/>[cart.routes.ts]"]
  node_orders["Orders<br/>[orders.routes.ts]"]
  node_payments["Payments<br/>[payments.routes.ts]"]
  node_delivery["Delivery Tracking"]
  node_pickup["Pickup Points"]
end

subgraph group_community["Accounts and Community"]
  node_auth["Authentication<br/>[auth.service.ts]"]
  node_identity["Identity Verification"]
  node_reviews["Reviews<br/>[reviews.routes.ts]"]
  node_reviewcontroller["Review Controller"]
  node_reviewservice["Review Service<br/>[reviews.service.ts]"]
end

subgraph group_operations["Platform Operations"]
  node_server["HTTP Server<br/>[server.ts]"]
  node_app["Express App<br/>[app.ts]"]
  node_routes["API Routes<br/>[index.ts]"]
  node_admin_module["Admin Management<br/>[admin.routes.ts]"]
  node_database[("PostgreSQL via Prisma<br/>[prisma.ts]")]
end

node_customer(("Customer"))
node_seller(("Seller"))
node_administrator(("Administrator"))
node_github["GitHub Contents API"]
node_paymentproviders["Mobile Money Providers<br/>[types.ts]"]
node_email["SMTP Email"]

node_server -->|"starts"| node_app
node_customer -->|"requests catalog"| node_products
node_seller -->|"manages listings"| node_products
node_customer -->|"manages cart"| node_cart
node_customer -->|"places orders"| node_orders
node_customer -->|"initiates payment"| node_payments
node_paymentproviders -.->|"processes payment"| node_payments
node_customer -->|"checks tracking"| node_delivery
node_customer -->|"submits reviews"| node_reviews
node_reviews -->|"dispatches"| node_reviewcontroller
node_reviewcontroller -->|"calls"| node_reviewservice
node_reviewservice -->|"reads/writes"| node_database
node_customer -->|"imports media"| node_media
node_media -->|"uploads contents"| node_github
node_media -->|"stores metadata"| node_database
node_administrator -->|"manages platform"| node_admin_module
node_administrator -->|"reviews verification"| node_identity
node_auth -->|"stores refresh tokens"| node_database
node_auth -.->|"sends verification codes"| node_email

click node_server "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/server.ts"
click node_app "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/app.ts"
click node_routes "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/routes/index.ts"
click node_products "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/products/products.routes.ts"
click node_categories "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/categories/categories.routes.ts"
click node_media "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/media/media.service.ts"
click node_cart "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/cart/cart.routes.ts"
click node_orders "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/orders/orders.routes.ts"
click node_payments "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/payments/payments.routes.ts"
click node_paymentproviders "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/payments/operators/types.ts"
click node_delivery "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/delivery-tracking/tracking-query.service.ts"
click node_pickup "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/pickup-points/pickup-points.routes.ts"
click node_auth "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/auth/auth.service.ts"
click node_identity "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/identity-verifications/identity-verifications.routes.ts"
click node_reviews "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/reviews/reviews.routes.ts"
click node_reviewcontroller "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/reviews/reviews.controller.ts"
click node_reviewservice "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/reviews/reviews.service.ts"
click node_admin_module "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/admin/admin.routes.ts"
click node_database "https://github.com/lurevia/lurevia-ecommerce/blob/main/src/lib/prisma.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_products,node_categories,node_media toneBlue
class node_cart,node_orders,node_payments,node_delivery,node_pickup toneAmber
class node_auth,node_identity,node_reviews,node_reviewcontroller,node_reviewservice,node_github toneMint
class node_server,node_app,node_routes,node_admin_module,node_database toneRose
class node_customer,node_seller,node_administrator,node_paymentproviders,node_email toneIndigo
```

## Components

### Catalog and Discovery

- [Product Catalog](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/products/products.routes.ts): `src/modules/products/products.routes.ts`
- [Categories](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/categories/categories.routes.ts): `src/modules/categories/categories.routes.ts`
- [Media Import](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/media/media.service.ts): `src/modules/media/media.service.ts`

### Commerce and Delivery

- [Shopping Cart](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/cart/cart.routes.ts): `src/modules/cart/cart.routes.ts`
- [Orders](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/orders/orders.routes.ts): `src/modules/orders/orders.routes.ts`
- [Payments](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/payments/payments.routes.ts): `src/modules/payments/payments.routes.ts`
- [Delivery Tracking](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/delivery-tracking/tracking-query.service.ts): `src/modules/delivery-tracking/tracking-query.service.ts`
- [Pickup Points](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/pickup-points/pickup-points.routes.ts): `src/modules/pickup-points/pickup-points.routes.ts`

### Accounts and Community

- [Authentication](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/auth/auth.service.ts): `src/modules/auth/auth.service.ts`
- [Identity Verification](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/identity-verifications/identity-verifications.routes.ts): `src/modules/identity-verifications/identity-verifications.routes.ts`
- [Reviews](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/reviews/reviews.routes.ts): `src/modules/reviews/reviews.routes.ts`
- [Review Controller](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/reviews/reviews.controller.ts): `src/modules/reviews/reviews.controller.ts`
- [Review Service](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/reviews/reviews.service.ts): `src/modules/reviews/reviews.service.ts`

### Platform Operations

- [HTTP Server](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/server.ts): `src/server.ts`
- [Express App](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/app.ts): `src/app.ts`
- [API Routes](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/routes/index.ts): `src/routes/index.ts`
- [Admin Management](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/admin/admin.routes.ts): `src/modules/admin/admin.routes.ts`
- [PostgreSQL via Prisma](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/lib/prisma.ts): `src/lib/prisma.ts`

### Other components

- **Customer**
- **Seller**
- **Administrator**
- **GitHub Contents API**
- [Mobile Money Providers](https://github.com/lurevia/lurevia-ecommerce/blob/main/src/modules/payments/operators/types.ts): `src/modules/payments/operators/types.ts`
- **SMTP Email**

## Connections

- HTTP Server → Express App: starts
- Customer → Product Catalog: requests catalog
- Seller → Product Catalog: manages listings
- Customer → Shopping Cart: manages cart
- Customer → Orders: places orders
- Customer → Payments: initiates payment
- Mobile Money Providers → Payments: processes payment
- Customer → Delivery Tracking: checks tracking
- Customer → Reviews: submits reviews
- Reviews → Review Controller: dispatches
- Review Controller → Review Service: calls
- Review Service → PostgreSQL via Prisma: reads/writes
- Customer → Media Import: imports media
- Media Import → GitHub Contents API: uploads contents
- Media Import → PostgreSQL via Prisma: stores metadata
- Administrator → Admin Management: manages platform
- Administrator → Identity Verification: reviews verification
- Authentication → PostgreSQL via Prisma: stores refresh tokens
- Authentication → SMTP Email: sends verification codes
