# miko-milo/robo-edu architecture

> Architecture diagram of the GitHub repository miko-milo/robo-edu, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-01). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/miko-milo/robo-edu
- Repository: https://github.com/miko-milo/robo-edu

## Overview

RoboEdu is a single-store storefront for educational robotics kits and spare parts. The intended customer journey runs from browsing and product detail through cart, checkout (address, shipping, voucher), payment, and order tracking; the sampled checkout and order screens still use mock data, so they do not establish backend or gateway calls. The tree also exposes account, wishlist, and review UI, while README-documented admin, reseller, warranty, and reporting capabilities have no implementation paths in this tree. Edges show only relationships visible in excerpts or the SOURCE INDEX; unsampled behavior is not inferred.

Main entry points: [`app/(user)/checkout/page.tsx`](https://github.com/miko-milo/robo-edu/blob/main/app/(user)/checkout/page.tsx) (Checkout), [`types/common.ts`](https://github.com/miko-milo/robo-edu/blob/main/types/common.ts) (API contracts), [`app/page.tsx`](https://github.com/miko-milo/robo-edu/blob/main/app/page.tsx) (Home landing), [`app/(user)/product/page.tsx`](https://github.com/miko-milo/robo-edu/blob/main/app/(user)/product/page.tsx) (Product catalog)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_storefront["Storefront &amp; Catalog"]
  node_home["Home landing<br/>[page.tsx]"]
  node_catalog["Product catalog<br/>[page.tsx]"]
  node_product_detail["Product detail<br/>[page.tsx]"]
  node_wishlist["Wishlist state"]
  node_wishlist_ui["Wishlist UI"]
  node_landing_faq["Landing FAQ<br/>[faq.tsx]"]
  node_landing_testimonials["Testimonials<br/>[testimoni.tsx]"]
end

subgraph group_purchase["Cart &amp; Purchase"]
  node_cart["Shopping cart<br/>[page.tsx]"]
  node_checkout["Checkout<br/>[page.tsx]"]
  node_checkout_parts["Checkout widgets"]
end

subgraph group_account["Accounts &amp; Orders"]
  node_orders["Order history<br/>[page.tsx]"]
  node_order_review["Review modal"]
  node_auth["Login &amp; register<br/>[page.tsx]"]
  node_profile["Profile<br/>[page.tsx]"]
end

subgraph group_shared["Shared UI &amp; Contracts"]
  node_ui_button["Button primitive<br/>[button.tsx]"]
  node_ui_product["Product card<br/>[product-card.tsx]"]
  node_ui_pagination["Pagination<br/>[pagination.tsx]"]
  node_ui_image["Product image<br/>[product-image.tsx]"]
  node_ui_rating["Star rating<br/>[star-rating.tsx]"]
  node_carousel_logo["Logo carousel<br/>[carousel-logo.tsx]"]
  node_checkout_types["Cart/order contracts<br/>[cart.ts]"]
  node_user_types["User contract<br/>[user.ts]"]
  node_common_types["API contracts<br/>[common.ts]"]
  node_order_types["Order contract<br/>[order.ts]"]
  node_voucher_types["Voucher contract<br/>[voucher.ts]"]
  node_enum_types["Domain statuses<br/>[enums.ts]"]
  node_review_types["Review contract<br/>[review.ts]"]
end

subgraph group_admin["Admin capabilities"]
  node_admin_features["Admin operations"]
  node_reseller_features["Reseller approval &amp; pricing"]
  node_warranty_features["Warranty claims"]
  node_reports["Sales reporting"]
end

node_shopper(("Shopper"))

node_shopper -->|"opens"| node_home
node_shopper -.->|"browses"| node_catalog
node_catalog -->|"renders"| node_ui_pagination
node_shopper -.->|"opens product"| node_product_detail
node_shopper -.->|"manages cart"| node_cart
node_shopper -.->|"checks out"| node_checkout
node_checkout -->|"renders"| node_checkout_parts
node_checkout -->|"uses"| node_ui_button
node_checkout -->|"uses"| node_checkout_types
node_checkout -->|"uses"| node_user_types
node_checkout -->|"uses"| node_order_types
node_checkout -->|"uses"| node_voucher_types
node_checkout -->|"uses"| node_enum_types
node_catalog -->|"renders"| node_wishlist_ui
node_shopper -.->|"views orders"| node_orders
node_orders -->|"renders"| node_order_review
node_order_review -->|"renders"| node_ui_rating
node_order_review -->|"uses"| node_ui_button
node_shopper -.->|"signs in"| node_auth
node_shopper -.->|"edits profile"| node_profile
node_wishlist_ui -.->|"uses state"| node_wishlist
node_ui_product -->|"renders"| node_ui_image
node_ui_product -->|"renders"| node_ui_rating
node_ui_button -.->|"not connected"| node_common_types
node_home -.->|"renders"| node_carousel_logo
node_landing_faq -.->|"included by"| node_home
node_landing_testimonials -->|"renders"| node_home
node_shopper -.->|"admin manages"| node_admin_features
node_admin_features -.->|"approves"| node_reseller_features
node_admin_features -.->|"handles"| node_warranty_features
node_admin_features -.->|"views"| node_reports
node_checkout_types -->|"uses"| node_common_types
node_order_types -->|"uses"| node_common_types
node_voucher_types -->|"uses"| node_common_types
node_review_types -->|"uses"| node_common_types
node_review_types -->|"uses"| node_enum_types
node_user_types -->|"uses"| node_common_types
node_user_types -->|"uses"| node_enum_types

click node_home "https://github.com/miko-milo/robo-edu/blob/main/app/page.tsx"
click node_catalog "https://github.com/miko-milo/robo-edu/blob/main/app/(user)/product/page.tsx"
click node_product_detail "https://github.com/miko-milo/robo-edu/blob/main/app/(user)/product/%5Bslug%5D/page.tsx"
click node_cart "https://github.com/miko-milo/robo-edu/blob/main/app/(user)/cart/page.tsx"
click node_checkout "https://github.com/miko-milo/robo-edu/blob/main/app/(user)/checkout/page.tsx"
click node_checkout_parts "https://github.com/miko-milo/robo-edu/blob/main/components/user/checkout/checkout-address-modal.tsx"
click node_orders "https://github.com/miko-milo/robo-edu/blob/main/app/(user)/profile/orders/page.tsx"
click node_order_review "https://github.com/miko-milo/robo-edu/blob/main/components/user/orders/order-review-modal.tsx"
click node_auth "https://github.com/miko-milo/robo-edu/blob/main/app/(auth)/login/page.tsx"
click node_profile "https://github.com/miko-milo/robo-edu/blob/main/app/(user)/profile/my-profile/page.tsx"
click node_wishlist "https://github.com/miko-milo/robo-edu/blob/main/contexts/wishlist-context.tsx"
click node_wishlist_ui "https://github.com/miko-milo/robo-edu/blob/main/components/user/wishlist/wishlist-sidebar.tsx"
click node_ui_button "https://github.com/miko-milo/robo-edu/blob/main/components/ui/button.tsx"
click node_ui_product "https://github.com/miko-milo/robo-edu/blob/main/components/ui/product-card.tsx"
click node_ui_pagination "https://github.com/miko-milo/robo-edu/blob/main/components/ui/pagination.tsx"
click node_ui_image "https://github.com/miko-milo/robo-edu/blob/main/components/ui/product-image.tsx"
click node_ui_rating "https://github.com/miko-milo/robo-edu/blob/main/components/ui/star-rating.tsx"
click node_carousel_logo "https://github.com/miko-milo/robo-edu/blob/main/components/user/carousel-logo.tsx"
click node_landing_faq "https://github.com/miko-milo/robo-edu/blob/main/components/user/landing/faq.tsx"
click node_landing_testimonials "https://github.com/miko-milo/robo-edu/blob/main/components/user/landing/testimoni.tsx"
click node_checkout_types "https://github.com/miko-milo/robo-edu/blob/main/types/cart.ts"
click node_user_types "https://github.com/miko-milo/robo-edu/blob/main/types/user.ts"
click node_common_types "https://github.com/miko-milo/robo-edu/blob/main/types/common.ts"
click node_order_types "https://github.com/miko-milo/robo-edu/blob/main/types/order.ts"
click node_voucher_types "https://github.com/miko-milo/robo-edu/blob/main/types/voucher.ts"
click node_enum_types "https://github.com/miko-milo/robo-edu/blob/main/types/enums.ts"
click node_review_types "https://github.com/miko-milo/robo-edu/blob/main/types/review.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_home,node_catalog,node_product_detail,node_wishlist,node_wishlist_ui,node_landing_faq,node_landing_testimonials toneBlue
class node_cart,node_checkout,node_checkout_parts toneAmber
class node_orders,node_order_review,node_auth,node_profile toneMint
class node_ui_button,node_ui_product,node_ui_pagination,node_ui_image,node_ui_rating,node_carousel_logo,node_checkout_types,node_user_types,node_common_types,node_order_types,node_voucher_types,node_enum_types,node_review_types toneRose
class node_admin_features,node_reseller_features,node_warranty_features,node_reports,node_shopper toneIndigo
```

## Components

### Storefront & Catalog

- [Home landing](https://github.com/miko-milo/robo-edu/blob/main/app/page.tsx): `app/page.tsx`
- [Product catalog](https://github.com/miko-milo/robo-edu/blob/main/app/(user)/product/page.tsx): `app/(user)/product/page.tsx`
- [Product detail](https://github.com/miko-milo/robo-edu/blob/main/app/(user)/product/%5Bslug%5D/page.tsx): `app/(user)/product/[slug]/page.tsx`
- [Wishlist state](https://github.com/miko-milo/robo-edu/blob/main/contexts/wishlist-context.tsx): `contexts/wishlist-context.tsx`
- [Wishlist UI](https://github.com/miko-milo/robo-edu/blob/main/components/user/wishlist/wishlist-sidebar.tsx): `components/user/wishlist/wishlist-sidebar.tsx`
- [Landing FAQ](https://github.com/miko-milo/robo-edu/blob/main/components/user/landing/faq.tsx): `components/user/landing/faq.tsx`
- [Testimonials](https://github.com/miko-milo/robo-edu/blob/main/components/user/landing/testimoni.tsx): `components/user/landing/testimoni.tsx`

### Cart & Purchase

- [Shopping cart](https://github.com/miko-milo/robo-edu/blob/main/app/(user)/cart/page.tsx): `app/(user)/cart/page.tsx`
- [Checkout](https://github.com/miko-milo/robo-edu/blob/main/app/(user)/checkout/page.tsx): `app/(user)/checkout/page.tsx`
- [Checkout widgets](https://github.com/miko-milo/robo-edu/blob/main/components/user/checkout/checkout-address-modal.tsx): `components/user/checkout/checkout-address-modal.tsx`

### Accounts & Orders

- [Order history](https://github.com/miko-milo/robo-edu/blob/main/app/(user)/profile/orders/page.tsx): `app/(user)/profile/orders/page.tsx`
- [Review modal](https://github.com/miko-milo/robo-edu/blob/main/components/user/orders/order-review-modal.tsx): `components/user/orders/order-review-modal.tsx`
- [Login & register](https://github.com/miko-milo/robo-edu/blob/main/app/(auth)/login/page.tsx): `app/(auth)/login/page.tsx`
- [Profile](https://github.com/miko-milo/robo-edu/blob/main/app/(user)/profile/my-profile/page.tsx): `app/(user)/profile/my-profile/page.tsx`

### Shared UI & Contracts

- [Button primitive](https://github.com/miko-milo/robo-edu/blob/main/components/ui/button.tsx): `components/ui/button.tsx`
- [Product card](https://github.com/miko-milo/robo-edu/blob/main/components/ui/product-card.tsx): `components/ui/product-card.tsx`
- [Pagination](https://github.com/miko-milo/robo-edu/blob/main/components/ui/pagination.tsx): `components/ui/pagination.tsx`
- [Product image](https://github.com/miko-milo/robo-edu/blob/main/components/ui/product-image.tsx): `components/ui/product-image.tsx`
- [Star rating](https://github.com/miko-milo/robo-edu/blob/main/components/ui/star-rating.tsx): `components/ui/star-rating.tsx`
- [Logo carousel](https://github.com/miko-milo/robo-edu/blob/main/components/user/carousel-logo.tsx): `components/user/carousel-logo.tsx`
- [Cart/order contracts](https://github.com/miko-milo/robo-edu/blob/main/types/cart.ts): `types/cart.ts`
- [User contract](https://github.com/miko-milo/robo-edu/blob/main/types/user.ts): `types/user.ts`
- [API contracts](https://github.com/miko-milo/robo-edu/blob/main/types/common.ts): `types/common.ts`
- [Order contract](https://github.com/miko-milo/robo-edu/blob/main/types/order.ts): `types/order.ts`
- [Voucher contract](https://github.com/miko-milo/robo-edu/blob/main/types/voucher.ts): `types/voucher.ts`
- [Domain statuses](https://github.com/miko-milo/robo-edu/blob/main/types/enums.ts): `types/enums.ts`
- [Review contract](https://github.com/miko-milo/robo-edu/blob/main/types/review.ts): `types/review.ts`

### Admin capabilities

- **Admin operations**
- **Reseller approval & pricing**
- **Warranty claims**
- **Sales reporting**

### Other components

- **Shopper**

## Connections

- Shopper → Home landing: opens (evidence: `app/page.tsx`)
- Shopper → Product catalog: browses
- Product catalog → Pagination: renders (evidence: `app/(user)/product/page.tsx`)
- Shopper → Product detail: opens product
- Shopper → Shopping cart: manages cart
- Shopper → Checkout: checks out
- Checkout → Checkout widgets: renders (evidence: `app/(user)/checkout/page.tsx`)
- Checkout → Button primitive: uses (evidence: `app/(user)/checkout/page.tsx`)
- Checkout → Cart/order contracts: uses (evidence: `app/(user)/checkout/page.tsx`)
- Checkout → User contract: uses (evidence: `app/(user)/checkout/page.tsx`)
- Checkout → Order contract: uses (evidence: `app/(user)/checkout/page.tsx`)
- Checkout → Voucher contract: uses (evidence: `app/(user)/checkout/page.tsx`)
- Checkout → Domain statuses: uses (evidence: `app/(user)/checkout/page.tsx`)
- Product catalog → Wishlist UI: renders (evidence: `app/(user)/product/page.tsx`)
- Shopper → Order history: views orders
- Order history → Review modal: renders (evidence: `app/(user)/profile/orders/page.tsx`)
- Review modal → Star rating: renders (evidence: `components/user/orders/order-review-modal.tsx`)
- Review modal → Button primitive: uses (evidence: `components/user/orders/order-review-modal.tsx`)
- Shopper → Login & register: signs in
- Shopper → Profile: edits profile
- Wishlist UI → Wishlist state: uses state
- Product card → Product image: renders (evidence: `components/ui/product-card.tsx`)
- Product card → Star rating: renders (evidence: `components/ui/product-card.tsx`)
- Button primitive → API contracts: not connected
- Home landing → Logo carousel: renders
- Landing FAQ → Home landing: included by (evidence: `app/page.tsx`)
- Testimonials → Home landing: renders (evidence: `app/page.tsx`)
- Shopper → Admin operations: admin manages
- Admin operations → Reseller approval & pricing: approves
- Admin operations → Warranty claims: handles
- Admin operations → Sales reporting: views
- Cart/order contracts → API contracts: uses (evidence: `types/cart.ts`)
- Order contract → API contracts: uses (evidence: `types/order.ts`)
- Voucher contract → API contracts: uses (evidence: `types/voucher.ts`)
- Review contract → API contracts: uses (evidence: `types/review.ts`)
- Review contract → Domain statuses: uses (evidence: `types/review.ts`)
- User contract → API contracts: uses (evidence: `types/user.ts`)
- User contract → Domain statuses: uses (evidence: `types/user.ts`)
