# shalini-576-cse/focusflow architecture

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

- Interactive diagram: https://gitdiagram.com/shalini-576-cse/focusflow
- Repository: https://github.com/shalini-576-cse/focusflow

## Overview

FocusFlow is a task-planning web app with account access, task and subtask management, and profile/password flows. The principal evidenced workflow is a user opening the routed client, viewing tasks, and fetching or updating them through the client API and server. The backend also exposes account and profile routes, stores users and tasks in MongoDB, and sends password-reset email. Dashboard and activity pages are present in the tree, but their behavior and wiring are not established by the sampled source.

Main entry points: [`client/src/App.jsx`](https://github.com/shalini-576-cse/focusflow/blob/main/client/src/App.jsx) (Route app), [`server/server.js`](https://github.com/shalini-576-cse/focusflow/blob/main/server/server.js) (HTTP server), [`server/controllers/authController.js`](https://github.com/shalini-576-cse/focusflow/blob/main/server/controllers/authController.js) (Account logic), [`server/routes/userRoutes.js`](https://github.com/shalini-576-cse/focusflow/blob/main/server/routes/userRoutes.js) (User routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_app["Route app<br/>[App.jsx]"]
  node_authpages["Account pages"]
  node_taskpages["Task pages<br/>[Tasks.jsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.jsx]"]
  node_activity["Activity<br/>[Activity.jsx]"]
  node_profilepage["Profile page<br/>[Profile.jsx]"]
  node_taskapi["Task API client<br/>[taskApi.js]"]
end

subgraph group_server["API server"]
  node_server["HTTP server<br/>[server.js]"]
  node_authroutes["Auth routes<br/>[authRoutes.js]"]
  node_authcontroller["Account logic<br/>[authController.js]"]
  node_userroutes["User routes<br/>[userRoutes.js]"]
  node_usercontroller["Profile logic<br/>[userController.js]"]
  node_authmw["JWT protection<br/>[authMiddleware.js]"]
  node_taskroutes["Task routes<br/>[taskRoutes.js]"]
  node_emailutil["Email sender<br/>[sendEmail.js]"]
end

subgraph group_data["Persistence"]
  node_dbconfig["DB connection<br/>[db.js]"]
  node_users[("User records<br/>[User.js]")]
  node_tasks[("Task records<br/>[Task.js]")]
end

subgraph group_external["External services"]
  node_mongo[("MongoDB")]
  node_mailer["Email service"]
end

node_user(("User"))

node_user -->|"opens"| node_app
node_app -->|"routes"| node_authpages
node_app -->|"routes"| node_taskpages
node_app -->|"routes"| node_dashboard
node_app -->|"routes"| node_activity
node_app -->|"routes"| node_profilepage
node_taskpages -->|"requests"| node_taskapi
node_taskapi -->|"HTTP requests"| node_server
node_server -->|"dispatches"| node_authroutes
node_server -->|"dispatches"| node_userroutes
node_server -->|"dispatches"| node_taskroutes
node_server -->|"connects"| node_dbconfig
node_authroutes -->|"calls"| node_authcontroller
node_authcontroller -->|"reads/writes"| node_users
node_authcontroller -->|"sends reset mail"| node_emailutil
node_emailutil -->|"delivers"| node_mailer
node_userroutes -->|"protects routes"| node_authmw
node_userroutes -->|"calls"| node_usercontroller
node_usercontroller -->|"reads/writes"| node_users
node_authmw -->|"passes user"| node_usercontroller
node_taskroutes -->|"reads/writes"| node_tasks
node_dbconfig -->|"connects"| node_mongo

click node_app "https://github.com/shalini-576-cse/focusflow/blob/main/client/src/App.jsx"
click node_authpages "https://github.com/shalini-576-cse/focusflow/tree/main/client/src/pages"
click node_taskpages "https://github.com/shalini-576-cse/focusflow/blob/main/client/src/pages/Tasks.jsx"
click node_dashboard "https://github.com/shalini-576-cse/focusflow/blob/main/client/src/pages/Dashboard.jsx"
click node_activity "https://github.com/shalini-576-cse/focusflow/blob/main/client/src/pages/Activity.jsx"
click node_profilepage "https://github.com/shalini-576-cse/focusflow/blob/main/client/src/pages/Profile.jsx"
click node_taskapi "https://github.com/shalini-576-cse/focusflow/blob/main/client/src/api/taskApi.js"
click node_server "https://github.com/shalini-576-cse/focusflow/blob/main/server/server.js"
click node_authroutes "https://github.com/shalini-576-cse/focusflow/blob/main/server/routes/authRoutes.js"
click node_authcontroller "https://github.com/shalini-576-cse/focusflow/blob/main/server/controllers/authController.js"
click node_userroutes "https://github.com/shalini-576-cse/focusflow/blob/main/server/routes/userRoutes.js"
click node_usercontroller "https://github.com/shalini-576-cse/focusflow/blob/main/server/controllers/userController.js"
click node_authmw "https://github.com/shalini-576-cse/focusflow/blob/main/server/middleware/authMiddleware.js"
click node_taskroutes "https://github.com/shalini-576-cse/focusflow/blob/main/server/routes/taskRoutes.js"
click node_dbconfig "https://github.com/shalini-576-cse/focusflow/blob/main/server/config/db.js"
click node_users "https://github.com/shalini-576-cse/focusflow/blob/main/server/models/User.js"
click node_tasks "https://github.com/shalini-576-cse/focusflow/blob/main/server/models/Task.js"
click node_emailutil "https://github.com/shalini-576-cse/focusflow/blob/main/server/utils/sendEmail.js"

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_authpages,node_taskpages,node_dashboard,node_activity,node_profilepage,node_taskapi,node_user toneBlue
class node_server,node_authroutes,node_authcontroller,node_userroutes,node_usercontroller,node_authmw,node_taskroutes,node_emailutil toneAmber
class node_dbconfig,node_users,node_tasks toneMint
class node_mongo,node_mailer toneRose
```

## Components

### Web client

- [Route app](https://github.com/shalini-576-cse/focusflow/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Account pages](https://github.com/shalini-576-cse/focusflow/tree/main/client/src/pages): `client/src/pages`
- [Task pages](https://github.com/shalini-576-cse/focusflow/blob/main/client/src/pages/Tasks.jsx): `client/src/pages/Tasks.jsx`
- [Dashboard](https://github.com/shalini-576-cse/focusflow/blob/main/client/src/pages/Dashboard.jsx): `client/src/pages/Dashboard.jsx`
- [Activity](https://github.com/shalini-576-cse/focusflow/blob/main/client/src/pages/Activity.jsx): `client/src/pages/Activity.jsx`
- [Profile page](https://github.com/shalini-576-cse/focusflow/blob/main/client/src/pages/Profile.jsx): `client/src/pages/Profile.jsx`
- [Task API client](https://github.com/shalini-576-cse/focusflow/blob/main/client/src/api/taskApi.js): `client/src/api/taskApi.js`

### API server

- [HTTP server](https://github.com/shalini-576-cse/focusflow/blob/main/server/server.js): `server/server.js`
- [Auth routes](https://github.com/shalini-576-cse/focusflow/blob/main/server/routes/authRoutes.js): `server/routes/authRoutes.js`
- [Account logic](https://github.com/shalini-576-cse/focusflow/blob/main/server/controllers/authController.js): `server/controllers/authController.js`
- [User routes](https://github.com/shalini-576-cse/focusflow/blob/main/server/routes/userRoutes.js): `server/routes/userRoutes.js`
- [Profile logic](https://github.com/shalini-576-cse/focusflow/blob/main/server/controllers/userController.js): `server/controllers/userController.js`
- [JWT protection](https://github.com/shalini-576-cse/focusflow/blob/main/server/middleware/authMiddleware.js): `server/middleware/authMiddleware.js`
- [Task routes](https://github.com/shalini-576-cse/focusflow/blob/main/server/routes/taskRoutes.js): `server/routes/taskRoutes.js`
- [Email sender](https://github.com/shalini-576-cse/focusflow/blob/main/server/utils/sendEmail.js): `server/utils/sendEmail.js`

### Persistence

- [DB connection](https://github.com/shalini-576-cse/focusflow/blob/main/server/config/db.js): `server/config/db.js`
- [User records](https://github.com/shalini-576-cse/focusflow/blob/main/server/models/User.js): `server/models/User.js`
- [Task records](https://github.com/shalini-576-cse/focusflow/blob/main/server/models/Task.js): `server/models/Task.js`

### External services

- **MongoDB**
- **Email service**

### Other components

- **User**

## Connections

- User → Route app: opens
- Route app → Account pages: routes
- Route app → Task pages: routes
- Route app → Dashboard: routes
- Route app → Activity: routes
- Route app → Profile page: routes
- Task pages → Task API client: requests
- Task API client → HTTP server: HTTP requests
- HTTP server → Auth routes: dispatches
- HTTP server → User routes: dispatches
- HTTP server → Task routes: dispatches
- HTTP server → DB connection: connects
- Auth routes → Account logic: calls
- Account logic → User records: reads/writes
- Account logic → Email sender: sends reset mail
- Email sender → Email service: delivers
- User routes → JWT protection: protects routes
- User routes → Profile logic: calls
- Profile logic → User records: reads/writes
- JWT protection → Profile logic: passes user
- Task routes → Task records: reads/writes
- DB connection → MongoDB: connects
