# code-4me/csit340-g6-midterms-legaspi architecture

> Architecture diagram of the GitHub repository code-4me/csit340-g6-midterms-legaspi, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/code-4me/csit340-g6-midterms-legaspi
- Repository: https://github.com/code-4me/csit340-g6-midterms-legaspi

## Overview

This is a small Cloudline subscription-plan configurator, not a production billing service. The user adjusts seats and months, sees plan totals, and can increment or clear an in-page waitlist count. State is local to React components; no persistence or external service is shown. The graph follows the sampled render and callback relationships. Footer.jsx is not included because App.jsx does not render it.

Main entry points: [`src/App.jsx`](https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/App.jsx) (App state), [`src/components/PlanPicker.jsx`](https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/components/PlanPicker.jsx) (Plan picker), [`src/components/PlanCard.jsx`](https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/components/PlanCard.jsx) (Plan card), [`src/components/Waitlist.jsx`](https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/components/Waitlist.jsx) (Waitlist counter)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App shell"]
  node_entry["React entry<br/>[main.jsx]"]
  node_app["App state<br/>[App.jsx]"]
  node_navbar["Navigation<br/>[Navbar.jsx]"]
end

subgraph group_plans["Plan builder"]
  node_picker["Plan picker<br/>[PlanPicker.jsx]"]
  node_summary["Plan summary<br/>[Summary.jsx]"]
  node_card["Plan card<br/>[PlanCard.jsx]"]
  node_feature["Plan features<br/>[Feature.jsx]"]
end

subgraph group_engagement["Waitlist"]
  node_waitlist["Waitlist counter<br/>[Waitlist.jsx]"]
end

node_visitor(("Visitor"))

node_entry -->|"renders"| node_app
node_app -->|"renders"| node_navbar
node_app -->|"passes state and handlers"| node_picker
node_app -->|"renders"| node_waitlist
node_picker -->|"renders state"| node_summary
node_picker -->|"renders plan options"| node_card
node_card -->|"renders features"| node_feature
node_visitor -->|"adjusts plan"| node_picker
node_picker -->|"invokes handlers"| node_app
node_visitor -->|"updates count"| node_waitlist

click node_entry "https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/main.jsx"
click node_app "https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/App.jsx"
click node_navbar "https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/components/Navbar.jsx"
click node_picker "https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/components/PlanPicker.jsx"
click node_summary "https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/components/Summary.jsx"
click node_card "https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/components/PlanCard.jsx"
click node_feature "https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/components/Feature.jsx"
click node_waitlist "https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/components/Waitlist.jsx"

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_entry,node_app,node_navbar toneBlue
class node_picker,node_summary,node_card,node_feature toneAmber
class node_waitlist toneMint
class node_visitor toneIndigo
```

## Components

### App shell

- [React entry](https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/main.jsx): `src/main.jsx`
- [App state](https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/App.jsx): `src/App.jsx`
- [Navigation](https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/components/Navbar.jsx): `src/components/Navbar.jsx`

### Plan builder

- [Plan picker](https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/components/PlanPicker.jsx): `src/components/PlanPicker.jsx`
- [Plan summary](https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/components/Summary.jsx): `src/components/Summary.jsx`
- [Plan card](https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/components/PlanCard.jsx): `src/components/PlanCard.jsx`
- [Plan features](https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/components/Feature.jsx): `src/components/Feature.jsx`

### Waitlist

- [Waitlist counter](https://github.com/code-4me/csit340-g6-midterms-legaspi/blob/main/src/components/Waitlist.jsx): `src/components/Waitlist.jsx`

### Other components

- **Visitor**

## Connections

- React entry → App state: renders (evidence: `src/main.jsx`)
- App state → Navigation: renders (evidence: `src/App.jsx`)
- App state → Plan picker: passes state and handlers (evidence: `src/App.jsx`)
- App state → Waitlist counter: renders (evidence: `src/App.jsx`)
- Plan picker → Plan summary: renders state (evidence: `src/components/PlanPicker.jsx`)
- Plan picker → Plan card: renders plan options (evidence: `src/components/PlanPicker.jsx`)
- Plan card → Plan features: renders features (evidence: `src/components/PlanCard.jsx`)
- Visitor → Plan picker: adjusts plan (evidence: `src/components/PlanPicker.jsx`)
- Plan picker → App state: invokes handlers (evidence: `src/components/PlanPicker.jsx`)
- Visitor → Waitlist counter: updates count (evidence: `src/components/Waitlist.jsx`)
