# arun-subbiah/planner-application architecture

> Architecture diagram of the GitHub repository arun-subbiah/planner-application, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-08-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/arun-subbiah/planner-application
- Repository: https://github.com/arun-subbiah/planner-application

## Overview

#### Purpose and topology
This is a two-part task-management application: a Java/Spring backend exposes task-related server functionality, while a React frontend renders task, calendar, and work-session UI. The repository has independent build roots at `backend/pom.xml` and `frontend/package.json`.

#### Backend application entry and HTTP boundary
Spring Boot starts from `backend/src/main/java/com/example/taskManager/TaskManagerApplication.java`. HTTP-facing code is concentrated in:
- `backend/src/main/java/com/example/taskManager/TaskController.java`
- `backend/src/main/java/com/example/taskManager/HelloController.java`
- `backend/src/main/java/com/example/taskManager/HelloController2.java`

`TaskController` is the primary task API boundary; the Hello controllers appear to provide simple connectivity or diagnostic endpoints. Browser-origin behavior is likely configured at `backend/src/main/java/com/example/taskManager/config/WebConfig.java`.

#### Task domain and persistence
The core backend domain is represented by `backend/src/main/java/com/example/taskManager/Task.java`. Persistence is isolated behind `backend/src/main/java/com/example/taskManager/TaskRepository.java`, establishing the expected flow: HTTP request → controller → repository → task storage → HTTP response.

Database-related configuration belongs in `backend/src/main/resources/application.properties`. `backend/src/main/java/com/example/taskManager/PgTest.java` indicates PostgreSQL is a material intended or tested database integration, though the supplied tree alone does not establish deployment credentials or schema-management behavior.

#### Frontend entry and composition
The browser application mounts through:
- `frontend/src/index.js`
- `frontend/src/App.js`
- `frontend/public/index.html`

`App.js` is the application composition point. It should coordinate UI state and backend interaction rather than placing cross-screen orchestration in individual presentation components.

#### Task-management UI stages
The frontend’s architecture is organized around task lifecycle and planning views:
- Task creation: `frontend/src/components/AddTask.js`
- Task list and per-item rendering: `frontend/src/components/TaskList.js`, `frontend/src/components/TaskItem.js`
- Calendar-oriented planning: `frontend/src/components/Calendar.js`
- Focus/work tracking: `frontend/src/components/WorkSession.js`

The primary client flow is user input in these components → frontend state/API request → Spring task endpoint → persisted task data → refreshed list/calendar/session views. Styling for the task-list boundary is colocated in `frontend/src/components/TaskList.css`.

#### Runtime and operational boundaries
The backend uses Maven/Maven Wrapper (`backend/mvnw`, `backend/pom.xml`) and runs on the JVM with Spring Boot. The frontend uses the Node/npm ecosystem (`frontend/package.json`, `frontend/package-lock.json`) and produces a browser application.

The frontend/backend network boundary and database boundary are the major integration points. Cross-origin handling is architecturally relevant because UI and server live in separate project roots; `backend/src/main/java/com/example/taskManager/config/WebConfig.java` is the likely policy owner. The unusual `backend/src/main/java/com/example/taskManager/config/src/Main.java` is inside the compiled Java source tree and should be checked for an additional executable or accidental source placement before restructuring.

