# pavan2184/ip architecture

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

- Interactive diagram: https://gitdiagram.com/pavan2184/ip
- Repository: https://github.com/pavan2184/ip

## Overview

Pavanmaxxer is a desktop task manager driven by short text commands. The main user workflow is JavaFX input → command classification and parsing → application coordination → task-list operations, with a response rendered in the conversation window. Creation supports todos, dated deadlines and timed events; list, search, completion toggles, deletion and duplicate warnings are handled in the same core. The coordinator loads and saves a text snapshot. Edges reflect shown calls and documented capabilities; resource-level UI wiring and unsampled implementation details are not expanded.

Main entry points: [`src/main/java/pavanmaxxer/Pavanmaxxer.java`](https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Pavanmaxxer.java) (App coordinator), [`src/main/java/pavanmaxxer/Parser.java`](https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Parser.java) (Input parser), [`src/main/java/pavanmaxxer/MainWindow.java`](https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/MainWindow.java) (Main window), [`src/main/java/pavanmaxxer/Task.java`](https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Task.java) (Task model)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop interface"]
  node_main["JavaFX startup<br/>[Main.java]"]
  node_window["Main window<br/>[MainWindow.java]"]
  node_dialogs["Chat dialogs<br/>[DialogBox.java]"]
end

subgraph group_commands["Command processing"]
  node_coordinator["App coordinator<br/>[Pavanmaxxer.java]"]
  node_command["Command types<br/>[Command.java]"]
  node_parser["Input parser<br/>[Parser.java]"]
  node_errors["User errors"]
end

subgraph group_domain["Task domain"]
  node_tasks["Task model<br/>[Task.java]"]
  node_todo["Todo task<br/>[Todo.java]"]
  node_deadline["Deadline task<br/>[Deadline.java]"]
  node_event["Event task<br/>[Event.java]"]
end

subgraph group_state["Task state"]
  node_tasklist["Task collection<br/>[TaskList.java]"]
  node_storage["Text persistence<br/>[Storage.java]"]
  node_file[("Task data file")]
end

node_user(("User"))

node_user -->|"enters commands"| node_window
node_main -->|"loads window"| node_window
node_window -->|"submits input"| node_coordinator
node_window -->|"renders messages"| node_dialogs
node_coordinator -->|"classifies input"| node_command
node_coordinator -->|"parses arguments"| node_parser
node_parser -->|"uses command types"| node_command
node_coordinator -->|"updates and queries"| node_tasklist
node_coordinator -->|"loads and saves"| node_storage
node_storage -->|"reads and writes"| node_file
node_tasklist -->|"manages tasks"| node_tasks
node_parser -->|"creates"| node_todo
node_parser -->|"creates"| node_deadline
node_parser -->|"creates"| node_event
node_todo -->|"extends"| node_tasks
node_deadline -->|"extends"| node_tasks
node_event -->|"extends"| node_tasks
node_coordinator -->|"handles errors"| node_errors
node_parser -->|"reports invalid input"| node_errors
node_storage -->|"reports storage errors"| node_errors

click node_main "https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Main.java"
click node_window "https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/MainWindow.java"
click node_dialogs "https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/DialogBox.java"
click node_coordinator "https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Pavanmaxxer.java"
click node_command "https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Command.java"
click node_parser "https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Parser.java"
click node_errors "https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/PavanmaxxerException.java"
click node_tasks "https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Task.java"
click node_todo "https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Todo.java"
click node_deadline "https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Deadline.java"
click node_event "https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Event.java"
click node_tasklist "https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/TaskList.java"
click node_storage "https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Storage.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_main,node_window,node_dialogs,node_user toneBlue
class node_coordinator,node_command,node_parser,node_errors toneAmber
class node_tasks,node_todo,node_deadline,node_event toneMint
class node_tasklist,node_storage,node_file toneRose
```

## Components

### Desktop interface

- [JavaFX startup](https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Main.java): `src/main/java/pavanmaxxer/Main.java`
- [Main window](https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/MainWindow.java): `src/main/java/pavanmaxxer/MainWindow.java`
- [Chat dialogs](https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/DialogBox.java): `src/main/java/pavanmaxxer/DialogBox.java`

### Command processing

- [App coordinator](https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Pavanmaxxer.java): `src/main/java/pavanmaxxer/Pavanmaxxer.java`
- [Command types](https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Command.java): `src/main/java/pavanmaxxer/Command.java`
- [Input parser](https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Parser.java): `src/main/java/pavanmaxxer/Parser.java`
- [User errors](https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/PavanmaxxerException.java): `src/main/java/pavanmaxxer/PavanmaxxerException.java`

### Task domain

- [Task model](https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Task.java): `src/main/java/pavanmaxxer/Task.java`
- [Todo task](https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Todo.java): `src/main/java/pavanmaxxer/Todo.java`
- [Deadline task](https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Deadline.java): `src/main/java/pavanmaxxer/Deadline.java`
- [Event task](https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Event.java): `src/main/java/pavanmaxxer/Event.java`

### Task state

- [Task collection](https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/TaskList.java): `src/main/java/pavanmaxxer/TaskList.java`
- [Text persistence](https://github.com/pavan2184/ip/blob/master/src/main/java/pavanmaxxer/Storage.java): `src/main/java/pavanmaxxer/Storage.java`
- **Task data file**

### Other components

- **User**

## Connections

- User → Main window: enters commands (evidence: `src/main/java/pavanmaxxer/MainWindow.java`)
- JavaFX startup → Main window: loads window (evidence: `src/main/java/pavanmaxxer/Main.java`)
- Main window → App coordinator: submits input (evidence: `src/main/java/pavanmaxxer/MainWindow.java`)
- Main window → Chat dialogs: renders messages (evidence: `src/main/java/pavanmaxxer/MainWindow.java`)
- App coordinator → Command types: classifies input (evidence: `src/main/java/pavanmaxxer/Pavanmaxxer.java`)
- App coordinator → Input parser: parses arguments (evidence: `src/main/java/pavanmaxxer/Pavanmaxxer.java`)
- Input parser → Command types: uses command types (evidence: `src/main/java/pavanmaxxer/Parser.java`)
- App coordinator → Task collection: updates and queries (evidence: `src/main/java/pavanmaxxer/Pavanmaxxer.java`)
- App coordinator → Text persistence: loads and saves (evidence: `src/main/java/pavanmaxxer/Pavanmaxxer.java`)
- Text persistence → Task data file: reads and writes (evidence: `src/main/java/pavanmaxxer/Storage.java`)
- Task collection → Task model: manages tasks (evidence: `src/main/java/pavanmaxxer/TaskList.java`)
- Input parser → Todo task: creates (evidence: `src/main/java/pavanmaxxer/Parser.java`)
- Input parser → Deadline task: creates (evidence: `src/main/java/pavanmaxxer/Parser.java`)
- Input parser → Event task: creates (evidence: `src/main/java/pavanmaxxer/Parser.java`)
- Todo task → Task model: extends (evidence: `src/main/java/pavanmaxxer/Todo.java`)
- Deadline task → Task model: extends (evidence: `src/main/java/pavanmaxxer/Deadline.java`)
- Event task → Task model: extends (evidence: `src/main/java/pavanmaxxer/Event.java`)
- App coordinator → User errors: handles errors (evidence: `src/main/java/pavanmaxxer/Pavanmaxxer.java`)
- Input parser → User errors: reports invalid input (evidence: `src/main/java/pavanmaxxer/Parser.java`)
- Text persistence → User errors: reports storage errors (evidence: `src/main/java/pavanmaxxer/Storage.java`)
