# jackncodke/taskly-app architecture

> Architecture diagram of the GitHub repository jackncodke/taskly-app, 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/jackncodke/taskly-app
- Repository: https://github.com/jackncodke/taskly-app

## Overview

Taskly is a personal project-and-task manager with a Laravel backend and React/Inertia interface, plus a token-authenticated REST API. The main workflow is account access, project selection, task creation and editing, then list/kanban status and ordering changes; attachments accompany tasks. With no project selected, the dashboard summarizes progress, achievements, project status counts, overdue tasks, and upcoming deadlines. The graph includes documented capabilities whose internals were not sampled, but omits uncertain wiring; several controller and route behaviors are inferred only from README descriptions and the repository tree.

Main entry points: [`app/Http/Controllers/DashboardController.php`](https://github.com/jackncodke/taskly-app/blob/main/app/Http/Controllers/DashboardController.php) (Dashboard assembly), [`routes/web.php`](https://github.com/jackncodke/taskly-app/blob/main/routes/web.php) (Web routes), [`app/Http/Controllers/TaskController.php`](https://github.com/jackncodke/taskly-app/blob/main/app/Http/Controllers/TaskController.php) (Task management), [`app/Http/Controllers/Api/V1/TaskController.php`](https://github.com/jackncodke/taskly-app/blob/main/app/Http/Controllers/Api/V1/TaskController.php) (API tasks)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Accounts and access"]
  node_auth_web["Session auth"]
  node_user_model[("User accounts<br/>[User.php]")]
  node_auth_ui["Login and registration<br/>[login.tsx]"]
end

subgraph group_work["Projects and tasks"]
  node_project_web["Project management"]
  node_task_web["Task management<br/>[TaskController.php]"]
  node_attachment_web["Attachment access"]
  node_project_model[("Projects<br/>[Project.php]")]
  node_task_model[("Tasks and order<br/>[Task.php]")]
  node_attachment_model[("Task attachments<br/>[TaskAttachment.php]")]
  node_private_files[("Private file storage")]
  node_status["Task statuses<br/>[TaskStatus.php]"]
  node_task_ui["Task list and board<br/>[task-board.tsx]"]
end

subgraph group_insights["Dashboard and progress"]
  node_dashboard["Dashboard assembly"]
  node_achievement["Achievement catalog<br/>[Achievement.php]"]
  node_earned[("Earned achievements")]
  node_dashboard_ui["Dashboard panels<br/>[overview-panel.tsx]"]
end

subgraph group_interfaces["User interfaces"]
  node_web_routes["Web routes<br/>[web.php]"]
  node_web_ui["Inertia React app<br/>[app.tsx]"]
end

subgraph group_api["REST API"]
  node_auth_api["Token auth"]
  node_api_routes["API routes<br/>[api.php]"]
  node_api_project["API projects"]
  node_api_task["API tasks<br/>[TaskController.php]"]
  node_sanctum["Sanctum tokens"]
end

node_person(("User"))
node_browser(("Browser"))

node_person -->|"uses"| node_browser
node_browser -->|"requests pages"| node_web_routes
node_web_routes -->|"dispatches"| node_auth_web
node_auth_web -->|"creates account"| node_user_model
node_auth_web -->|"renders auth"| node_web_ui
node_web_routes -->|"dispatches"| node_dashboard
node_web_routes -->|"dispatches"| node_project_web
node_web_routes -->|"dispatches"| node_task_web
node_web_routes -->|"dispatches"| node_attachment_web
node_dashboard -->|"reads projects"| node_project_model
node_dashboard -->|"reads tasks"| node_task_model
node_dashboard -->|"reads earned"| node_earned
node_dashboard -->|"builds catalog"| node_achievement
node_dashboard -->|"uses options"| node_status
node_dashboard -->|"renders data"| node_web_ui
node_project_web -->|"manages projects"| node_project_model
node_task_web -->|"writes tasks"| node_task_model
node_task_web -->|"applies order"| node_project_model
node_task_web -->|"validates status"| node_status
node_task_web -->|"adds uploads"| node_attachment_model
node_task_model -->|"deletes attachments"| node_attachment_model
node_attachment_web -->|"reads attachments"| node_attachment_model
node_attachment_web -->|"serves downloads"| node_private_files
node_attachment_model -->|"stores files"| node_private_files
node_web_ui -->|"shows panels"| node_dashboard_ui
node_web_ui -->|"shows tasks"| node_task_ui
node_web_ui -->|"shows auth"| node_auth_ui
node_task_ui -->|"submits changes"| node_web_routes
node_dashboard_ui -->|"opens task"| node_task_ui
node_person -.->|"calls API"| node_api_routes
node_api_routes -->|"dispatches"| node_auth_api
node_auth_api -->|"creates account"| node_user_model
node_auth_api -->|"issues token"| node_sanctum
node_api_routes -->|"dispatches"| node_api_project
node_api_routes -->|"dispatches"| node_api_task
node_api_project -->|"manages projects"| node_project_model
node_api_task -->|"checks ownership"| node_project_model
node_api_task -->|"reads and writes"| node_task_model
node_api_task -->|"handles uploads"| node_attachment_model
node_api_task -->|"validates status"| node_status

click node_web_routes "https://github.com/jackncodke/taskly-app/blob/main/routes/web.php"
click node_auth_web "https://github.com/jackncodke/taskly-app/tree/main/app/Http/Controllers/Auth"
click node_auth_api "https://github.com/jackncodke/taskly-app/tree/main/app/Http/Controllers/Api/V1/Auth"
click node_user_model "https://github.com/jackncodke/taskly-app/blob/main/app/Models/User.php"
click node_dashboard "https://github.com/jackncodke/taskly-app/blob/main/app/Http/Controllers/DashboardController.php"
click node_project_web "https://github.com/jackncodke/taskly-app/blob/main/app/Http/Controllers/ProjectController.php"
click node_task_web "https://github.com/jackncodke/taskly-app/blob/main/app/Http/Controllers/TaskController.php"
click node_attachment_web "https://github.com/jackncodke/taskly-app/blob/main/app/Http/Controllers/TaskAttachmentController.php"
click node_project_model "https://github.com/jackncodke/taskly-app/blob/main/app/Models/Project.php"
click node_task_model "https://github.com/jackncodke/taskly-app/blob/main/app/Models/Task.php"
click node_attachment_model "https://github.com/jackncodke/taskly-app/blob/main/app/Models/TaskAttachment.php"
click node_status "https://github.com/jackncodke/taskly-app/blob/main/app/TaskStatus.php"
click node_achievement "https://github.com/jackncodke/taskly-app/blob/main/app/Achievement.php"
click node_earned "https://github.com/jackncodke/taskly-app/blob/main/app/Models/UserAchievement.php"
click node_web_ui "https://github.com/jackncodke/taskly-app/blob/main/resources/js/app.tsx"
click node_dashboard_ui "https://github.com/jackncodke/taskly-app/blob/main/resources/js/components/overview-panel.tsx"
click node_task_ui "https://github.com/jackncodke/taskly-app/blob/main/resources/js/components/task-board.tsx"
click node_auth_ui "https://github.com/jackncodke/taskly-app/blob/main/resources/js/pages/auth/login.tsx"
click node_api_routes "https://github.com/jackncodke/taskly-app/blob/main/routes/api.php"
click node_api_project "https://github.com/jackncodke/taskly-app/blob/main/app/Http/Controllers/Api/V1/ProjectController.php"
click node_api_task "https://github.com/jackncodke/taskly-app/blob/main/app/Http/Controllers/Api/V1/TaskController.php"

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_auth_web,node_user_model,node_auth_ui,node_person,node_browser toneBlue
class node_project_web,node_task_web,node_attachment_web,node_project_model,node_task_model,node_attachment_model,node_private_files,node_status,node_task_ui toneAmber
class node_dashboard,node_achievement,node_earned,node_dashboard_ui toneMint
class node_web_routes,node_web_ui toneRose
class node_auth_api,node_api_routes,node_api_project,node_api_task,node_sanctum toneIndigo
```

## Components

### Accounts and access

- [Session auth](https://github.com/jackncodke/taskly-app/tree/main/app/Http/Controllers/Auth): `app/Http/Controllers/Auth`
- [User accounts](https://github.com/jackncodke/taskly-app/blob/main/app/Models/User.php): `app/Models/User.php`
- [Login and registration](https://github.com/jackncodke/taskly-app/blob/main/resources/js/pages/auth/login.tsx): `resources/js/pages/auth/login.tsx`

### Projects and tasks

- [Project management](https://github.com/jackncodke/taskly-app/blob/main/app/Http/Controllers/ProjectController.php): `app/Http/Controllers/ProjectController.php`
- [Task management](https://github.com/jackncodke/taskly-app/blob/main/app/Http/Controllers/TaskController.php): `app/Http/Controllers/TaskController.php`
- [Attachment access](https://github.com/jackncodke/taskly-app/blob/main/app/Http/Controllers/TaskAttachmentController.php): `app/Http/Controllers/TaskAttachmentController.php`
- [Projects](https://github.com/jackncodke/taskly-app/blob/main/app/Models/Project.php): `app/Models/Project.php`
- [Tasks and order](https://github.com/jackncodke/taskly-app/blob/main/app/Models/Task.php): `app/Models/Task.php`
- [Task attachments](https://github.com/jackncodke/taskly-app/blob/main/app/Models/TaskAttachment.php): `app/Models/TaskAttachment.php`
- **Private file storage**
- [Task statuses](https://github.com/jackncodke/taskly-app/blob/main/app/TaskStatus.php): `app/TaskStatus.php`
- [Task list and board](https://github.com/jackncodke/taskly-app/blob/main/resources/js/components/task-board.tsx): `resources/js/components/task-board.tsx`

### Dashboard and progress

- [Dashboard assembly](https://github.com/jackncodke/taskly-app/blob/main/app/Http/Controllers/DashboardController.php): `app/Http/Controllers/DashboardController.php`
- [Achievement catalog](https://github.com/jackncodke/taskly-app/blob/main/app/Achievement.php): `app/Achievement.php`
- [Earned achievements](https://github.com/jackncodke/taskly-app/blob/main/app/Models/UserAchievement.php): `app/Models/UserAchievement.php`
- [Dashboard panels](https://github.com/jackncodke/taskly-app/blob/main/resources/js/components/overview-panel.tsx): `resources/js/components/overview-panel.tsx`

### User interfaces

- [Web routes](https://github.com/jackncodke/taskly-app/blob/main/routes/web.php): `routes/web.php`
- [Inertia React app](https://github.com/jackncodke/taskly-app/blob/main/resources/js/app.tsx): `resources/js/app.tsx`

### REST API

- [Token auth](https://github.com/jackncodke/taskly-app/tree/main/app/Http/Controllers/Api/V1/Auth): `app/Http/Controllers/Api/V1/Auth`
- [API routes](https://github.com/jackncodke/taskly-app/blob/main/routes/api.php): `routes/api.php`
- [API projects](https://github.com/jackncodke/taskly-app/blob/main/app/Http/Controllers/Api/V1/ProjectController.php): `app/Http/Controllers/Api/V1/ProjectController.php`
- [API tasks](https://github.com/jackncodke/taskly-app/blob/main/app/Http/Controllers/Api/V1/TaskController.php): `app/Http/Controllers/Api/V1/TaskController.php`
- **Sanctum tokens**

### Other components

- **User**
- **Browser**

## Connections

- User → Browser: uses
- Browser → Web routes: requests pages
- Web routes → Session auth: dispatches
- Session auth → User accounts: creates account
- Session auth → Inertia React app: renders auth
- Web routes → Dashboard assembly: dispatches
- Web routes → Project management: dispatches
- Web routes → Task management: dispatches
- Web routes → Attachment access: dispatches
- Dashboard assembly → Projects: reads projects
- Dashboard assembly → Tasks and order: reads tasks
- Dashboard assembly → Earned achievements: reads earned
- Dashboard assembly → Achievement catalog: builds catalog
- Dashboard assembly → Task statuses: uses options
- Dashboard assembly → Inertia React app: renders data
- Project management → Projects: manages projects
- Task management → Tasks and order: writes tasks
- Task management → Projects: applies order
- Task management → Task statuses: validates status
- Task management → Task attachments: adds uploads
- Tasks and order → Task attachments: deletes attachments
- Attachment access → Task attachments: reads attachments
- Attachment access → Private file storage: serves downloads
- Task attachments → Private file storage: stores files
- Inertia React app → Dashboard panels: shows panels
- Inertia React app → Task list and board: shows tasks
- Inertia React app → Login and registration: shows auth
- Task list and board → Web routes: submits changes
- Dashboard panels → Task list and board: opens task
- User → API routes: calls API
- API routes → Token auth: dispatches
- Token auth → User accounts: creates account
- Token auth → Sanctum tokens: issues token
- API routes → API projects: dispatches
- API routes → API tasks: dispatches
- API projects → Projects: manages projects
- API tasks → Projects: checks ownership
- API tasks → Tasks and order: reads and writes
- API tasks → Task attachments: handles uploads
- API tasks → Task statuses: validates status
