# a-sobhy/cemtrix architecture

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

## Overview

This is a CEMTRIX AI-services marketing site with server-side contact and service-enquiry endpoints. The clearest evidenced workflow is browsing service offerings, opening a service-specific enquiry drawer, submitting it through the client mutation and API route, and receiving a confirmation. Contact submission follows a parallel endpoint path. Several page compositions and service-processing internals were not sampled, so uncertain links are omitted.

Main entry points: [`src/app/api/contact/route.ts`](https://github.com/a-sobhy/cemtrix/blob/main/src/app/api/contact/route.ts) (Contact endpoint), [`src/app/api/contact/service/route.ts`](https://github.com/a-sobhy/cemtrix/blob/main/src/app/api/contact/service/route.ts) (Service endpoint), [`src/lib/axios.ts`](https://github.com/a-sobhy/cemtrix/blob/main/src/lib/axios.ts) (API client), [`src/components/Services.tsx`](https://github.com/a-sobhy/cemtrix/blob/main/src/components/Services.tsx) (Services display)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_site["Site experience"]
  node_layout["App layout<br/>[layout.tsx]"]
  node_home["Home page<br/>[page.tsx]"]
  node_about["About page<br/>[page.tsx]"]
  node_aboutcontent["About content<br/>[AboutClient.tsx]"]
  node_services["Services display<br/>[Services.tsx]"]
  node_catalog["Service catalog<br/>[services.ts]"]
  node_product["Product detail<br/>[page.tsx]"]
end

subgraph group_enquiry["Enquiry flows"]
  node_contactform["Contact form<br/>[ContactForm.tsx]"]
  node_serviceform["Service drawer<br/>[ServiceDrawer.tsx]"]
  node_contacthook["Contact mutation<br/>[useContact.ts]"]
  node_servicehook["Service mutation"]
  node_axios["API client<br/>[axios.ts]"]
end

subgraph group_backend["Contact backend"]
  node_contactroute["Contact endpoint<br/>[route.ts]"]
  node_serviceroute["Service endpoint<br/>[route.ts]"]
  node_contactservice["Contact processing<br/>[contact.service.ts]"]
  node_contactdto["Contact validation<br/>[contact.dto.ts]"]
  node_servicedto["Service validation"]
  node_mailservice["Mail service<br/>[mail.service.ts]"]
end

node_visitor(("Visitor"))
node_smtp(("SMTP transport"))

node_visitor -->|"opens"| node_home
node_visitor -->|"opens"| node_about
node_services -->|"reads"| node_catalog
node_services -->|"opens"| node_serviceform
node_visitor -->|"browses"| node_services
node_visitor -->|"opens"| node_product
node_contactform -->|"submits"| node_contacthook
node_serviceform -->|"submits"| node_servicehook
node_contacthook -->|"posts"| node_axios
node_servicehook -->|"posts"| node_axios
node_axios -->|"requests"| node_contactroute
node_axios -->|"requests"| node_serviceroute
node_contactroute -->|"validates"| node_contactdto
node_contactroute -->|"invokes"| node_contactservice
node_contactroute -->|"constructs"| node_mailservice
node_serviceroute -->|"validates"| node_servicedto
node_serviceroute -->|"invokes"| node_contactservice
node_serviceroute -->|"constructs"| node_mailservice
node_mailservice -->|"sends mail"| node_smtp

click node_layout "https://github.com/a-sobhy/cemtrix/blob/main/src/app/layout.tsx"
click node_home "https://github.com/a-sobhy/cemtrix/blob/main/src/app/page.tsx"
click node_about "https://github.com/a-sobhy/cemtrix/blob/main/src/app/about/page.tsx"
click node_aboutcontent "https://github.com/a-sobhy/cemtrix/blob/main/src/app/about/AboutClient.tsx"
click node_services "https://github.com/a-sobhy/cemtrix/blob/main/src/components/Services.tsx"
click node_catalog "https://github.com/a-sobhy/cemtrix/blob/main/src/data/services.ts"
click node_product "https://github.com/a-sobhy/cemtrix/blob/main/src/app/products/%5Bid%5D/page.tsx"
click node_contactform "https://github.com/a-sobhy/cemtrix/blob/main/src/components/ContactForm.tsx"
click node_serviceform "https://github.com/a-sobhy/cemtrix/blob/main/src/components/ServiceDrawer.tsx"
click node_contacthook "https://github.com/a-sobhy/cemtrix/blob/main/src/hooks/useContact.ts"
click node_servicehook "https://github.com/a-sobhy/cemtrix/blob/main/src/hooks/useServiceEnquiry.ts"
click node_axios "https://github.com/a-sobhy/cemtrix/blob/main/src/lib/axios.ts"
click node_contactroute "https://github.com/a-sobhy/cemtrix/blob/main/src/app/api/contact/route.ts"
click node_serviceroute "https://github.com/a-sobhy/cemtrix/blob/main/src/app/api/contact/service/route.ts"
click node_contactservice "https://github.com/a-sobhy/cemtrix/blob/main/src/app/api/contact/contact.service.ts"
click node_contactdto "https://github.com/a-sobhy/cemtrix/blob/main/src/app/api/contact/dto/contact.dto.ts"
click node_servicedto "https://github.com/a-sobhy/cemtrix/blob/main/src/app/api/contact/dto/contact-service.dto.ts"
click node_mailservice "https://github.com/a-sobhy/cemtrix/blob/main/src/app/api/mail/mail.service.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_layout,node_home,node_about,node_aboutcontent,node_services,node_catalog,node_product toneBlue
class node_contactform,node_serviceform,node_contacthook,node_servicehook,node_axios toneAmber
class node_contactroute,node_serviceroute,node_contactservice,node_contactdto,node_servicedto,node_mailservice toneMint
class node_visitor,node_smtp toneIndigo
```

## Components

### Site experience

- [App layout](https://github.com/a-sobhy/cemtrix/blob/main/src/app/layout.tsx): `src/app/layout.tsx`
- [Home page](https://github.com/a-sobhy/cemtrix/blob/main/src/app/page.tsx): `src/app/page.tsx`
- [About page](https://github.com/a-sobhy/cemtrix/blob/main/src/app/about/page.tsx): `src/app/about/page.tsx`
- [About content](https://github.com/a-sobhy/cemtrix/blob/main/src/app/about/AboutClient.tsx): `src/app/about/AboutClient.tsx`
- [Services display](https://github.com/a-sobhy/cemtrix/blob/main/src/components/Services.tsx): `src/components/Services.tsx`
- [Service catalog](https://github.com/a-sobhy/cemtrix/blob/main/src/data/services.ts): `src/data/services.ts`
- [Product detail](https://github.com/a-sobhy/cemtrix/blob/main/src/app/products/%5Bid%5D/page.tsx): `src/app/products/[id]/page.tsx`

### Enquiry flows

- [Contact form](https://github.com/a-sobhy/cemtrix/blob/main/src/components/ContactForm.tsx): `src/components/ContactForm.tsx`
- [Service drawer](https://github.com/a-sobhy/cemtrix/blob/main/src/components/ServiceDrawer.tsx): `src/components/ServiceDrawer.tsx`
- [Contact mutation](https://github.com/a-sobhy/cemtrix/blob/main/src/hooks/useContact.ts): `src/hooks/useContact.ts`
- [Service mutation](https://github.com/a-sobhy/cemtrix/blob/main/src/hooks/useServiceEnquiry.ts): `src/hooks/useServiceEnquiry.ts`
- [API client](https://github.com/a-sobhy/cemtrix/blob/main/src/lib/axios.ts): `src/lib/axios.ts`

### Contact backend

- [Contact endpoint](https://github.com/a-sobhy/cemtrix/blob/main/src/app/api/contact/route.ts): `src/app/api/contact/route.ts`
- [Service endpoint](https://github.com/a-sobhy/cemtrix/blob/main/src/app/api/contact/service/route.ts): `src/app/api/contact/service/route.ts`
- [Contact processing](https://github.com/a-sobhy/cemtrix/blob/main/src/app/api/contact/contact.service.ts): `src/app/api/contact/contact.service.ts`
- [Contact validation](https://github.com/a-sobhy/cemtrix/blob/main/src/app/api/contact/dto/contact.dto.ts): `src/app/api/contact/dto/contact.dto.ts`
- [Service validation](https://github.com/a-sobhy/cemtrix/blob/main/src/app/api/contact/dto/contact-service.dto.ts): `src/app/api/contact/dto/contact-service.dto.ts`
- [Mail service](https://github.com/a-sobhy/cemtrix/blob/main/src/app/api/mail/mail.service.ts): `src/app/api/mail/mail.service.ts`

### Other components

- **Visitor**
- **SMTP transport**

## Connections

- Visitor → Home page: opens
- Visitor → About page: opens
- Services display → Service catalog: reads
- Services display → Service drawer: opens
- Visitor → Services display: browses
- Visitor → Product detail: opens
- Contact form → Contact mutation: submits
- Service drawer → Service mutation: submits
- Contact mutation → API client: posts
- Service mutation → API client: posts
- API client → Contact endpoint: requests
- API client → Service endpoint: requests
- Contact endpoint → Contact validation: validates
- Contact endpoint → Contact processing: invokes
- Contact endpoint → Mail service: constructs
- Service endpoint → Service validation: validates
- Service endpoint → Contact processing: invokes
- Service endpoint → Mail service: constructs
- Mail service → SMTP transport: sends mail
