# a7madbadri/taskatflow architecture

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

- Interactive diagram: https://gitdiagram.com/a7madbadri/taskatflow
- Repository: https://github.com/a7madbadri/taskatflow

## Overview

This is a Next.js task-management application with personal tasks, team collaboration, assignment tracking, notifications, and Google sign-in. Users authenticate, then view dashboards or enter task, team, and notification workflows; team owners can invite members and assign work. Server actions validate requests and coordinate service-layer operations backed by Prisma. The graph preserves the documented-by-source-index feature branches, but several UI and action implementations were not excerpted, so their internal links are omitted where evidence is insufficient.

Main entry points: [`lib/prisma.ts`](https://github.com/a7madbadri/taskatflow/blob/main/lib/prisma.ts) (Prisma Database), [`auth.ts`](https://github.com/a7madbadri/taskatflow/blob/main/auth.ts) (Authentication), [`lib/actions/team.actions.ts`](https://github.com/a7madbadri/taskatflow/blob/main/lib/actions/team.actions.ts) (Team Actions), [`app/(user)/dashboard/page.tsx`](https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/dashboard/page.tsx) (Task Dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and Shell"]
  node_signin["Sign-In Screen<br/>[SignInForm.tsx]"]
  node_auth["Authentication<br/>[auth.ts]"]
end

subgraph group_personal["Personal Tasks"]
  node_dashboard["Task Dashboard<br/>[page.tsx]"]
  node_recentpersonal["Recent Personal Tasks"]
  node_recentteams["Recent Team Tasks"]
  node_minitask["Task Summary Item<br/>[MiniTask.tsx]"]
  node_taskspage["Personal Tasks Page<br/>[page.tsx]"]
  node_mytasks["Personal Task List<br/>[MyTasks.tsx]"]
  node_task["Task Controls<br/>[Task.tsx]"]
  node_taskactions["Task Actions<br/>[task.actions.ts]"]
end

subgraph group_teams["Team Collaboration"]
  node_teamspage["Teams Page<br/>[page.tsx]"]
  node_teamdetail["Team Detail<br/>[page.tsx]"]
  node_teamtasks["Team Task List<br/>[TeamTasks.tsx]"]
  node_assignment["Task Assignment<br/>[Assignment.tsx]"]
  node_teamtaskform["Team Task Form"]
  node_teamactions["Team Actions<br/>[team.actions.ts]"]
  node_teamsvc["Team Services<br/>[team.services.ts]"]
  node_membersvc["Membership Services"]
  node_invitepage["Invite Members<br/>[page.tsx]"]
end

subgraph group_notifications["Notifications and Services"]
  node_notificationspage["Notifications Page<br/>[page.tsx]"]
  node_notification["Notification Item<br/>[Notification.tsx]"]
  node_notificationheader["Notification Header"]
  node_notificationactions["Notification Actions"]
  node_notificationsvc["Notification Services"]
end

subgraph group_data["Persistence"]
  node_prisma[("Prisma Database<br/>[prisma.ts]")]
end

node_user(("User"))
node_google(("Google Sign-In"))

node_user -->|"opens"| node_signin
node_signin -->|"signs in"| node_auth
node_auth -->|"authenticates with"| node_google
node_auth -->|"uses adapter"| node_prisma
node_user -.->|"views"| node_dashboard
node_dashboard -->|"checks session"| node_auth
node_dashboard -->|"queries tasks"| node_prisma
node_dashboard -->|"renders"| node_recentpersonal
node_dashboard -->|"renders"| node_recentteams
node_recentpersonal -->|"renders"| node_minitask
node_recentteams -->|"renders"| node_minitask
node_minitask -->|"calls"| node_taskactions
node_user -.->|"manages tasks"| node_taskspage
node_taskspage -.->|"renders"| node_mytasks
node_mytasks -->|"renders"| node_task
node_task -->|"calls"| node_taskactions
node_user -.->|"manages teams"| node_teamspage
node_teamdetail -->|"checks session"| node_auth
node_teamdetail -->|"loads team"| node_prisma
node_teamdetail -->|"renders"| node_teamtasks
node_teamtasks -->|"renders"| node_assignment
node_teamtasks -->|"renders"| node_teamtaskform
node_assignment -->|"calls"| node_teamactions
node_teamtaskform -->|"calls"| node_teamactions
node_teamactions -->|"checks session"| node_auth
node_teamactions -->|"calls"| node_teamsvc
node_teamactions -->|"calls"| node_membersvc
node_teamactions -.->|"accesses via services"| node_prisma
node_teamsvc -->|"creates memberships"| node_membersvc
node_teamsvc -->|"creates invitations"| node_notificationsvc
node_teamsvc -->|"reads and writes"| node_prisma
node_membersvc -->|"marks read"| node_notificationsvc
node_membersvc -->|"reads and writes"| node_prisma
node_notificationsvc -->|"reads and writes"| node_prisma
node_user -.->|"invites members"| node_invitepage
node_user -.->|"views notifications"| node_notificationspage
node_notificationspage -->|"checks session"| node_auth
node_notificationspage -->|"loads counts"| node_prisma
node_notificationspage -->|"renders"| node_notification
node_notification -->|"calls"| node_notificationactions
node_notificationheader -->|"calls"| node_notificationactions

click node_signin "https://github.com/a7madbadri/taskatflow/blob/main/app/auth/signin/SignInForm.tsx"
click node_auth "https://github.com/a7madbadri/taskatflow/blob/main/auth.ts"
click node_dashboard "https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/dashboard/page.tsx"
click node_recentpersonal "https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/dashboard/components/LatestPersonalTasks.tsx"
click node_recentteams "https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/dashboard/components/LatestTeamsTasks.tsx"
click node_minitask "https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/dashboard/components/MiniTask.tsx"
click node_taskspage "https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/tasks/page.tsx"
click node_mytasks "https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/tasks/components/MyTasks.tsx"
click node_task "https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/tasks/components/Task.tsx"
click node_taskactions "https://github.com/a7madbadri/taskatflow/blob/main/lib/actions/task.actions.ts"
click node_teamspage "https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/teams/page.tsx"
click node_teamdetail "https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/teams/%5Bid%5D/page.tsx"
click node_teamtasks "https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/teams/components/TeamTasks.tsx"
click node_assignment "https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/teams/components/Assignment.tsx"
click node_teamtaskform "https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/teams/components/CreateEditTeamTask.tsx"
click node_teamactions "https://github.com/a7madbadri/taskatflow/blob/main/lib/actions/team.actions.ts"
click node_teamsvc "https://github.com/a7madbadri/taskatflow/blob/main/lib/services/team.services.ts"
click node_membersvc "https://github.com/a7madbadri/taskatflow/blob/main/lib/services/membership.services.ts"
click node_invitepage "https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/teams/%5Bid%5D/invite-members/page.tsx"
click node_notificationspage "https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/notifications/page.tsx"
click node_notification "https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/notifications/components/Notification.tsx"
click node_notificationheader "https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/notifications/components/NotificationsHeader.tsx"
click node_notificationactions "https://github.com/a7madbadri/taskatflow/blob/main/lib/actions/notification.actions.ts"
click node_notificationsvc "https://github.com/a7madbadri/taskatflow/blob/main/lib/services/notificatoin.services.ts"
click node_prisma "https://github.com/a7madbadri/taskatflow/blob/main/lib/prisma.ts"

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_signin,node_auth,node_user toneBlue
class node_dashboard,node_recentpersonal,node_recentteams,node_minitask,node_taskspage,node_mytasks,node_task,node_taskactions toneAmber
class node_teamspage,node_teamdetail,node_teamtasks,node_assignment,node_teamtaskform,node_teamactions,node_teamsvc,node_membersvc,node_invitepage toneMint
class node_notificationspage,node_notification,node_notificationheader,node_notificationactions,node_notificationsvc toneRose
class node_prisma,node_google toneIndigo
```

## Components

### Access and Shell

- [Sign-In Screen](https://github.com/a7madbadri/taskatflow/blob/main/app/auth/signin/SignInForm.tsx): `app/auth/signin/SignInForm.tsx`
- [Authentication](https://github.com/a7madbadri/taskatflow/blob/main/auth.ts): `auth.ts`

### Personal Tasks

- [Task Dashboard](https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/dashboard/page.tsx): `app/(user)/dashboard/page.tsx`
- [Recent Personal Tasks](https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/dashboard/components/LatestPersonalTasks.tsx): `app/(user)/dashboard/components/LatestPersonalTasks.tsx`
- [Recent Team Tasks](https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/dashboard/components/LatestTeamsTasks.tsx): `app/(user)/dashboard/components/LatestTeamsTasks.tsx`
- [Task Summary Item](https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/dashboard/components/MiniTask.tsx): `app/(user)/dashboard/components/MiniTask.tsx`
- [Personal Tasks Page](https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/tasks/page.tsx): `app/(user)/tasks/page.tsx`
- [Personal Task List](https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/tasks/components/MyTasks.tsx): `app/(user)/tasks/components/MyTasks.tsx`
- [Task Controls](https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/tasks/components/Task.tsx): `app/(user)/tasks/components/Task.tsx`
- [Task Actions](https://github.com/a7madbadri/taskatflow/blob/main/lib/actions/task.actions.ts): `lib/actions/task.actions.ts`

### Team Collaboration

- [Teams Page](https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/teams/page.tsx): `app/(user)/teams/page.tsx`
- [Team Detail](https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/teams/%5Bid%5D/page.tsx): `app/(user)/teams/[id]/page.tsx`
- [Team Task List](https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/teams/components/TeamTasks.tsx): `app/(user)/teams/components/TeamTasks.tsx`
- [Task Assignment](https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/teams/components/Assignment.tsx): `app/(user)/teams/components/Assignment.tsx`
- [Team Task Form](https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/teams/components/CreateEditTeamTask.tsx): `app/(user)/teams/components/CreateEditTeamTask.tsx`
- [Team Actions](https://github.com/a7madbadri/taskatflow/blob/main/lib/actions/team.actions.ts): `lib/actions/team.actions.ts`
- [Team Services](https://github.com/a7madbadri/taskatflow/blob/main/lib/services/team.services.ts): `lib/services/team.services.ts`
- [Membership Services](https://github.com/a7madbadri/taskatflow/blob/main/lib/services/membership.services.ts): `lib/services/membership.services.ts`
- [Invite Members](https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/teams/%5Bid%5D/invite-members/page.tsx): `app/(user)/teams/[id]/invite-members/page.tsx`

### Notifications and Services

- [Notifications Page](https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/notifications/page.tsx): `app/(user)/notifications/page.tsx`
- [Notification Item](https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/notifications/components/Notification.tsx): `app/(user)/notifications/components/Notification.tsx`
- [Notification Header](https://github.com/a7madbadri/taskatflow/blob/main/app/(user)/notifications/components/NotificationsHeader.tsx): `app/(user)/notifications/components/NotificationsHeader.tsx`
- [Notification Actions](https://github.com/a7madbadri/taskatflow/blob/main/lib/actions/notification.actions.ts): `lib/actions/notification.actions.ts`
- [Notification Services](https://github.com/a7madbadri/taskatflow/blob/main/lib/services/notificatoin.services.ts): `lib/services/notificatoin.services.ts`

### Persistence

- [Prisma Database](https://github.com/a7madbadri/taskatflow/blob/main/lib/prisma.ts): `lib/prisma.ts`

### Other components

- **User**
- **Google Sign-In**

## Connections

- User → Sign-In Screen: opens
- Sign-In Screen → Authentication: signs in (evidence: `app/auth/signin/SignInForm.tsx`)
- Authentication → Google Sign-In: authenticates with (evidence: `auth.ts`)
- Authentication → Prisma Database: uses adapter (evidence: `auth.ts`)
- User → Task Dashboard: views
- Task Dashboard → Authentication: checks session (evidence: `app/(user)/dashboard/page.tsx`)
- Task Dashboard → Prisma Database: queries tasks (evidence: `app/(user)/dashboard/page.tsx`)
- Task Dashboard → Recent Personal Tasks: renders (evidence: `app/(user)/dashboard/page.tsx`)
- Task Dashboard → Recent Team Tasks: renders (evidence: `app/(user)/dashboard/page.tsx`)
- Recent Personal Tasks → Task Summary Item: renders (evidence: `app/(user)/dashboard/components/LatestPersonalTasks.tsx`)
- Recent Team Tasks → Task Summary Item: renders (evidence: `app/(user)/dashboard/components/LatestTeamsTasks.tsx`)
- Task Summary Item → Task Actions: calls (evidence: `app/(user)/dashboard/components/MiniTask.tsx`)
- User → Personal Tasks Page: manages tasks
- Personal Tasks Page → Personal Task List: renders
- Personal Task List → Task Controls: renders (evidence: `app/(user)/tasks/components/MyTasks.tsx`)
- Task Controls → Task Actions: calls (evidence: `app/(user)/tasks/components/Task.tsx`)
- User → Teams Page: manages teams
- Team Detail → Authentication: checks session (evidence: `app/(user)/teams/[id]/page.tsx`)
- Team Detail → Prisma Database: loads team (evidence: `app/(user)/teams/[id]/page.tsx`)
- Team Detail → Team Task List: renders (evidence: `app/(user)/teams/[id]/page.tsx`)
- Team Task List → Task Assignment: renders (evidence: `app/(user)/teams/components/TeamTasks.tsx`)
- Team Task List → Team Task Form: renders (evidence: `app/(user)/teams/components/TeamTasks.tsx`)
- Task Assignment → Team Actions: calls (evidence: `app/(user)/teams/components/Assignment.tsx`)
- Team Task Form → Team Actions: calls (evidence: `app/(user)/teams/components/CreateEditTeamTask.tsx`)
- Team Actions → Authentication: checks session (evidence: `lib/actions/team.actions.ts`)
- Team Actions → Team Services: calls (evidence: `lib/actions/team.actions.ts`)
- Team Actions → Membership Services: calls (evidence: `lib/actions/team.actions.ts`)
- Team Actions → Prisma Database: accesses via services
- Team Services → Membership Services: creates memberships (evidence: `lib/services/team.services.ts`)
- Team Services → Notification Services: creates invitations (evidence: `lib/services/team.services.ts`)
- Team Services → Prisma Database: reads and writes (evidence: `lib/services/team.services.ts`)
- Membership Services → Notification Services: marks read (evidence: `lib/services/membership.services.ts`)
- Membership Services → Prisma Database: reads and writes (evidence: `lib/services/membership.services.ts`)
- Notification Services → Prisma Database: reads and writes (evidence: `lib/services/notificatoin.services.ts`)
- User → Invite Members: invites members
- User → Notifications Page: views notifications
- Notifications Page → Authentication: checks session (evidence: `app/(user)/notifications/page.tsx`)
- Notifications Page → Prisma Database: loads counts (evidence: `app/(user)/notifications/page.tsx`)
- Notifications Page → Notification Item: renders (evidence: `app/(user)/notifications/page.tsx`)
- Notification Item → Notification Actions: calls (evidence: `app/(user)/notifications/components/Notification.tsx`)
- Notification Header → Notification Actions: calls (evidence: `app/(user)/notifications/components/NotificationsHeader.tsx`)
