# msyafrial/iotaru architecture

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

- Interactive diagram: https://gitdiagram.com/msyafrial/iotaru
- Repository: https://github.com/msyafrial/iotaru

## Overview

IoTaru is a public IoT product and solutions marketing site, with product and solution catalogs, editorial posts, company information, and a contact path. The principal visitor workflow is to enter through the homepage or navigation, browse a catalog or solution overview, open a detail page backed by content collections, and optionally send an inquiry through the contact form. The graph reflects the tree, content schemas, and sampled navigation/contact behavior; page implementations were not sampled, so some page-to-content wiring is inferred from route structure and collection definitions.

Main entry points: [`src/layouts/MainLayout.astro`](https://github.com/msyafrial/iotaru/blob/main/src/layouts/MainLayout.astro) (Shared layout), [`src/pages/products/index.astro`](https://github.com/msyafrial/iotaru/blob/main/src/pages/products/index.astro) (Product catalog), [`src/pages/products/[slug].astro`](https://github.com/msyafrial/iotaru/blob/main/src/pages/products/%5Bslug%5D.astro) (Product detail), [`src/pages/solutions/index.astro`](https://github.com/msyafrial/iotaru/blob/main/src/pages/solutions/index.astro) (Solutions overview)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_site["Site shell"]
  node_home["Homepage<br/>[index.astro]"]
  node_layout["Shared layout<br/>[MainLayout.astro]"]
  node_shared_components["Site components"]
  node_middleware["Security middleware<br/>[middleware.ts]"]
end

subgraph group_catalogs["Catalog journeys"]
  node_products_index["Product catalog<br/>[index.astro]"]
  node_product_detail["Product detail<br/>[&#91;slug&#93;.astro]"]
  node_product_content["Product content"]
  node_solutions_index["Solutions overview<br/>[index.astro]"]
  node_solution_detail["Solution detail<br/>[&#91;slug&#93;.astro]"]
  node_solution_content["Solution content"]
end

subgraph group_editorial["Editorial content"]
  node_blog_index["Blog listing<br/>[index.astro]"]
  node_blog_detail["Blog article<br/>[&#91;slug&#93;.astro]"]
  node_blog_content["Blog content"]
end

subgraph group_company["Company and contact"]
  node_about["About page<br/>[index.astro]"]
  node_contact["Contact page<br/>[index.astro]"]
  node_contact_script["Contact form handler<br/>[function.js]"]
end

node_visitor(("Site visitor"))
node_email_client["Email client"]

node_visitor -->|"opens"| node_home
node_visitor -->|"browses"| node_products_index
node_visitor -->|"browses"| node_solutions_index
node_visitor -->|"browses"| node_blog_index
node_visitor -->|"visits"| node_about
node_visitor -->|"visits"| node_contact
node_home -->|"renders with"| node_layout
node_products_index -->|"renders with"| node_layout
node_product_detail -->|"renders with"| node_layout
node_solutions_index -->|"renders with"| node_layout
node_solution_detail -->|"renders with"| node_layout
node_blog_index -->|"renders with"| node_layout
node_blog_detail -->|"renders with"| node_layout
node_about -->|"renders with"| node_layout
node_contact -->|"renders with"| node_layout
node_layout -->|"uses"| node_shared_components
node_products_index -->|"links to"| node_product_detail
node_product_detail -->|"reads"| node_product_content
node_solutions_index -->|"links to"| node_solution_detail
node_solution_detail -->|"reads"| node_solution_content
node_blog_index -->|"links to"| node_blog_detail
node_blog_detail -->|"reads"| node_blog_content
node_contact -->|"handles form"| node_contact_script
node_contact_script -->|"opens"| node_email_client

click node_home "https://github.com/msyafrial/iotaru/blob/main/src/pages/index.astro"
click node_layout "https://github.com/msyafrial/iotaru/blob/main/src/layouts/MainLayout.astro"
click node_shared_components "https://github.com/msyafrial/iotaru/tree/main/src/components"
click node_middleware "https://github.com/msyafrial/iotaru/blob/main/src/middleware.ts"
click node_products_index "https://github.com/msyafrial/iotaru/blob/main/src/pages/products/index.astro"
click node_product_detail "https://github.com/msyafrial/iotaru/blob/main/src/pages/products/%5Bslug%5D.astro"
click node_product_content "https://github.com/msyafrial/iotaru/tree/main/src/content/products"
click node_solutions_index "https://github.com/msyafrial/iotaru/blob/main/src/pages/solutions/index.astro"
click node_solution_detail "https://github.com/msyafrial/iotaru/blob/main/src/pages/solutions/%5Bslug%5D.astro"
click node_solution_content "https://github.com/msyafrial/iotaru/tree/main/src/content/solutions"
click node_blog_index "https://github.com/msyafrial/iotaru/blob/main/src/pages/blog/index.astro"
click node_blog_detail "https://github.com/msyafrial/iotaru/blob/main/src/pages/blog/%5Bslug%5D.astro"
click node_blog_content "https://github.com/msyafrial/iotaru/tree/main/src/content/blog"
click node_about "https://github.com/msyafrial/iotaru/blob/main/src/pages/about/index.astro"
click node_contact "https://github.com/msyafrial/iotaru/blob/main/src/pages/contact/index.astro"
click node_contact_script "https://github.com/msyafrial/iotaru/blob/main/public/js/function.js"

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_home,node_layout,node_shared_components,node_middleware,node_email_client toneBlue
class node_products_index,node_product_detail,node_product_content,node_solutions_index,node_solution_detail,node_solution_content toneAmber
class node_blog_index,node_blog_detail,node_blog_content toneMint
class node_about,node_contact,node_contact_script toneRose
class node_visitor toneIndigo
```

## Components

### Site shell

- [Homepage](https://github.com/msyafrial/iotaru/blob/main/src/pages/index.astro): `src/pages/index.astro`
- [Shared layout](https://github.com/msyafrial/iotaru/blob/main/src/layouts/MainLayout.astro): `src/layouts/MainLayout.astro`
- [Site components](https://github.com/msyafrial/iotaru/tree/main/src/components): `src/components`
- [Security middleware](https://github.com/msyafrial/iotaru/blob/main/src/middleware.ts): `src/middleware.ts`

### Catalog journeys

- [Product catalog](https://github.com/msyafrial/iotaru/blob/main/src/pages/products/index.astro): `src/pages/products/index.astro`
- [Product detail](https://github.com/msyafrial/iotaru/blob/main/src/pages/products/%5Bslug%5D.astro): `src/pages/products/[slug].astro`
- [Product content](https://github.com/msyafrial/iotaru/tree/main/src/content/products): `src/content/products`
- [Solutions overview](https://github.com/msyafrial/iotaru/blob/main/src/pages/solutions/index.astro): `src/pages/solutions/index.astro`
- [Solution detail](https://github.com/msyafrial/iotaru/blob/main/src/pages/solutions/%5Bslug%5D.astro): `src/pages/solutions/[slug].astro`
- [Solution content](https://github.com/msyafrial/iotaru/tree/main/src/content/solutions): `src/content/solutions`

### Editorial content

- [Blog listing](https://github.com/msyafrial/iotaru/blob/main/src/pages/blog/index.astro): `src/pages/blog/index.astro`
- [Blog article](https://github.com/msyafrial/iotaru/blob/main/src/pages/blog/%5Bslug%5D.astro): `src/pages/blog/[slug].astro`
- [Blog content](https://github.com/msyafrial/iotaru/tree/main/src/content/blog): `src/content/blog`

### Company and contact

- [About page](https://github.com/msyafrial/iotaru/blob/main/src/pages/about/index.astro): `src/pages/about/index.astro`
- [Contact page](https://github.com/msyafrial/iotaru/blob/main/src/pages/contact/index.astro): `src/pages/contact/index.astro`
- [Contact form handler](https://github.com/msyafrial/iotaru/blob/main/public/js/function.js): `public/js/function.js`

### Other components

- **Site visitor**
- **Email client**

## Connections

- Site visitor → Homepage: opens
- Site visitor → Product catalog: browses
- Site visitor → Solutions overview: browses
- Site visitor → Blog listing: browses
- Site visitor → About page: visits
- Site visitor → Contact page: visits
- Homepage → Shared layout: renders with
- Product catalog → Shared layout: renders with
- Product detail → Shared layout: renders with
- Solutions overview → Shared layout: renders with
- Solution detail → Shared layout: renders with
- Blog listing → Shared layout: renders with
- Blog article → Shared layout: renders with
- About page → Shared layout: renders with
- Contact page → Shared layout: renders with
- Shared layout → Site components: uses
- Product catalog → Product detail: links to
- Product detail → Product content: reads
- Solutions overview → Solution detail: links to
- Solution detail → Solution content: reads
- Blog listing → Blog article: links to
- Blog article → Blog content: reads
- Contact page → Contact form handler: handles form
- Contact form handler → Email client: opens
