# zaidbagawan/taskflow_pro_git architecture

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

- Interactive diagram: https://gitdiagram.com/zaidbagawan/taskflow_pro_git
- Repository: https://github.com/zaidbagawan/taskflow_pro_git

## Overview

TaskFlow Pro is a Django REST API for email-OTP authentication, role-aware task assignment and updates, and audit-log review. The main workflow is a client request routed through account URLs to API views, which validate and authorize requests before using services and models; task changes also trigger audit logging. OTP and task notifications use email, and successful OTP verification returns JWTs. Source excerpts establish the main calls; project-level URL mounting and database configuration were not sampled, so those connections are not asserted.

Main entry points: [`accounts/services.py`](https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/services.py) (Account services), [`accounts/views.py`](https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/views.py) (Request views), [`accounts/signals.py`](https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/signals.py) (Audit signals), [`accounts/models.py`](https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/models.py) (Account and task models)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API layer"]
  node_routes["Account routes<br/>[urls.py]"]
  node_views["Request views<br/>[views.py]"]
  node_serializers["Request serializers<br/>[serializers.py]"]
  node_permissions["Access rules<br/>[permissions.py]"]
end

subgraph group_domain["Accounts and tasks"]
  node_services["Account services<br/>[services.py]"]
  node_models["Account and task models<br/>[models.py]"]
  node_otpgen["OTP generator<br/>[utils.py]"]
  node_jwt["JWT token service"]
  node_email["Email service"]
end

subgraph group_audit["Audit trail"]
  node_middleware["Current-user middleware<br/>[middleware.py]"]
  node_signals["Audit signals<br/>[signals.py]"]
  node_auditstore[("Audit-log records<br/>[models.py]")]
  node_jsonlogs["JSON audit files<br/>[signals.py]"]
end

node_client(("API client"))

node_client -->|"calls API"| node_routes
node_routes -->|"routes requests"| node_views
node_views -->|"validates data"| node_serializers
node_views -->|"checks access"| node_permissions
node_views -->|"invokes services"| node_services
node_views -->|"queries tasks"| node_models
node_services -->|"reads and writes"| node_models
node_services -->|"generates OTP"| node_otpgen
node_services -->|"sends messages"| node_email
node_services -->|"issues tokens"| node_jwt
node_services -.->|"saves task changes"| node_auditstore
node_signals -->|"observes model changes"| node_models
node_signals -->|"writes audit entries"| node_auditstore
node_signals -->|"writes JSON logs"| node_jsonlogs
node_signals -->|"gets current user"| node_middleware
node_models -->|"dispatches save events"| node_signals

click node_routes "https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/urls.py"
click node_views "https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/views.py"
click node_serializers "https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/serializers.py"
click node_permissions "https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/permissions.py"
click node_services "https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/services.py"
click node_models "https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/models.py"
click node_otpgen "https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/utils.py"
click node_middleware "https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/middleware.py"
click node_signals "https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/signals.py"
click node_auditstore "https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/models.py"
click node_jsonlogs "https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/signals.py"

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_routes,node_views,node_serializers,node_permissions,node_client toneBlue
class node_services,node_models,node_otpgen,node_jwt,node_email toneAmber
class node_middleware,node_signals,node_auditstore,node_jsonlogs toneMint
```

## Components

### API layer

- [Account routes](https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/urls.py): `accounts/urls.py`
- [Request views](https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/views.py): `accounts/views.py`
- [Request serializers](https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/serializers.py): `accounts/serializers.py`
- [Access rules](https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/permissions.py): `accounts/permissions.py`

### Accounts and tasks

- [Account services](https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/services.py): `accounts/services.py`
- [Account and task models](https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/models.py): `accounts/models.py`
- [OTP generator](https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/utils.py): `accounts/utils.py`
- **JWT token service**
- **Email service**

### Audit trail

- [Current-user middleware](https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/middleware.py): `accounts/middleware.py`
- [Audit signals](https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/signals.py): `accounts/signals.py`
- [Audit-log records](https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/models.py): `accounts/models.py`
- [JSON audit files](https://github.com/zaidbagawan/taskflow_pro_git/blob/main/accounts/signals.py): `accounts/signals.py`

### Other components

- **API client**

## Connections

- API client → Account routes: calls API (evidence: `accounts/urls.py`)
- Account routes → Request views: routes requests (evidence: `accounts/urls.py`)
- Request views → Request serializers: validates data (evidence: `accounts/views.py`)
- Request views → Access rules: checks access (evidence: `accounts/views.py`)
- Request views → Account services: invokes services (evidence: `accounts/views.py`)
- Request views → Account and task models: queries tasks (evidence: `accounts/views.py`)
- Account services → Account and task models: reads and writes (evidence: `accounts/services.py`)
- Account services → OTP generator: generates OTP (evidence: `accounts/services.py`)
- Account services → Email service: sends messages (evidence: `accounts/services.py`)
- Account services → JWT token service: issues tokens (evidence: `accounts/services.py`)
- Account services → Audit-log records: saves task changes (evidence: `accounts/services.py`)
- Audit signals → Account and task models: observes model changes (evidence: `accounts/signals.py`)
- Audit signals → Audit-log records: writes audit entries (evidence: `accounts/signals.py`)
- Audit signals → JSON audit files: writes JSON logs (evidence: `accounts/signals.py`)
- Audit signals → Current-user middleware: gets current user (evidence: `accounts/signals.py`)
- Account and task models → Audit signals: dispatches save events (evidence: `accounts/signals.py`)
