Activity Dashboard Design Specification
------------------------------ Point A , Point B Route + Obstacles Speed Aggregated + Gas/Charge count Engine RPM HIDE - count Field Calculation...β
Activity Dashboard Design Specification
Coditect Platform | UX Architecture Document
Version: 2.0
Date: November 27, 2025
Status: Design Phase
Executive Summaryβ
This document captures the design principles and specifications for the Coditect Activity Dashboard, derived from stakeholder analysis. The core insight: users need to see the journey, not the engine.
Current implementation shows "how the machinery works" (conversations, messages, sessions). Users need "what has it made" (features, deliverables, milestones).
Data Sources Overviewβ
The Activity Dashboard synthesizes data from four primary sources:
Data Modelβ
Entity Relationship Diagramβ
Task Status State Machineβ
The Navigation Metaphorβ
The dashboard should function like a car's GPS navigation system, not its engine diagnostics panel.
Translation Matrixβ
| Navigation Concept | Dashboard Equivalent | Data Source |
|---|---|---|
| Point A | Project start / Sprint baseline | PROJECT.created_at, TASK_LIST |
| Point B | Target tasks checked off | TASK.checked = true |
| Route | Task progression with commits | TASK.status + GIT_COMMIT |
| Obstacles | Blocked tasks | TASK.status = 'blocked' |
| Speed | Tasks completed / time period | Aggregated TASK + GIT_COMMIT |
| Gas/Charge | Session counts (secondary) | LLM_SESSION count |
| Engine RPM | Message counts | HIDE - MESSAGE count |
Multi-Project Architectureβ
Portfolio View Structureβ
Project Drill-Down Hierarchyβ
Information Architectureβ
Core Design Principlesβ
Principle 1: Task-Centric, Not Session-Centricβ
Principle 2: Checkbox as Source of Truthβ
Principle 3: Link Sessions & Commits to Tasksβ
Principle 4: Assumptive Baseline - Exception-Only Displayβ
"If it's 40, 40, 40, 40, 40 every time, don't show it."
UI Layout Specificationβ
Primary Dashboard Viewβ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CODITECT [All Projects βΌ] [β Settings] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββ PROJECT SUMMARY ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Auth System ββββββββββββββββββββ 58% (7/12 tasks) 3 commits β β
β β Payment Gateway ββββββββββββββββββββ 40% (4/10 tasks) 1 commit β β
β β User Dashboard ββββββββββββββββββββ 70% (14/20 tasks) 5 commits β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββ TASK JOURNEY (Auth System) βββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β PENDING IN PROGRESS REVIEW DONE β β
β β βββββββββββββ βββββββββββββββ βββββββββββ βββββββββββββββ β β
β β β Rate β β Refresh β β β β β JWT β β β
β β β Limiting β β β Token Logic β β β β Tokens β β β
β β β β β ββββββ 60% β β β βββββββββββββββ€ β β
β β βββββββββββββ βββββββββββββββ βββββββββββ β β Auth β β β
β β βββββββββββββββ β Schema β β β
β β β MFA Setup β βββββββββββββββ€ β β
β β β β οΈ BLOCKED β β β Login β β β
β β βββββββββββββββ β Form β β β
β β βββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββ RECENT ACTIVITY ββββββββββββββββ ββ ATTENTION REQUIRED βββββββββββββ β
β β β β β β
β β β’ β JWT tokens complete β β β οΈ MFA Setup β β
β β β 3 commits, 2 sessions β β Blocked: Awaiting API spec β β
β β β’ Refresh token at 60% β β Task List: Backend β β
β β β abc123: Add refresh logic β β Project: Auth System β β
β β β’ β Login form merged β β β β
β β β PR #42 approved β β βββββββββββββββββββββββββββββ β β
β β β’ New session: Rate limiting β β 1 blocked task across projects β β
β β β β β β
β βββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββββ β
β β
β ββ WORK DISTRIBUTION (This Week) βββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Auth System ββββββββββββββββββββββββββββββββββ 45% β 12 commitsβ
β β Payment Gateway ββββββββββββββββββββββββββββββββββ 25% β 4 commitsβ
β β User Dashboard ββββββββββββββββββββββββββββββββββ 20% β 6 commitsβ
β β Documentation ββββββββββββββββββββββββββββββββββ 10% β 2 commitsβ
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Data Transformation Architectureβ
Complete Data Pipelineβ
Session-to-Task Matchingβ
Commit-to-Task Matchingβ
Progress Calculationβ
Component Specificationsβ
1. Project Summary Barβ
Data Requirements:
| Field | Source | Calculation |
|---|---|---|
progress_pct | TASK.checked | COUNT(checked=true) / COUNT(*) |
task_summary | TASK | "N/M tasks" |
commit_count | GIT_COMMIT | COUNT(last 7 days) |
has_blockers | TASK.status | EXISTS(status='blocked') |
2. Task Kanban Boardβ
Data Requirements:
| Column | Filter | Sort |
|---|---|---|
| PENDING | status='pending' AND checked=false | order ASC |
| IN PROGRESS | status='in_progress' | updated_at DESC |
| REVIEW | status='review' | updated_at DESC |
| DONE | checked=true | updated_at DESC |
| BLOCKED | status='blocked' | created_at ASC |
3. Recent Activity Feedβ
Activity Prioritization:
| Priority | Event Type | Display Format |
|---|---|---|
| 1 | Task completed (checked) | "β {task.title} complete" |
| 2 | Task blocked | "β οΈ {task.title} blocked" |
| 3 | Commit merged | "{sha}: {message}" |
| 4 | Session with task context | "Session: {inferred_topic}" |
| 5 | Status change | "{task.title} β {status}" |
4. Blocker Panelβ
Query:
SELECT
t.id,
t.title,
t.description AS blocked_reason,
p.name AS project_name,
tl.name AS task_list_name,
DATEDIFF(NOW(), t.updated_at) AS days_blocked
FROM tasks t
JOIN task_lists tl ON t.list_id = tl.id
JOIN project_plans pp ON tl.plan_id = pp.id
JOIN projects p ON pp.project_id = p.id
WHERE t.status = 'blocked'
ORDER BY t.updated_at ASC
5. Work Distribution Chartβ
Data Aggregation:
Technical Specificationsβ
TypeScript Interfacesβ
// ============================================
// CORE ENTITIES
// ============================================
interface Project {
id: string;
name: string;
description?: string;
status: 'active' | 'archived' | 'paused';
created_at: Date;
updated_at: Date;
// Relations
git_repos: GitRepo[];
project_plan: ProjectPlan;
sessions: LLMSession[];
}
interface GitRepo {
id: string;
project_id: string;
url: string;
default_branch: string;
current_commit: string;
// Derived
recent_commits: GitCommit[];
}
interface GitCommit {
sha: string;
repo_id: string;
author: string;
message: string;
timestamp: Date;
additions: number;
deletions: number;
files_changed: string[];
// Linked
linked_tasks: TaskLink[];
}
interface ProjectPlan {
id: string;
project_id: string;
name: string;
description?: string;
target_date?: Date;
// Relations
task_lists: TaskList[];
}
interface TaskList {
id: string;
plan_id: string;
name: string;
order: number;
category?: string; // e.g., 'backend', 'frontend', 'testing'
// Relations
tasks: Task[];
// Derived
progress: number; // 0-100
total_tasks: number;
completed_tasks: number;
}
interface Task {
id: string;
list_id: string;
title: string;
description?: string;
checked: boolean; // β or β
status: TaskStatus;
complexity?: 'S' | 'M' | 'L' | 'XL';
due_date?: Date;
created_at: Date;
updated_at: Date;
// Linked evidence
linked_sessions: SessionLink[];
linked_commits: CommitLink[];
}
type TaskStatus =
| 'pending' // Not started
| 'in_progress' // Being worked on
| 'review' // Awaiting review
| 'blocked' // Has obstacle
| 'done'; // Completed (checked=true)
interface LLMSession {
id: string;
project_id: string;
started_at: Date;
ended_at?: Date;
message_count: number;
summary?: string; // AI-generated, concise
// Links
linked_tasks: TaskLink[];
// Hidden from primary view
messages: Message[];
}
// ============================================
// LINKING TYPES
// ============================================
interface TaskLink {
task_id: string;
confidence: number; // 0-1
link_type: 'explicit' | 'inferred';
evidence?: string; // Why linked
}
interface SessionLink extends TaskLink {
session_id: string;
}
interface CommitLink extends TaskLink {
commit_sha: string;
}
// ============================================
// DASHBOARD TYPES
// ============================================
interface ProjectSummary {
project: Project;
progress_pct: number;
tasks_completed: number;
tasks_total: number;
commits_this_week: number;
sessions_this_week: number;
blocked_count: number;
has_blockers: boolean;
}
interface ActivityHighlight {
id: string;
type: 'task_completed' | 'commit' | 'session' | 'status_change' | 'blocked';
title: string; // Max 50 chars
subtitle?: string; // Max 30 chars
project_id: string;
task_id?: string;
timestamp: Date;
icon: 'check' | 'git' | 'chat' | 'alert';
}
interface BlockedTask {
task: Task;
project_name: string;
task_list_name: string;
blocked_reason?: string;
days_blocked: number;
}
interface WorkDistribution {
project_id: string;
project_name: string;
percentage: number;
commit_count: number;
session_count: number;
tasks_completed: number;
weighted_score: number;
}
// ============================================
// API RESPONSE TYPES
// ============================================
interface DashboardResponse {
portfolio_summary: ProjectSummary[];
selected_project?: {
project: Project;
kanban: KanbanBoard;
};
recent_activity: ActivityHighlight[]; // Max 5
blocked_tasks: BlockedTask[];
work_distribution: WorkDistribution[];
last_updated: Date;
}
interface KanbanBoard {
columns: KanbanColumn[];
}
interface KanbanColumn {
status: TaskStatus;
label: string;
tasks: Task[];
count: number;
}
Data Flow Diagramβ
What to Remove vs Keepβ
Content Classificationβ
Detailed Classificationβ
| Category | Items | Rationale |
|---|---|---|
| β KEEP | Task checkboxes, status | Source of truth for progress |
| β KEEP | Project progress bars | High-level navigation |
| β KEEP | Blocked tasks | Exception-only display |
| β KEEP | Recent commits (linked) | Evidence of progress |
| β KEEP | 5 activity highlights | Concise summary |
| β¬οΈ DRILL-DOWN | Session message history | Neuron-level detail |
| β¬οΈ DRILL-DOWN | Commit diffs | Code-level detail |
| β¬οΈ DRILL-DOWN | Full task history | Audit trail |
| β¬οΈ DRILL-DOWN | Token usage metrics | Engine diagnostics |
| β REMOVE | Message counts | No signal |
| β REMOVE | Word counts | No signal |
| β REMOVE | Uniform QA scores | Only show exceptions |
| β REMOVE | Session duration | Engine metric |
Implementation Prioritiesβ
Priority Matrixβ
| Priority | Component | Data Source | Effort |
|---|---|---|---|
| P0 | Multi-Project Data Model | All sources | M |
| P0 | Task Kanban Board | TASK, TASK_LIST | M |
| P0 | Checkbox-Based Progress | TASK.checked | S |
| P0 | Blocked Task Panel | TASK.status='blocked' | S |
| P1 | Project Summary Bar | Aggregated PROJECT | M |
| P1 | Activity Feed (5 items) | TASK, GIT_COMMIT, SESSION | M |
| P1 | SessionβTask Linking | LLM_SESSION + TASK | L |
| P1 | CommitβTask Linking | GIT_COMMIT + TASK | M |
| P2 | Work Distribution | Aggregated by project | M |
| P2 | Commit Timeline | GIT_COMMIT by time | S |
| P3 | Drill-Down Views | All sources | L |
Success Criteriaβ
The 5-Second Testβ
The dashboard succeeds when a user can answer these questions in < 5 seconds without scrolling:
Failure Indicatorsβ
The dashboard fails if it requires the user to:
- Scroll to see any project's progress
- Count messages to understand progress
- Mentally map sessions to tasks
- See tasks without clear status
- Read verbose AI summaries
- Navigate away to find blockers
Appendix: Key Stakeholder Quotesβ
"The gold isn't in how is it doing it... the real stuff is features, deliverables, targets reached."
"What you want is: How do I get from A to B? What are my obstacles? And what's my route?"
"If it's 40, 40, 40, 40, 40 every time, don't show it."
"5 things that happened and a simple definition of these things."
"Sessions are segments of the journey... we need to connect them into the map."
"The thing you don't want to see [is] the neurons firing. We want to see what we're thinking about."
"A Kanban board has value because you can see features moving from left to right."
Document Historyβ
| Version | Date | Author | Changes |
|---|---|---|---|
| 1.0 | 2025-11-27 | Design Team | Initial specification |
| 2.0 | 2025-11-27 | Design Team | Added multi-project data model, task lists with checkboxes, git commit linking, session-to-task mapping, complete TypeScript interfaces |
This document defines the UX architecture for the Coditect Activity Dashboard, emphasizing task-centric views with checkbox-based progress tracking, multi-project portfolio management, and evidence linking from LLM sessions and git commits.