# gourusaiteja1291-beep/task-queue architecture

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

- Interactive diagram: https://gitdiagram.com/gourusaiteja1291-beep/task-queue
- Repository: https://github.com/gourusaiteja1291-beep/task-queue

## Overview

This Spring Boot service accepts task submissions, stores them as PENDING, and returns task IDs without waiting for execution. A scheduled worker claims pending tasks, dispatches email, CSV import, JSON product import, or report-generation work, then records completion or failure; clients can retrieve tasks and filter by status. CSV and JSON imports can also persist validated products. The README documents these capabilities, while the sampled worker source confirms their implementation; external integrations beyond local CSV files and PostgreSQL are not shown.

Main entry points: [`src/main/java/com/taskqueue/task_queue/TaskWorker.java`](https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskWorker.java) (Scheduled Worker), [`src/main/java/com/taskqueue/task_queue/TaskController.java`](https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskController.java) (Task Controller), [`src/main/java/com/taskqueue/task_queue/TaskRepository.java`](https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskRepository.java) (Task Repository), [`src/main/java/com/taskqueue/task_queue/TaskService.java`](https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskService.java) (Task Service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Task API"]
  node_controller["Task Controller"]
  node_service["Task Service<br/>[TaskService.java]"]
end

subgraph group_worker["Background Processing"]
  node_application["Application Scheduler"]
  node_worker["Scheduled Worker<br/>[TaskWorker.java]"]
  node_email["Email Handler<br/>[TaskWorker.java]"]
  node_csv["CSV Import<br/>[TaskWorker.java]"]
  node_json["JSON Import<br/>[TaskWorker.java]"]
  node_report["Report Handler<br/>[TaskWorker.java]"]
end

subgraph group_storage["Persistence"]
  node_taskrepo["Task Repository"]
  node_task["Task Entity<br/>[Task.java]"]
  node_taskdb[("PostgreSQL Tasks")]
  node_productrepo["Product Repository"]
  node_product["Product Entity<br/>[Product.java]"]
  node_productdb[("PostgreSQL Products")]
end

node_client(("Client"))
node_csvfile["Local CSV File"]

node_client -->|"submits or queries"| node_controller
node_controller -->|"delegates"| node_service
node_service -->|"saves and queries"| node_taskrepo
node_taskrepo -->|"reads and writes"| node_taskdb
node_controller -->|"returns task data"| node_client
node_application -->|"enables scheduling"| node_worker
node_worker -->|"fetches and updates"| node_taskrepo
node_worker -->|"dispatches"| node_email
node_worker -->|"dispatches"| node_csv
node_worker -->|"dispatches"| node_json
node_worker -->|"dispatches"| node_report
node_worker -->|"reads path from"| node_csvfile
node_worker -->|"saves imported products"| node_productrepo
node_productrepo -->|"writes products"| node_productdb

click node_controller "https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskController.java"
click node_service "https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskService.java"
click node_application "https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskQueueApplication.java"
click node_worker "https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskWorker.java"
click node_email "https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskWorker.java"
click node_csv "https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskWorker.java"
click node_json "https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskWorker.java"
click node_report "https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskWorker.java"
click node_taskrepo "https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskRepository.java"
click node_task "https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/Task.java"
click node_productrepo "https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/ProductRepository.java"
click node_product "https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/Product.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_controller,node_service,node_client toneBlue
class node_application,node_worker,node_email,node_csv,node_json,node_report toneAmber
class node_taskrepo,node_task,node_taskdb,node_productrepo,node_product,node_productdb toneMint
class node_csvfile toneIndigo
```

## Components

### Task API

- [Task Controller](https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskController.java): `src/main/java/com/taskqueue/task_queue/TaskController.java`
- [Task Service](https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskService.java): `src/main/java/com/taskqueue/task_queue/TaskService.java`

### Background Processing

- [Application Scheduler](https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskQueueApplication.java): `src/main/java/com/taskqueue/task_queue/TaskQueueApplication.java`
- [Scheduled Worker](https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskWorker.java): `src/main/java/com/taskqueue/task_queue/TaskWorker.java`
- [Email Handler](https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskWorker.java): `src/main/java/com/taskqueue/task_queue/TaskWorker.java`
- [CSV Import](https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskWorker.java): `src/main/java/com/taskqueue/task_queue/TaskWorker.java`
- [JSON Import](https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskWorker.java): `src/main/java/com/taskqueue/task_queue/TaskWorker.java`
- [Report Handler](https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskWorker.java): `src/main/java/com/taskqueue/task_queue/TaskWorker.java`

### Persistence

- [Task Repository](https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/TaskRepository.java): `src/main/java/com/taskqueue/task_queue/TaskRepository.java`
- [Task Entity](https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/Task.java): `src/main/java/com/taskqueue/task_queue/Task.java`
- **PostgreSQL Tasks**
- [Product Repository](https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/ProductRepository.java): `src/main/java/com/taskqueue/task_queue/ProductRepository.java`
- [Product Entity](https://github.com/gourusaiteja1291-beep/task-queue/blob/master/src/main/java/com/taskqueue/task_queue/Product.java): `src/main/java/com/taskqueue/task_queue/Product.java`
- **PostgreSQL Products**

### Other components

- **Client**
- **Local CSV File**

## Connections

- Client → Task Controller: submits or queries
- Task Controller → Task Service: delegates
- Task Service → Task Repository: saves and queries
- Task Repository → PostgreSQL Tasks: reads and writes
- Task Controller → Client: returns task data
- Application Scheduler → Scheduled Worker: enables scheduling
- Scheduled Worker → Task Repository: fetches and updates
- Scheduled Worker → Email Handler: dispatches
- Scheduled Worker → CSV Import: dispatches
- Scheduled Worker → JSON Import: dispatches
- Scheduled Worker → Report Handler: dispatches
- Scheduled Worker → Local CSV File: reads path from
- Scheduled Worker → Product Repository: saves imported products
- Product Repository → PostgreSQL Products: writes products
