# loukoumane/manageproject architecture

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

- Interactive diagram: https://gitdiagram.com/loukoumane/manageproject
- Repository: https://github.com/loukoumane/manageproject
- Video tour (about a minute): https://gitdiagram.com/loukoumane/manageproject/video

## Overview

This is a Next.js project and task management app: users create projects, invite collaborators, create and assign prioritized tasks, then track task status and completion details. Its main workflow runs from project and task screens through server actions to Prisma and the SQLite database. Project roles gate operations, while Clerk supplies user identity. The README is still the default Next.js template, so product capabilities are inferred from the sampled screens and actions; unsampled action details and route wiring are not assumed.

Main entry points: [`app/actions.ts`](https://github.com/loukoumane/manageproject/blob/main/app/actions.ts) (Server actions), [`app/page.tsx`](https://github.com/loukoumane/manageproject/blob/main/app/page.tsx) (Project dashboard), [`app/general-projects/page.tsx`](https://github.com/loukoumane/manageproject/blob/main/app/general-projects/page.tsx) (Joined projects), [`app/components/ProjectComponent.tsx`](https://github.com/loukoumane/manageproject/blob/main/app/components/ProjectComponent.tsx) (Project card)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["App screens"]
  node_home["Project dashboard<br/>[page.tsx]"]
  node_projects["Joined projects<br/>[page.tsx]"]
  node_project_detail["Project task list<br/>[page.tsx]"]
  node_new_task["Create task<br/>[page.tsx]"]
  node_edit_task["Edit task<br/>[page.tsx]"]
  node_task_detail["Task details<br/>[page.tsx]"]
  node_auth_pages["Sign in and up"]
  node_project_card["Project card"]
end

subgraph group_domain["Project and task logic"]
  node_actions["Server actions<br/>[actions.ts]"]
  node_task_types["Task and role types<br/>[task.ts]"]
end

subgraph group_access["Identity and permissions"]
  node_permissions["Role permissions<br/>[permissions.ts]"]
  node_permission_hook["Permission hook"]
end

subgraph group_persistence["Data persistence"]
  node_prisma_client["Prisma client<br/>[prisma.ts]"]
  node_database[("SQLite database<br/>[dev.db]")]
end

node_user(("User"))
node_clerk["Clerk identity"]

node_user -->|"manages projects"| node_home
node_user -->|"joins projects"| node_projects
node_user -->|"signs in"| node_auth_pages
node_auth_pages -->|"authenticates"| node_clerk
node_home -->|"reads identity"| node_clerk
node_projects -->|"reads identity"| node_clerk
node_home -->|"creates and lists"| node_actions
node_projects -->|"joins and lists"| node_actions
node_project_detail -->|"loads and deletes"| node_actions
node_new_task -->|"loads and creates"| node_actions
node_edit_task -->|"loads and updates"| node_actions
node_task_detail -->|"loads and updates status"| node_actions
node_home -->|"renders"| node_project_card
node_projects -->|"renders"| node_project_card
node_project_card -->|"updates roles"| node_actions
node_project_card -->|"checks capabilities"| node_permission_hook
node_permission_hook -->|"checks role rules"| node_permissions
node_actions -->|"validates operations"| node_permissions
node_actions -->|"queries and writes"| node_prisma_client
node_prisma_client -->|"reads and writes"| node_database
node_actions -->|"uses task types"| node_task_types

click node_home "https://github.com/loukoumane/manageproject/blob/main/app/page.tsx"
click node_projects "https://github.com/loukoumane/manageproject/blob/main/app/general-projects/page.tsx"
click node_project_detail "https://github.com/loukoumane/manageproject/blob/main/app/project/%5BprojectId%5D/page.tsx"
click node_new_task "https://github.com/loukoumane/manageproject/blob/main/app/new-tasks/%5BprojectId%5D/page.tsx"
click node_edit_task "https://github.com/loukoumane/manageproject/blob/main/app/edit-task/%5BtaskId%5D/page.tsx"
click node_task_detail "https://github.com/loukoumane/manageproject/blob/main/app/task-details/%5BtaskId%5D/page.tsx"
click node_project_card "https://github.com/loukoumane/manageproject/blob/main/app/components/ProjectComponent.tsx"
click node_actions "https://github.com/loukoumane/manageproject/blob/main/app/actions.ts"
click node_task_types "https://github.com/loukoumane/manageproject/blob/main/app/lib/task.ts"
click node_permissions "https://github.com/loukoumane/manageproject/blob/main/app/lib/permissions.ts"
click node_permission_hook "https://github.com/loukoumane/manageproject/blob/main/app/hooks/useProjectPermissions.ts"
click node_prisma_client "https://github.com/loukoumane/manageproject/blob/main/app/lib/prisma.ts"
click node_database "https://github.com/loukoumane/manageproject/blob/main/dev.db"

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_home,node_projects,node_project_detail,node_new_task,node_edit_task,node_task_detail,node_auth_pages,node_project_card,node_user toneBlue
class node_actions,node_task_types toneAmber
class node_permissions,node_permission_hook toneMint
class node_prisma_client,node_database toneRose
class node_clerk toneIndigo
```

## Components

### App screens

- [Project dashboard](https://github.com/loukoumane/manageproject/blob/main/app/page.tsx): `app/page.tsx`
- [Joined projects](https://github.com/loukoumane/manageproject/blob/main/app/general-projects/page.tsx): `app/general-projects/page.tsx`
- [Project task list](https://github.com/loukoumane/manageproject/blob/main/app/project/%5BprojectId%5D/page.tsx): `app/project/[projectId]/page.tsx`
- [Create task](https://github.com/loukoumane/manageproject/blob/main/app/new-tasks/%5BprojectId%5D/page.tsx): `app/new-tasks/[projectId]/page.tsx`
- [Edit task](https://github.com/loukoumane/manageproject/blob/main/app/edit-task/%5BtaskId%5D/page.tsx): `app/edit-task/[taskId]/page.tsx`
- [Task details](https://github.com/loukoumane/manageproject/blob/main/app/task-details/%5BtaskId%5D/page.tsx): `app/task-details/[taskId]/page.tsx`
- **Sign in and up**
- [Project card](https://github.com/loukoumane/manageproject/blob/main/app/components/ProjectComponent.tsx): `app/components/ProjectComponent.tsx`

### Project and task logic

- [Server actions](https://github.com/loukoumane/manageproject/blob/main/app/actions.ts): `app/actions.ts`
- [Task and role types](https://github.com/loukoumane/manageproject/blob/main/app/lib/task.ts): `app/lib/task.ts`

### Identity and permissions

- [Role permissions](https://github.com/loukoumane/manageproject/blob/main/app/lib/permissions.ts): `app/lib/permissions.ts`
- [Permission hook](https://github.com/loukoumane/manageproject/blob/main/app/hooks/useProjectPermissions.ts): `app/hooks/useProjectPermissions.ts`

### Data persistence

- [Prisma client](https://github.com/loukoumane/manageproject/blob/main/app/lib/prisma.ts): `app/lib/prisma.ts`
- [SQLite database](https://github.com/loukoumane/manageproject/blob/main/dev.db): `dev.db`

### Other components

- **User**
- **Clerk identity**

## Connections

- User → Project dashboard: manages projects
- User → Joined projects: joins projects
- User → Sign in and up: signs in
- Sign in and up → Clerk identity: authenticates
- Project dashboard → Clerk identity: reads identity
- Joined projects → Clerk identity: reads identity
- Project dashboard → Server actions: creates and lists
- Joined projects → Server actions: joins and lists
- Project task list → Server actions: loads and deletes
- Create task → Server actions: loads and creates
- Edit task → Server actions: loads and updates
- Task details → Server actions: loads and updates status
- Project dashboard → Project card: renders
- Joined projects → Project card: renders
- Project card → Server actions: updates roles
- Project card → Permission hook: checks capabilities
- Permission hook → Role permissions: checks role rules
- Server actions → Role permissions: validates operations
- Server actions → Prisma client: queries and writes
- Prisma client → SQLite database: reads and writes
- Server actions → Task and role types: uses task types
