# pattarasit/team20 architecture

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

- Interactive diagram: https://gitdiagram.com/pattarasit/team20
- Repository: https://github.com/pattarasit/team20

## Overview

This is a parcel-delivery management application with a Vue frontend and Spring backend. Staff use the interface to register customers and parcels, record parcel dispatch and shipping-state updates, then look up histories or handle cancellation and delivery confirmation. Employee login and station/status data support these workflows. The tree documents these feature areas, and sampled controllers show repository-backed operations; frontend API wiring and unsampled feature implementations are not verified here, so their connections are omitted.

Main entry points: [`Backend/src/main/java/team20/transport/ParcelDeliverySystem/PackagingSystem/Repository/PackagingRepository.java`](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/PackagingSystem/Repository/PackagingRepository.java) (Parcel records), [`Backend/src/main/java/team20/transport/ParcelDeliverySystem/PackagingSystem/Controller/PackagingController.java`](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/PackagingSystem/Controller/PackagingController.java) (Parcel packaging), [`Backend/src/main/java/team20/transport/ParcelDeliverySystem/ShippingStateSystem/Controller/ShippingStateController.java`](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/ShippingStateSystem/Controller/ShippingStateController.java) (Shipping-state updates), [`Backend/src/main/java/team20/transport/ParcelDeliverySystem/Repository/EmployeeRepository.java`](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/Repository/EmployeeRepository.java) (Employee records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Frontend"]
  node_app["Vue application<br/>[main.js]"]
  node_router["Page router<br/>[router.js]"]
  node_login["Employee login<br/>[Login.vue]"]
  node_member_view["Customer registration<br/>[MemberCustomer.vue]"]
  node_package_view["Parcel entry<br/>[Packaging.vue]"]
  node_sent_view["Dispatch recording<br/>[SentParcel.vue]"]
  node_state_view["Shipping updates<br/>[ShippingState.vue]"]
  node_cancel_view["Cancellation entry<br/>[Cancelsent.vue]"]
  node_confirm_view["Delivery confirmation<br/>[ConfirmPackage.vue]"]
end

subgraph group_setup["Staff and setup"]
  node_employee["Employee access"]
  node_employee_data[("Employee records")]
  node_station["Station lookup"]
  node_station_data[("Station records")]
end

subgraph group_intake["Customer and parcel intake"]
  node_member_api["Customer management"]
  node_member_data[("Customer records")]
  node_packaging["Parcel packaging"]
  node_package_data[("Parcel records")]
end

subgraph group_transit["Parcel transit"]
  node_sent["Parcel dispatch"]
  node_sent_data[("Dispatch records")]
  node_state["Shipping-state updates"]
  node_state_display["Tracking lookup"]
  node_state_data[("Shipping-state records")]
end

subgraph group_outcomes["Delivery outcomes"]
  node_cancel["Parcel cancellation"]
  node_cancel_data[("Cancellation records")]
  node_confirm["Package confirmation"]
  node_confirm_data[("Confirmation records")]
end

node_staff(("Staff user"))

node_staff -->|"uses"| node_app
node_app -->|"routes pages"| node_router
node_staff -->|"enters credentials"| node_login
node_login --> node_employee
node_employee -->|"queries"| node_employee_data
node_staff -->|"registers customer"| node_member_view
node_member_view --> node_member_api
node_member_api -->|"reads and saves"| node_member_data
node_staff -->|"enters parcel"| node_package_view
node_package_view --> node_packaging
node_packaging -->|"looks up sender"| node_member_data
node_packaging -->|"looks up creator"| node_employee_data
node_packaging -->|"looks up station"| node_station_data
node_packaging -->|"reads and saves"| node_package_data
node_staff -->|"records dispatch"| node_sent_view
node_sent_view --> node_sent
node_sent -->|"loads parcel"| node_package_data
node_sent -->|"loads stations"| node_station_data
node_sent -->|"saves dispatch"| node_sent_data
node_staff -->|"updates tracking"| node_state_view
node_state_view --> node_state
node_state -->|"loads parcel"| node_package_data
node_state -->|"loads creator"| node_employee_data
node_state -->|"loads station"| node_station_data
node_state -->|"saves update"| node_state_data
node_staff -->|"looks up tracking"| node_state_display
node_state_display -->|"loads parcel"| node_package_data
node_staff -->|"submits cancellation"| node_cancel_view
node_cancel_view --> node_cancel
node_cancel -->|"loads creator"| node_employee_data
node_cancel -->|"loads parcel"| node_package_data
node_cancel -->|"saves cancellation"| node_cancel_data
node_staff -->|"confirms delivery"| node_confirm_view
node_confirm_view --> node_confirm
node_confirm -->|"loads parcel"| node_package_data
node_confirm -->|"loads creator"| node_employee_data
node_confirm -->|"saves confirmation"| node_confirm_data

click node_app "https://github.com/pattarasit/team20/blob/master/Frontend/src/main.js"
click node_router "https://github.com/pattarasit/team20/blob/master/Frontend/src/router.js"
click node_login "https://github.com/pattarasit/team20/blob/master/Frontend/src/views/Login.vue"
click node_employee "https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/Controller/EmployeeController.java"
click node_employee_data "https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/Repository/EmployeeRepository.java"
click node_station "https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/Controller/StationController.java"
click node_station_data "https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/Repository/StationRepository.java"
click node_member_view "https://github.com/pattarasit/team20/blob/master/Frontend/src/views/MemberCustomer%20System/MemberCustomer.vue"
click node_member_api "https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/MemberCustomerSystem/Controller/MemberCustomerController.java"
click node_member_data "https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/MemberCustomerSystem/Repository/MemberCustomerRepository.java"
click node_package_view "https://github.com/pattarasit/team20/blob/master/Frontend/src/views/Packaging%20System/Packaging.vue"
click node_packaging "https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/PackagingSystem/Controller/PackagingController.java"
click node_package_data "https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/PackagingSystem/Repository/PackagingRepository.java"
click node_sent_view "https://github.com/pattarasit/team20/blob/master/Frontend/src/views/SentParcel%20System/SentParcel.vue"
click node_sent "https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/SentParcelSystem/Controller/SentParcelController.java"
click node_sent_data "https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/SentParcelSystem/Repository/SentParcelRepository.java"
click node_state_view "https://github.com/pattarasit/team20/blob/master/Frontend/src/views/ShippingState%20System/ShippingState.vue"
click node_state "https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/ShippingStateSystem/Controller/ShippingStateController.java"
click node_state_display "https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/ShippingStateSystem/Controller/DisplayShippingStateController.java"
click node_state_data "https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/ShippingStateSystem/Repository/ShippingStateRepository.java"
click node_cancel_view "https://github.com/pattarasit/team20/blob/master/Frontend/src/views/Cancelsent%20System/Cancelsent.vue"
click node_cancel "https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/CancelsentSystem/Controller/CancelsentController.java"
click node_cancel_data "https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/CancelsentSystem/Repository/CancelsentRepository.java"
click node_confirm_view "https://github.com/pattarasit/team20/blob/master/Frontend/src/views/ConfirmPackage%20System/ConfirmPackage.vue"
click node_confirm "https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/ConfirmPackageSystem/Controller/ConfirmPackageController.java"
click node_confirm_data "https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/ConfirmPackageSystem/Repository/ConfirmPackageRepository.java"

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_app,node_router,node_login,node_member_view,node_package_view,node_sent_view,node_state_view,node_cancel_view,node_confirm_view,node_staff toneBlue
class node_employee,node_employee_data,node_station,node_station_data toneAmber
class node_member_api,node_member_data,node_packaging,node_package_data toneMint
class node_sent,node_sent_data,node_state,node_state_display,node_state_data toneRose
class node_cancel,node_cancel_data,node_confirm,node_confirm_data toneIndigo
```

## Components

### Frontend

- [Vue application](https://github.com/pattarasit/team20/blob/master/Frontend/src/main.js): `Frontend/src/main.js`
- [Page router](https://github.com/pattarasit/team20/blob/master/Frontend/src/router.js): `Frontend/src/router.js`
- [Employee login](https://github.com/pattarasit/team20/blob/master/Frontend/src/views/Login.vue): `Frontend/src/views/Login.vue`
- [Customer registration](https://github.com/pattarasit/team20/blob/master/Frontend/src/views/MemberCustomer%20System/MemberCustomer.vue): `Frontend/src/views/MemberCustomer System/MemberCustomer.vue`
- [Parcel entry](https://github.com/pattarasit/team20/blob/master/Frontend/src/views/Packaging%20System/Packaging.vue): `Frontend/src/views/Packaging System/Packaging.vue`
- [Dispatch recording](https://github.com/pattarasit/team20/blob/master/Frontend/src/views/SentParcel%20System/SentParcel.vue): `Frontend/src/views/SentParcel System/SentParcel.vue`
- [Shipping updates](https://github.com/pattarasit/team20/blob/master/Frontend/src/views/ShippingState%20System/ShippingState.vue): `Frontend/src/views/ShippingState System/ShippingState.vue`
- [Cancellation entry](https://github.com/pattarasit/team20/blob/master/Frontend/src/views/Cancelsent%20System/Cancelsent.vue): `Frontend/src/views/Cancelsent System/Cancelsent.vue`
- [Delivery confirmation](https://github.com/pattarasit/team20/blob/master/Frontend/src/views/ConfirmPackage%20System/ConfirmPackage.vue): `Frontend/src/views/ConfirmPackage System/ConfirmPackage.vue`

### Staff and setup

- [Employee access](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/Controller/EmployeeController.java): `Backend/src/main/java/team20/transport/ParcelDeliverySystem/Controller/EmployeeController.java`
- [Employee records](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/Repository/EmployeeRepository.java): `Backend/src/main/java/team20/transport/ParcelDeliverySystem/Repository/EmployeeRepository.java`
- [Station lookup](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/Controller/StationController.java): `Backend/src/main/java/team20/transport/ParcelDeliverySystem/Controller/StationController.java`
- [Station records](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/Repository/StationRepository.java): `Backend/src/main/java/team20/transport/ParcelDeliverySystem/Repository/StationRepository.java`

### Customer and parcel intake

- [Customer management](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/MemberCustomerSystem/Controller/MemberCustomerController.java): `Backend/src/main/java/team20/transport/ParcelDeliverySystem/MemberCustomerSystem/Controller/MemberCustomerController.java`
- [Customer records](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/MemberCustomerSystem/Repository/MemberCustomerRepository.java): `Backend/src/main/java/team20/transport/ParcelDeliverySystem/MemberCustomerSystem/Repository/MemberCustomerRepository.java`
- [Parcel packaging](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/PackagingSystem/Controller/PackagingController.java): `Backend/src/main/java/team20/transport/ParcelDeliverySystem/PackagingSystem/Controller/PackagingController.java`
- [Parcel records](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/PackagingSystem/Repository/PackagingRepository.java): `Backend/src/main/java/team20/transport/ParcelDeliverySystem/PackagingSystem/Repository/PackagingRepository.java`

### Parcel transit

- [Parcel dispatch](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/SentParcelSystem/Controller/SentParcelController.java): `Backend/src/main/java/team20/transport/ParcelDeliverySystem/SentParcelSystem/Controller/SentParcelController.java`
- [Dispatch records](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/SentParcelSystem/Repository/SentParcelRepository.java): `Backend/src/main/java/team20/transport/ParcelDeliverySystem/SentParcelSystem/Repository/SentParcelRepository.java`
- [Shipping-state updates](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/ShippingStateSystem/Controller/ShippingStateController.java): `Backend/src/main/java/team20/transport/ParcelDeliverySystem/ShippingStateSystem/Controller/ShippingStateController.java`
- [Tracking lookup](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/ShippingStateSystem/Controller/DisplayShippingStateController.java): `Backend/src/main/java/team20/transport/ParcelDeliverySystem/ShippingStateSystem/Controller/DisplayShippingStateController.java`
- [Shipping-state records](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/ShippingStateSystem/Repository/ShippingStateRepository.java): `Backend/src/main/java/team20/transport/ParcelDeliverySystem/ShippingStateSystem/Repository/ShippingStateRepository.java`

### Delivery outcomes

- [Parcel cancellation](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/CancelsentSystem/Controller/CancelsentController.java): `Backend/src/main/java/team20/transport/ParcelDeliverySystem/CancelsentSystem/Controller/CancelsentController.java`
- [Cancellation records](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/CancelsentSystem/Repository/CancelsentRepository.java): `Backend/src/main/java/team20/transport/ParcelDeliverySystem/CancelsentSystem/Repository/CancelsentRepository.java`
- [Package confirmation](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/ConfirmPackageSystem/Controller/ConfirmPackageController.java): `Backend/src/main/java/team20/transport/ParcelDeliverySystem/ConfirmPackageSystem/Controller/ConfirmPackageController.java`
- [Confirmation records](https://github.com/pattarasit/team20/blob/master/Backend/src/main/java/team20/transport/ParcelDeliverySystem/ConfirmPackageSystem/Repository/ConfirmPackageRepository.java): `Backend/src/main/java/team20/transport/ParcelDeliverySystem/ConfirmPackageSystem/Repository/ConfirmPackageRepository.java`

### Other components

- **Staff user**

## Connections

- Staff user → Vue application: uses
- Vue application → Page router: routes pages
- Staff user → Employee login: enters credentials
- Employee login → Employee access
- Employee access → Employee records: queries
- Staff user → Customer registration: registers customer
- Customer registration → Customer management
- Customer management → Customer records: reads and saves
- Staff user → Parcel entry: enters parcel
- Parcel entry → Parcel packaging
- Parcel packaging → Customer records: looks up sender
- Parcel packaging → Employee records: looks up creator
- Parcel packaging → Station records: looks up station
- Parcel packaging → Parcel records: reads and saves
- Staff user → Dispatch recording: records dispatch
- Dispatch recording → Parcel dispatch
- Parcel dispatch → Parcel records: loads parcel
- Parcel dispatch → Station records: loads stations
- Parcel dispatch → Dispatch records: saves dispatch
- Staff user → Shipping updates: updates tracking
- Shipping updates → Shipping-state updates
- Shipping-state updates → Parcel records: loads parcel
- Shipping-state updates → Employee records: loads creator
- Shipping-state updates → Station records: loads station
- Shipping-state updates → Shipping-state records: saves update
- Staff user → Tracking lookup: looks up tracking
- Tracking lookup → Parcel records: loads parcel
- Staff user → Cancellation entry: submits cancellation
- Cancellation entry → Parcel cancellation
- Parcel cancellation → Employee records: loads creator
- Parcel cancellation → Parcel records: loads parcel
- Parcel cancellation → Cancellation records: saves cancellation
- Staff user → Delivery confirmation: confirms delivery
- Delivery confirmation → Package confirmation
- Package confirmation → Parcel records: loads parcel
- Package confirmation → Employee records: loads creator
- Package confirmation → Confirmation records: saves confirmation