Main entry points: [`frontend/src/App.js`](https://github.com/arun-subbiah/planner-application/blob/main/frontend/src/App.js) (App composition), [`backend/src/main/java/com/example/taskManager/TaskController.java`](https://github.com/arun-subbiah/planner-application/blob/main/backend/src/main/java/com/example/taskManager/TaskController.java) (Task API), [`backend/src/main/java/com/example/taskManager/TaskManagerApplication.java`](https://github.com/arun-subbiah/planner-application/blob/main/backend/src/main/java/com/example/taskManager/TaskManagerApplication.java) (Spring Boot entry), [`frontend/public/index.html`](https://github.com/arun-subbiah/planner-application/blob/main/frontend/public/index.html) (HTML host page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["React frontend"]
  node_html["HTML host page<br/>static host<br/>[index.html]"]
  node_frontend_entry["React entry<br/>browser bootstrap<br/>[index.js]"]
  node_app["App composition<br/>UI orchestration<br/>[App.js]"]
  node_add_task["Add task<br/>UI component<br/>[AddTask.js]"]
  node_task_list["Task list<br/>UI component<br/>[TaskList.js]"]
  node_task_item["Task item<br/>UI component<br/>[TaskItem.js]"]
  node_calendar["Calendar planning<br/>UI component<br/>[Calendar.js]"]
  node_work_session["Work session<br/>UI component<br/>[WorkSession.js]"]
end

subgraph group_backend["Spring backend"]
  node_spring_boot["Spring Boot entry<br/>JVM application"]
  node_task_controller["Task API<br/>HTTP controller"]
  node_hello_endpoints["Hello endpoints<br/>diagnostic controllers"]
  node_cors["CORS policy<br/>web configuration<br/>[WebConfig.java]"]
  node_task["Task domain<br/>domain model<br/>[Task.java]"]
  node_task_repository["Task repository<br/>persistence port"]
  node_db_config["Database properties<br/>runtime configuration"]
end

node_browser(("Browser<br/>runtime"))
node_postgres[("PostgreSQL<br/>database")]

node_browser -->|"loads"| node_html
node_html -->|"hosts"| node_frontend_entry
node_frontend_entry -->|"mounts"| node_app
node_app -->|"composes"| node_add_task
node_app -->|"composes"| node_task_list
node_task_list -->|"renders"| node_task_item
node_app -->|"composes"| node_calendar
node_app -->|"composes"| node_work_session
node_add_task -->|"task requests"| node_task_controller
node_app -->|"fetches task data"| node_task_controller
node_cors -.->|"permits browser origins"| node_task_controller
node_spring_boot -->|"serves"| node_task_controller
node_spring_boot -->|"serves"| node_hello_endpoints
node_task_controller -->|"uses"| node_task
node_task_controller -->|"persists through"| node_task_repository
node_task_repository -->|"stores tasks"| node_postgres
node_db_config -.->|"configures connection"| node_postgres

click node_html "https://github.com/arun-subbiah/planner-application/blob/main/frontend/public/index.html"
click node_frontend_entry "https://github.com/arun-subbiah/planner-application/blob/main/frontend/src/index.js"
click node_app "https://github.com/arun-subbiah/planner-application/blob/main/frontend/src/App.js"
click node_add_task "https://github.com/arun-subbiah/planner-application/blob/main/frontend/src/components/AddTask.js"
click node_task_list "https://github.com/arun-subbiah/planner-application/blob/main/frontend/src/components/TaskList.js"
click node_task_item "https://github.com/arun-subbiah/planner-application/blob/main/frontend/src/components/TaskItem.js"
click node_calendar "https://github.com/arun-subbiah/planner-application/blob/main/frontend/src/components/Calendar.js"
click node_work_session "https://github.com/arun-subbiah/planner-application/blob/main/frontend/src/components/WorkSession.js"
click node_spring_boot "https://github.com/arun-subbiah/planner-application/blob/main/backend/src/main/java/com/example/taskManager/TaskManagerApplication.java"
click node_task_controller "https://github.com/arun-subbiah/planner-application/blob/main/backend/src/main/java/com/example/taskManager/TaskController.java"
click node_hello_endpoints "https://github.com/arun-subbiah/planner-application/blob/main/backend/src/main/java/com/example/taskManager/HelloController.java"
click node_cors "https://github.com/arun-subbiah/planner-application/blob/main/backend/src/main/java/com/example/taskManager/config/WebConfig.java"
click node_task "https://github.com/arun-subbiah/planner-application/blob/main/backend/src/main/java/com/example/taskManager/Task.java"
click node_task_repository "https://github.com/arun-subbiah/planner-application/blob/main/backend/src/main/java/com/example/taskManager/TaskRepository.java"
click node_db_config "https://github.com/arun-subbiah/planner-application/blob/main/backend/src/main/resources/application.properties"

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_html,node_frontend_entry,node_app,node_add_task,node_task_list,node_task_item,node_calendar,node_work_session toneBlue
class node_spring_boot,node_task_controller,node_hello_endpoints,node_cors,node_task,node_task_repository,node_db_config toneAmber
class node_browser,node_postgres toneNeutral
```

## Components

### React frontend

Node/npm browser application.

- [HTML host page](https://github.com/arun-subbiah/planner-application/blob/main/frontend/public/index.html): static host · `frontend/public/index.html`
- [React entry](https://github.com/arun-subbiah/planner-application/blob/main/frontend/src/index.js): browser bootstrap · `frontend/src/index.js`
- [App composition](https://github.com/arun-subbiah/planner-application/blob/main/frontend/src/App.js): UI orchestration · Coordinates client state and backend interaction. · `frontend/src/App.js`
- [Add task](https://github.com/arun-subbiah/planner-application/blob/main/frontend/src/components/AddTask.js): UI component · `frontend/src/components/AddTask.js`
- [Task list](https://github.com/arun-subbiah/planner-application/blob/main/frontend/src/components/TaskList.js): UI component · Renders task collection and owns colocated list styling. · `frontend/src/components/TaskList.js`
- [Task item](https://github.com/arun-subbiah/planner-application/blob/main/frontend/src/components/TaskItem.js): UI component · `frontend/src/components/TaskItem.js`
- [Calendar planning](https://github.com/arun-subbiah/planner-application/blob/main/frontend/src/components/Calendar.js): UI component · `frontend/src/components/Calendar.js`
- [Work session](https://github.com/arun-subbiah/planner-application/blob/main/frontend/src/components/WorkSession.js): UI component · `frontend/src/components/WorkSession.js`

### Spring backend

Maven/Spring Boot server application.

- [Spring Boot entry](https://github.com/arun-subbiah/planner-application/blob/main/backend/src/main/java/com/example/taskManager/TaskManagerApplication.java): JVM application · `backend/src/main/java/com/example/taskManager/TaskManagerApplication.java`
- [Task API](https://github.com/arun-subbiah/planner-application/blob/main/backend/src/main/java/com/example/taskManager/TaskController.java): HTTP controller · Primary task endpoint boundary. · `backend/src/main/java/com/example/taskManager/TaskController.java`
- [Hello endpoints](https://github.com/arun-subbiah/planner-application/blob/main/backend/src/main/java/com/example/taskManager/HelloController.java): diagnostic controllers · Connectivity or diagnostic HTTP endpoints. · `backend/src/main/java/com/example/taskManager/HelloController.java`
- [CORS policy](https://github.com/arun-subbiah/planner-application/blob/main/backend/src/main/java/com/example/taskManager/config/WebConfig.java): web configuration · Controls browser-origin access to the backend. · `backend/src/main/java/com/example/taskManager/config/WebConfig.java`
- [Task domain](https://github.com/arun-subbiah/planner-application/blob/main/backend/src/main/java/com/example/taskManager/Task.java): domain model · `backend/src/main/java/com/example/taskManager/Task.java`
- [Task repository](https://github.com/arun-subbiah/planner-application/blob/main/backend/src/main/java/com/example/taskManager/TaskRepository.java): persistence port · `backend/src/main/java/com/example/taskManager/TaskRepository.java`
- [Database properties](https://github.com/arun-subbiah/planner-application/blob/main/backend/src/main/resources/application.properties): runtime configuration · `backend/src/main/resources/application.properties`

### Other components

- **Browser**: runtime
- **PostgreSQL**: database · Material intended or tested persistence integration.

## Connections

- Browser → HTML host page: loads
- HTML host page → React entry: hosts
- React entry → App composition: mounts
- App composition → Add task: composes
- App composition → Task list: composes
- Task list → Task item: renders
- App composition → Calendar planning: composes
- App composition → Work session: composes
- Add task → Task API: task requests
- App composition → Task API: fetches task data
- CORS policy → Task API: permits browser origins
- Spring Boot entry → Task API: serves
- Spring Boot entry → Hello endpoints: serves
- Task API → Task domain: uses
- Task API → Task repository: persists through
- Task repository → PostgreSQL: stores tasks
- Database properties → PostgreSQL: configures connection
