Projects App
Features & Capabilities
Projects App - Features & Capabilities Report
Template Version: 1.0.0 Generated: 2026-01-22 Package:
@epicdm/flowstate-app-projectsApp ID:projects
Table of Contents
- Overview
- App Identity
- Feature Categories
- Capabilities
- Data Models
- User Workflows
- Integration Points
- Commands & Keybindings
- Architecture Summary
- Quality & Compliance
Overview
Purpose
The Projects App is the core project and task management application for FlowState. It provides comprehensive project lifecycle management, hierarchical task organization with milestones, time tracking, document management with approval workflows, team discussions, calendar scheduling, and personal productivity features through the My Day dashboard.
Target Users
| User Type | Description | Primary Use Cases |
|---|---|---|
| Project Managers | Coordinate projects and teams | Create projects, manage milestones, track progress, assign tasks |
| Team Members | Execute project work | View tasks, log time, update status, participate in discussions |
| Individual Contributors | Personal task management | My Day dashboard, time tracking, task completion |
| Stakeholders | Review and approve | Document review, approval workflows, progress monitoring |
Value Proposition
- Hierarchical Organization: Projects > Milestones > Tasks > Subtasks
- Comprehensive Time Tracking: Active timers, manual entries, statistics
- Document Workflow: Markdown documents with approval process
- Team Collaboration: Threaded discussions on any entity
- Personal Productivity: My Day dashboard for daily focus
- Flexible Scheduling: Calendar views with drag-drop rescheduling
- Reusable Templates: Save and create from project/task templates
- Recurring Tasks: Full recurrence support with RRULE
App Identity
| Property | Value |
|---|---|
| ID | projects |
| Display Name | Projects |
| Package Name | @epic-flow/flowstate-app-projects |
| Version | 0.1.0 |
| Category | business |
| Icon | folder-kanban |
| Color | #EC4899 |
| Base Path | /projects |
| Permissions | database, notifications |
Entry Points
| Entry Point | Path | Description |
|---|---|---|
| Main Export | src/index.ts | Primary package export |
| Standalone | src/standalone.tsx | Standalone app entry |
| App Component | src/App.tsx | Main React component with routing |
| Plugin | src/plugin.ts | FlowState plugin registration |
Feature Categories
Category 1: Project Management
Core project lifecycle and organization
Feature: Project CRUD Operations
| Property | Details |
|---|---|
| ID | project-crud |
| Status | Implemented |
| Priority | High |
Description: Create, view, edit, and delete projects with comprehensive metadata, status tracking, and progress monitoring through milestones and tasks.
User Story: As a project manager, I want to manage projects so that I can organize and track work across my team.
Acceptance Criteria:
- [x] Create projects with title, description, metadata
- [x] View projects in list view with filtering
- [x] Edit project details
- [x] Delete/archive projects
- [x] Track completion percentage from tasks
- [x] Assign categories and tags
Implementation:
| Component | Path | Purpose |
|---|---|---|
| ProjectListView | src/components/projects/ProjectListView.tsx | Project listing |
| ProjectDetailView | src/components/projects/ProjectDetailView.tsx | Project details |
| ProjectQuickCreate | src/components/projects/ProjectQuickCreate.tsx | Quick create modal |
| ProjectForm | src/components/form/ProjectForm.tsx | Full project form |
| useProjectCRUD | src/hooks/useProjectCRUD.ts | Project operations |
Routes:
/projects- Project list/projects/:projectId- Project detail with tabs
Feature: Project Detail View
| Property | Details |
|---|---|
| ID | project-detail |
| Status | Implemented |
| Priority | High |
Description: Comprehensive project detail view with tabbed navigation for overview, milestones, tasks, calendar, documents, and discussions.
User Story: As a project manager, I want a comprehensive project view so that I can access all project information in one place.
Acceptance Criteria:
- [x] Header with project title, status, metadata
- [x] Statistics card showing progress metrics
- [x] Tabbed navigation (Overview, Milestones, Tasks, Calendar, Documents, Discussions)
- [x] Quick actions (edit, delete, complete)
- [x] Attributes section for categories/tags
Implementation:
| Component | Path | Purpose |
|---|---|---|
| ProjectDetailHeader | src/components/projects/ProjectDetailHeader.tsx | Header section |
| ProjectDetailContent | src/components/projects/ProjectDetailContent.tsx | Main content |
| ProjectDetailActions | src/components/projects/ProjectDetailActions.tsx | Action buttons |
| ProjectStatisticsCard | src/components/projects/ProjectStatisticsCard.tsx | Statistics |
| ProjectAttributesSection | src/components/projects/ProjectAttributesSection.tsx | Attributes |
Category 2: Milestone Management
Organize tasks into logical phases
Feature: Milestone CRUD Operations
| Property | Details |
|---|---|
| ID | milestone-crud |
| Status | Implemented |
| Priority | High |
Description: Create and manage milestones within projects to group related tasks and track phase completion.
User Story: As a project manager, I want to create milestones so that I can organize tasks into logical phases.
Acceptance Criteria:
- [x] Create milestones with title, description, due date
- [x] View milestones in list and detail views
- [x] Track completion percentage from tasks
- [x] Manage tasks at milestone level
- [x] Time tracking aggregation
Implementation:
| Component | Path | Purpose |
|---|---|---|
| MilestoneListView | src/components/milestones/MilestoneListView.tsx | Milestone listing |
| MilestoneDetailView | src/components/milestones/MilestoneDetailView.tsx | Milestone detail |
| MilestoneQuickCreate | src/components/milestones/MilestoneQuickCreate.tsx | Quick create |
| MilestoneSection | src/components/milestones/MilestoneSection.tsx | Section component |
| MilestoneTasksTable | src/components/milestones/MilestoneTasksTable.tsx | Task table |
| useMilestoneCRUD | src/hooks/useMilestoneCRUD.ts | Milestone operations |
| useMilestoneDetail | src/hooks/useMilestoneDetail.ts | Detail queries |
Routes:
/milestones- All milestones/milestones/:milestoneId- Milestone detail/projects/:projectId/milestones/:milestoneId- Nested milestone detail
Category 3: Task Management
Core task tracking with hierarchy and recurrence
Feature: Task CRUD Operations
| Property | Details |
|---|---|
| ID | task-crud |
| Status | Implemented |
| Priority | High |
Description: Full task lifecycle management with status tracking, priority levels, due dates, and hierarchical subtask support.
User Story: As a team member, I want to manage tasks so that I can track and complete my work.
Acceptance Criteria:
- [x] Create tasks with title, description, priority, due date
- [x] Track status (To Do, In Progress, Complete, On Hold, Blocked)
- [x] Support subtask hierarchy
- [x] Quick create modal for rapid entry
- [x] Status change with optional notes
Implementation:
| Component | Path | Purpose |
|---|---|---|
| TaskListView | src/components/tasks/TaskListView.tsx | Task listing |
| TaskDetailView | src/components/tasks/TaskDetailView.tsx | Task detail |
| TaskQuickCreate | src/components/tasks/TaskQuickCreate.tsx | Quick create |
| TaskDetailContent | src/components/tasks/TaskDetailContent.tsx | Detail content |
| TaskSection | src/components/tasks/TaskSection.tsx | Task section |
| TaskStatusChangeDialog | src/components/tasks/TaskStatusChangeDialog.tsx | Status change |
| useTaskCRUD | src/hooks/useTaskCRUD.ts | Task operations |
| useTaskDetail | src/hooks/useTaskDetail.ts | Detail queries |
Routes:
/tasks- All tasks/tasks/:taskId- Task detail/tasks/:taskId/tasks/:subtaskId- Subtask detail
Feature: Subtasks
| Property | Details |
|---|---|
| ID | subtasks |
| Status | Implemented |
| Priority | Medium |
Description: Hierarchical task decomposition with parent-child relationships for breaking down complex tasks.
User Story: As a team member, I want to create subtasks so that I can break down complex work into smaller pieces.
Acceptance Criteria:
- [x] Create subtasks under parent tasks
- [x] View subtasks in parent task detail
- [x] Inline subtask editing
- [x] Subtask completion tracking
- [x] Navigation to subtask detail
Implementation:
| Component | Path | Purpose |
|---|---|---|
| SubtasksList | src/components/tasks/SubtasksList.tsx | Subtask list |
Feature: Task Recurrence
| Property | Details |
|---|---|
| ID | task-recurrence |
| Status | Implemented |
| Priority | Medium |
Description: Create recurring tasks with full RRULE support including daily, weekly, monthly, yearly patterns with intervals and end dates.
User Story: As a team member, I want to create recurring tasks so that repetitive work is automatically scheduled.
Acceptance Criteria:
- [x] Define recurrence patterns (daily, weekly, monthly, yearly)
- [x] Set intervals and specific days
- [x] Set end date or occurrence count
- [x] Background generation of task instances
- [x] Pattern preview before creation
Implementation:
| Component | Path | Purpose |
|---|---|---|
| RecurrenceService | src/services/RecurrenceService.ts | Pattern logic |
| BackgroundRecurrenceProcessor | src/services/BackgroundRecurrenceProcessor.ts | Instance generation |
Category 4: Time Tracking
Comprehensive time tracking with timers and statistics
Feature: Active Timers
| Property | Details |
|---|---|
| ID | active-timers |
| Status | Implemented |
| Priority | High |
Description: Start, stop, and pause timers on tasks with real-time elapsed time display and header notification pills.
User Story: As a team member, I want to track time with timers so that I accurately log my work hours.
Acceptance Criteria:
- [x] Start/stop/pause timers on any task
- [x] Real-time elapsed time display
- [x] Active timer pills in header
- [x] Multiple concurrent timers support
- [x] Timer persists across page navigation
Implementation:
| Component | Path | Purpose |
|---|---|---|
| TimerControls | src/components/tasks/TimerControls.tsx | Timer buttons |
| ActiveTimerPills | src/components/header/ActiveTimerPills.tsx | Header display |
| ActiveTimerModal | src/components/header/ActiveTimerModal.tsx | Timer modal |
| useActiveTimers | src/hooks/useActiveTimers.ts | Timer state |
| useTimeTracking | src/hooks/useTimeTracking.ts | Time operations |
Feature: Time Entry Management
| Property | Details |
|---|---|
| ID | time-entries |
| Status | Implemented |
| Priority | High |
Description: Create, edit, and view manual time entries with start/end times, duration calculation, and entity association.
User Story: As a team member, I want to manually log time so that I can record work done outside of timer tracking.
Acceptance Criteria:
- [x] Create manual time entries
- [x] View time entries per task
- [x] Edit existing entries
- [x] Delete time entries
- [x] Duration auto-calculation
Implementation:
| Component | Path | Purpose |
|---|---|---|
| TimeEntryList | src/components/tasks/TimeEntryList.tsx | Entry list |
| TimeTrackingSection | src/components/tasks/TimeTrackingSection.tsx | Tracking section |
| QuickTimeTrackingModal | src/components/timeTracking/QuickTimeTrackingModal.tsx | Quick entry |
| useAllTimeEntries | src/hooks/useAllTimeEntries.ts | Entry queries |
Feature: Time Tracking Statistics
| Property | Details |
|---|---|
| ID | time-stats |
| Status | Implemented |
| Priority | Medium |
Description: Aggregated time statistics with breakdowns by period, entity, user, and category.
User Story: As a project manager, I want to view time statistics so that I can understand where time is being spent.
Acceptance Criteria:
- [x] Time totals by task/milestone/project
- [x] Period-based aggregation (day/week/month)
- [x] Breakdown by category/user
- [x] Statistics widgets
Implementation:
| Component | Path | Purpose |
|---|---|---|
| TimeTrackingStatsWidget | src/components/tasks/TimeTrackingStatsWidget.tsx | Stats widget |
| TimeTrackingStatsService | src/services/TimeTrackingStatsService.ts | Stats logic |
| useTimeTrackingStats | src/hooks/useTimeTrackingStats.ts | Stats queries |
| useMilestoneTimeTracking | src/hooks/useMilestoneTimeTracking.ts | Milestone time |
Category 5: Document Management
Markdown documents with approval workflows
Feature: Document CRUD
| Property | Details |
|---|---|
| ID | document-crud |
| Status | Implemented |
| Priority | High |
Description: Create, edit, and manage markdown documents with rich editing, entity association, and type classification.
User Story: As a team member, I want to create documents so that I can capture and share project information.
Acceptance Criteria:
- [x] Create documents with markdown editor
- [x] Associate with project/milestone/task
- [x] Document type classification
- [x] File attachment support
- [x] Version tracking
Implementation:
| Component | Path | Purpose |
|---|---|---|
| DocumentListView | src/components/documents/DocumentListView.tsx | Document list |
| DocumentDetailView | src/components/documents/DocumentDetailView.tsx | Read-only view |
| DocumentEditView | src/components/documents/DocumentEditView.tsx | Editor view |
| MarkdownEditor | src/components/documents/MarkdownEditor.tsx | Markdown editor |
| MarkdownRenderer | src/components/documents/MarkdownRenderer.tsx | Render markdown |
| DocumentForm | src/components/documents/DocumentForm.tsx | Document form |
| useDocumentCRUD | src/hooks/useDocumentCRUD.ts | Document operations |
Routes:
/documents- Document list/documents/new- Create document/documents/:documentId- Document detail/documents/:documentId/edit- Edit document
Feature: Document Approval Workflow
| Property | Details |
|---|---|
| ID | document-approval |
| Status | Implemented |
| Priority | High |
Description: Formal approval workflow for documents with request, approve, reject, and revision request actions.
User Story: As a stakeholder, I want to approve documents so that I can ensure quality before documents are finalized.
Acceptance Criteria:
- [x] Request approval on documents
- [x] Approve/reject with comments
- [x] Request revision with feedback
- [x] Approval status badges
- [x] Approval history timeline
Implementation:
| Component | Path | Purpose |
|---|---|---|
| ApprovalSection | src/components/documents/ApprovalSection.tsx | Approval UI |
| ApprovalStatusBadge | src/components/documents/ApprovalStatusBadge.tsx | Status badge |
| ApprovalActionModal | src/components/documents/ApprovalActionModal.tsx | Action modal |
| ApprovalHistoryPanel | src/components/documents/ApprovalHistoryPanel.tsx | History display |
| useApprovalCRUD | src/hooks/useApprovalCRUD.ts | Approval operations |
| useDocumentsWithApproval | src/hooks/useDocumentsWithApproval.ts | Combined queries |
Category 6: Team Discussions
Threaded discussions on any entity
Feature: Discussion Threads
| Property | Details |
|---|---|
| ID | discussions |
| Status | Implemented |
| Priority | High |
Description: Create threaded discussions on projects, milestones, and tasks with file attachments, editing, and nested replies.
User Story: As a team member, I want to discuss work items so that I can collaborate with my team.
Acceptance Criteria:
- [x] Create discussions on any entity
- [x] Reply to create threaded conversations
- [x] Edit/delete own discussions
- [x] File attachment support
- [x] Thread depth flattening for readability
- [x] Virtualized/paginated lists for performance
Implementation:
| Component | Path | Purpose |
|---|---|---|
| DiscussionList | src/components/discussions/DiscussionList.tsx | Discussion list |
| DiscussionItem | src/components/discussions/DiscussionItem.tsx | Single item |
| DiscussionEditor | src/components/discussions/DiscussionEditor.tsx | Text editor |
| VirtualDiscussionList | src/components/discussions/VirtualDiscussionList.tsx | Virtualized |
| AdaptiveDiscussionList | src/components/discussions/AdaptiveDiscussionList.tsx | Auto-switch |
| FileAttachment | src/components/discussions/FileAttachment.tsx | Attachments |
| useDiscussions | src/hooks/useDiscussions.ts | Discussion operations |
| DiscussionService | src/services/DiscussionService.ts | Discussion logic |
Category 7: Calendar & Scheduling
Visual scheduling with drag-drop support
Feature: Calendar View
| Property | Details |
|---|---|
| ID | calendar-view |
| Status | Implemented |
| Priority | Medium |
Description: Calendar visualization of tasks, milestones, and time entries with day/week/month views and filtering.
User Story: As a project manager, I want a calendar view so that I can visualize project schedules.
Acceptance Criteria:
- [x] Day/week/month calendar views
- [x] Display tasks, milestones, time entries
- [x] Color coding by type/status
- [x] Event filtering
- [x] Calendar statistics
Implementation:
| Component | Path | Purpose |
|---|---|---|
| ProjectCalendar | src/components/calendar/ProjectCalendar.tsx | Main calendar |
| EventCalendar | src/components/calendar/EventCalendar.tsx | Event display |
| CalendarViewToggle | src/components/calendar/CalendarViewToggle.tsx | View toggle |
| CalendarStats | src/components/calendar/CalendarStats.tsx | Statistics |
| useCalendarData | src/hooks/useCalendarData.ts | Calendar queries |
| CalendarDataService | src/services/CalendarDataService.ts | Data transformation |
Feature: Drag-Drop Scheduling
| Property | Details |
|---|---|
| ID | calendar-dnd |
| Status | Implemented |
| Priority | Medium |
Description: Drag-and-drop rescheduling of tasks directly on the calendar with conflict detection.
User Story: As a project manager, I want to drag tasks on the calendar so that I can quickly reschedule work.
Acceptance Criteria:
- [x] Drag tasks to new dates
- [x] Visual feedback during drag
- [x] Conflict detection warnings
- [x] Automatic data persistence
Implementation:
| Component | Path | Purpose |
|---|---|---|
| CalendarDataService | src/services/CalendarDataService.ts | Drag-drop handling |
| useCalendarActions | src/hooks/useCalendarActions.ts | Calendar actions |
Category 8: My Day Dashboard
Personal productivity and focus
Feature: My Day Views
| Property | Details |
|---|---|
| ID | my-day |
| Status | Implemented |
| Priority | High |
Description: Personal productivity dashboard showing today's tasks, upcoming deadlines, and time tracking across configurable scopes.
User Story: As an individual contributor, I want a My Day view so that I can focus on my personal tasks and schedule.
Acceptance Criteria:
- [x] Today view with current tasks
- [x] Week view with upcoming items
- [x] Month view for longer planning
- [x] Time tracked breakdown
- [x] Scope selection (workspace/org/all)
Implementation:
| Component | Path | Purpose |
|---|---|---|
| MyDayTodayView | src/components/myday/MyDayTodayView.tsx | Today view |
| MyDayWeekView | src/components/myday/MyDayWeekView.tsx | Week view |
| MyDayMonthView | src/components/myday/MyDayMonthView.tsx | Month view |
| MyDayTrackedTimeView | src/components/myday/MyDayTrackedTimeView.tsx | Time view |
| ViewScopeDropdown | src/components/myday/ViewScopeDropdown.tsx | Scope selector |
| MyDayDashboard | src/pages/MyDayPage.tsx | Dashboard page |
Routes:
/my-day- My Day dashboard
Category 9: Templates
Reusable project/task templates
Feature: Template Management
| Property | Details |
|---|---|
| ID | templates |
| Status | Implemented |
| Priority | Medium |
Description: Save projects, milestones, and tasks as reusable templates with customization during creation.
User Story: As a project manager, I want to save templates so that I can quickly create similar projects.
Acceptance Criteria:
- [x] Save project/milestone/task as template
- [x] Browse template library
- [x] Create from template with customization
- [x] Edit template structure
- [x] Template categories
Implementation:
| Component | Path | Purpose |
|---|---|---|
| TemplateList | src/components/templates/TemplateList.tsx | Template list |
| TemplateCard | src/components/templates/TemplateCard.tsx | Template card |
| SaveTemplateModal | src/components/templates/SaveTemplateModal.tsx | Save modal |
| CreateFromTemplateWizard | src/components/templates/CreateFromTemplateWizard.tsx | Creation wizard |
| TemplateEditView | src/components/templates/TemplateEditView.tsx | Edit view |
| TemplatesPage | src/pages/TemplatesPage.tsx | Templates page |
| useTemplates | src/hooks/useTemplates.ts | Template operations |
| TemplateService | src/services/TemplateService.ts | Template logic |
| TaskGenerationService | src/services/TaskGenerationService.ts | Task generation |
Routes:
/templates- Template management
Category 10: Dashboard & Navigation
Central dashboard and app navigation
Feature: Project Dashboard
| Property | Details |
|---|---|
| ID | dashboard |
| Status | Implemented |
| Priority | High |
Description: Main dashboard with tabbed layout showing projects, milestones, tasks overview with quick access to key information.
User Story: As a user, I want a dashboard so that I can quickly see my work status and navigate to important items.
Acceptance Criteria:
- [x] Tabbed dashboard layout
- [x] Project overview section
- [x] Recent items display
- [x] Quick action buttons
- [x] Statistics summary
Implementation:
| Component | Path | Purpose |
|---|---|---|
| DashboardPage | src/pages/DashboardPage.tsx | Dashboard page |
| TabbedDashboard | src/components/dashboard/TabbedDashboard.tsx | Tab layout |
Routes:
/dashboard- Main dashboard (default route)
Feature: Floating Action Button
| Property | Details |
|---|---|
| ID | fab |
| Status | Implemented |
| Priority | Low |
Description: Context-aware floating action button for quick creation of projects, milestones, tasks, and time entries.
User Story: As a user, I want a quick action button so that I can rapidly create new items.
Acceptance Criteria:
- [x] Floating action button display
- [x] Context-aware action options
- [x] Expandable menu
- [x] Keyboard shortcut support
Implementation:
| Component | Path | Purpose |
|---|---|---|
| FloatingActionButton | src/components/FloatingActionButton.tsx | FAB component |
| FloatingActionProvider | src/components/FloatingActionProvider.tsx | FAB context |
| useFloatingActionConfig | src/hooks/useFloatingActionConfig.ts | FAB config |
Capabilities
Core Capabilities
| Capability | Description | Implementation |
|---|---|---|
| Hierarchical Organization | Project > Milestone > Task > Subtask | Parent-child relationships with completion rollup |
| Time Tracking | Active timers and manual entries | Timer state with elapsed calculation |
| Document Management | Markdown with approval workflow | Rich editor with status tracking |
| Team Collaboration | Threaded discussions on any entity | Polymorphic discussions with attachments |
| Personal Productivity | My Day dashboard with focus views | Scope-based filtering with localStorage |
Technical Capabilities
| Capability | Status | Notes |
|---|---|---|
| CRUD Operations | Yes | Full CRUD on all entity types |
| Real-time Updates | Yes | RxDB reactive subscriptions |
| Offline Support | Yes | RxDB local-first architecture |
| Search & Filter | Yes | Multi-field filtering, category/tag support |
| Sorting | Yes | Configurable sort on list views |
| Pagination | Yes | Paginated discussion lists |
| Export | No | Not currently implemented |
| Notifications | Yes | Toast notifications for actions |
Integration Capabilities
| Integration | Type | Description |
|---|---|---|
| Product App | internal | Products link to projects |
| Goals | internal | Goals can reference projects |
| RxDB Server | internal | Replication for data sync |
| FlowState Framework | internal | Auth, org context, layout |
Data Models
Collections Used
| Collection | Description | Operations | Primary Hook |
|---|---|---|---|
projects | Project records | CRUD, Query | useProjectCRUD |
milestones | Project milestones | CRUD, Query | useMilestoneCRUD |
tasks | Task records with recurrence | CRUD, Query | useTaskCRUD |
documents | Markdown documents | CRUD, Query | useDocumentCRUD |
approvals | Document approvals | CRUD, Query | useApprovalCRUD |
discussions | Threaded discussions | CRUD, Query | useDiscussions |
timeEntries | Time tracking entries | CRUD, Query | useTimeTracking |
templates | Reusable templates | CRUD, Query | useTemplates |
attributes | Categories and tags | CRUD, Query | useAttributesCRUD |
Entity Relationships
Project
|
+-- Milestones (hasMany)
| |
| +-- Tasks (hasMany)
| | |
| | +-- Subtasks (hasMany via parentTaskId)
| | |
| | +-- TimeEntries (hasMany)
| | |
| | +-- Documents (hasMany)
| | |
| | +-- Discussions (hasMany)
| |
| +-- Documents (hasMany)
| |
| +-- Discussions (hasMany)
|
+-- Tasks (hasMany, direct)
|
+-- Documents (hasMany)
|
+-- Discussions (hasMany)
|
+-- Attributes (manyToMany)
Document
|
+-- Approvals (hasMany)
Task
|
+-- RecurrencePattern (hasOne, embedded)
Key Data Flows
User Action --> Component --> Hook --> RxDB Collection --> UI Update
|
+--> Service (complex logic)
|
+--> Replication --> Server
User Workflows
Workflow 1: Project Creation
Create and set up a new project
Trigger: Click "New Project" or use FAB
Steps:
| Step | Action | Component | Outcome |
|---|---|---|---|
| 1 | Open quick create | ProjectQuickCreate | Modal displayed |
| 2 | Enter project details | ProjectForm | Title, description set |
| 3 | Save project | useProjectCRUD | Project created |
| 4 | Navigate to detail | Router | Project detail shown |
| 5 | Add milestones | MilestoneQuickCreate | Milestones created |
| 6 | Add tasks | TaskQuickCreate | Tasks created |
Success Outcome: Project with milestones and tasks ready for work Failure Handling: Validation errors shown, form state preserved
Workflow 2: Task Completion
Complete a task with time logging
Trigger: Navigate to task, click complete
Steps:
| Step | Action | Component | Outcome |
|---|---|---|---|
| 1 | View task detail | TaskDetailView | Task displayed |
| 2 | Start timer | TimerControls | Timer running |
| 3 | Work on task | - | Time elapsed |
| 4 | Stop timer | TimerControls | Time entry created |
| 5 | Change status | TaskStatusChangeDialog | Status dialog shown |
| 6 | Add completion note | TaskStatusChangeDialog | Note attached |
| 7 | Mark complete | useTaskCRUD | Status updated |
Success Outcome: Task marked complete with time logged Failure Handling: Status change can be reverted
Workflow 3: Document Approval
Create and approve a document
Trigger: Create document from Documents tab
Steps:
| Step | Action | Component | Outcome |
|---|---|---|---|
| 1 | Create document | DocumentEditView | Editor displayed |
| 2 | Write content | MarkdownEditor | Content saved |
| 3 | Request approval | ApprovalSection | Approval requested |
| 4 | Reviewer notified | - | Approval pending |
| 5 | Review document | DocumentDetailView | Document displayed |
| 6 | Take action | ApprovalActionModal | Approve/reject/revise |
| 7 | Update status | useApprovalCRUD | Approval complete |
Success Outcome: Document approved and finalized Failure Handling: Revision requested with feedback
Workflow 4: Time Tracking
Track time on a task
Trigger: Open task detail or header timer
Steps:
| Step | Action | Component | Outcome |
|---|---|---|---|
| 1 | Start timer | TimerControls | Timer starts |
| 2 | View in header | ActiveTimerPills | Timer visible |
| 3 | Pause if needed | TimerControls | Timer paused |
| 4 | Resume work | TimerControls | Timer continues |
| 5 | Stop timer | TimerControls | Time entry created |
| 6 | View statistics | TimeTrackingStatsWidget | Stats displayed |
Success Outcome: Time accurately logged Failure Handling: Timer persists across navigation
Workflow 5: My Day Planning
Plan daily work
Trigger: Navigate to My Day
Steps:
| Step | Action | Component | Outcome |
|---|---|---|---|
| 1 | Open My Day | MyDayDashboard | Dashboard displayed |
| 2 | Select scope | ViewScopeDropdown | Scope filtered |
| 3 | View today's tasks | MyDayTodayView | Tasks shown |
| 4 | Check time tracked | MyDayTrackedTimeView | Time displayed |
| 5 | Mark tasks complete | TaskItem | Status updated |
Success Outcome: Daily work visible and manageable Failure Handling: Scope preference saved to localStorage
State Transitions
Task Status States
┌─────────┐ ┌─────────────┐ ┌──────────┐
│ To Do │──▶│ In Progress │──▶│ Complete │
└─────────┘ └─────────────┘ └──────────┘
│ │
▼ ▼
┌─────────┐ ┌─────────────┐
│ On Hold │◀──│ Blocked │
└─────────┘ └─────────────┘
| From State | To State | Trigger | Side Effects |
|---|---|---|---|
| To Do | In Progress | Start work | Optional note |
| In Progress | Complete | Finish work | Completion timestamp |
| In Progress | Blocked | Blocker found | Note required |
| Blocked | In Progress | Blocker resolved | Note optional |
| Any | On Hold | Pause work | Note optional |
Document Approval States
┌─────────┐ ┌─────────────┐ ┌──────────┐
│ Draft │──▶│ Pending │──▶│ Approved │
└─────────┘ └─────────────┘ └──────────┘
│
▼
┌─────────────┐
│ Revision │──▶ Draft
│ Requested │
└─────────────┘
│
▼
┌─────────────┐
│ Rejected │
└─────────────┘
Integration Points
Internal Integrations
| Integration | Package | Purpose |
|---|---|---|
| FlowState Framework | @epicdm/flowstate-app-framework | App container, auth, layout |
| Collections | @epicdm/flowstate-collections | Data models and schemas |
| RxDB React | @epicdm/flowstate-rxdb-react | Reactive subscriptions |
| UI Components | @epicdm/flowstate-ui | Shared UI buttons |
External Integrations
| Integration | Type | Configuration |
|---|---|---|
| FullCalendar | Library | Calendar visualization |
| react-toastify | Library | Toast notifications |
MCP Integration
| Tool | Purpose | Example Usage |
|---|---|---|
collection-query | Query projects, tasks | {"collection": "tasks", "selector": {"status": "To Do"}} |
collection-create | Create entities | {"collection": "tasks", "data": {...}} |
collection-update | Update status | {"collection": "tasks", "id": "...", "data": {"status": "Complete"}} |
Commands & Keybindings
Registered Commands
| Command ID | Title | Icon | Category |
|---|---|---|---|
projects.create | Create Project | plus | Projects |
projects.createTask | Create Task | plus-circle | Projects |
projects.createMilestone | Create Milestone | flag | Projects |
projects.createTimeEntry | Create Time Entry | clock | Projects |
projects.showDashboard | Show Dashboard | layout-dashboard | Projects |
projects.showKanban | Show Kanban Board | columns | Projects |
projects.showCalendar | Show Calendar | calendar | Projects |
Keybindings
| Command | Windows/Linux | macOS | Context |
|---|---|---|---|
| Create Project | Ctrl+Shift+P | Cmd+Shift+P | activeApp == projects |
| Create Task | Ctrl+Shift+T | Cmd+Shift+T | activeApp == projects |
| Show Dashboard | Ctrl+1 | Cmd+1 | activeApp == projects |
| Show Kanban | Ctrl+2 | Cmd+2 | activeApp == projects |
| Show Calendar | Ctrl+3 | Cmd+3 | activeApp == projects |
Menu Contributions
| Menu Location | Commands |
|---|---|
header.actions | projects.create, projects.createTask, projects.createTimeEntry |
context.project | projects.createTask, projects.createMilestone, projects.createTimeEntry |
Architecture Summary
Directory Structure
src/
├── components/ # UI components (200+ files)
│ ├── calendar/ # Calendar components (10 files)
│ ├── card/ # Card components
│ ├── charts/ # Chart components
│ ├── common/ # Shared components
│ ├── dashboard/ # Dashboard components
│ ├── dataDisplay/ # Data display components
│ ├── discussions/ # Discussion components (13 files)
│ ├── documents/ # Document components (15 files)
│ ├── filters/ # Filter components
│ ├── form/ # Form components
│ ├── header/ # Header components
│ ├── image/ # Image components
│ ├── lists/ # List components
│ ├── milestones/ # Milestone components (6 files)
│ ├── myday/ # My Day components (6 files)
│ ├── projects/ # Project components (8 files)
│ ├── shared/ # Shared components
│ ├── tasks/ # Task components (11 files)
│ ├── templates/ # Template components (6 files)
│ └── timeTracking/ # Time tracking components
├── hooks/ # Custom React hooks (23 hooks)
├── services/ # Business logic services (9 services)
├── pages/ # Page components (15+ routes)
├── types/ # TypeScript definitions (13 files)
├── utils/ # Utility functions (20+ files)
├── store/ # Zustand stores
├── db/ # Database configuration
└── styles/ # CSS and styling
Key Architectural Patterns
| Pattern | Usage | Example |
|---|---|---|
| State Management | RxDB + Zustand | Collections for data, Zustand for UI state |
| Data Flow | Reactive subscriptions | RxDB observables through hooks |
| Component Architecture | Feature-based organization | Components grouped by domain |
| Routing | React Router v6 | Deeply nested routes for entity hierarchy |
| Services | Pure function services | Business logic separated from components |
Services Overview
| Service | Responsibility | Key Methods |
|---|---|---|
CalendarDataService | Calendar transformations | transformToCalendarEvents(), handleDragDrop() |
RecurrenceService | Recurrence patterns | createRecurrencePattern(), generateInstances() |
DiscussionService | Discussion logic | createDiscussion(), flattenThreads() |
TemplateService | Template operations | createTemplateFromProject(), applyTemplate() |
TimeTrackingStatsService | Time statistics | getTimeStatsForEntity(), generateTimeReport() |
TaskGenerationService | Task generation | generateTasksFromMilestone() |
FileUploadService | File uploads | uploadFile(), getFileUrl() |
BackgroundRecurrenceProcessor | Recurrence background | processRecurringTasks() |
projectStatsService | Project statistics | calculateCompletionPercentage() |
Hooks Overview
| Hook | Purpose | Returns |
|---|---|---|
useProjectCRUD | Project operations | { createProject, updateProject, deleteProject } |
useMilestoneCRUD | Milestone operations | { createMilestone, updateMilestone, deleteMilestone } |
useTaskCRUD | Task operations | { createTask, updateTask, deleteTask, updateTaskStatus } |
useDocumentCRUD | Document operations | { createDocument, updateDocument, deleteDocument } |
useApprovalCRUD | Approval operations | { createApproval, updateApproval } |
useTimeTracking | Time tracking | { activeTimer, start, stop, pause, create } |
useActiveTimers | Active timers | { activeTimers, elapsedMs } |
useDiscussions | Discussion operations | { discussions, create, update, delete, reply } |
useCalendarData | Calendar data | { events, statistics } |
useCalendarActions | Calendar actions | { createEvent, updateEvent, moveEvent } |
useTemplates | Template operations | { templates, create, apply } |
Quality & Compliance
Test Coverage
| Test Type | Location | Coverage Target |
|---|---|---|
| Unit Tests | src/**/__tests__/ | >= 80% |
| Hook Tests | src/hooks/__tests__/ | >= 80% |
| Service Tests | src/services/__tests__/ | >= 80% |
| Util Tests | src/utils/__tests__/ | >= 80% |
| E2E Tests | playwright/ | Critical paths |
Accessibility
| Requirement | Status | Notes |
|---|---|---|
| WCAG 2.1 AA | In Progress | Components use semantic HTML |
| Keyboard Navigation | Yes | Tab navigation supported |
| Screen Reader Support | Partial | Aria labels on interactive elements |
| Focus Management | Yes | Modal focus trapping |
Security Considerations
| Consideration | Implementation |
|---|---|
| Input Validation | Zod schemas for form validation |
| Authorization | Org/workspace isolation via IDs |
| Data Protection | RxDB encryption support |
| File Upload | File validation before upload |
FlowState Alignment
Spec-Driven Development
This app follows the FlowState Standard for spec-driven development:
- Requirements:
.flowstate/specs/{{feature-name}}/requirements.md - Design:
.flowstate/specs/{{feature-name}}/design.md - Wireframes:
.flowstate/specs/{{feature-name}}/wireframes.html - Tasks:
.flowstate/specs/{{feature-name}}/tasks.md
Quality Gates
| Gate | Requirement | Status |
|---|---|---|
| Test Coverage | >= 80% statements | In Progress |
| TypeScript Strict | No any without justification | Pass |
| Accessibility | WCAG 2.1 AA | In Progress |
| Documentation | 100% TSDoc on public APIs | In Progress |
| Security | No critical vulnerabilities | Pass |
Appendix
Related Documentation
| Document | Location | Purpose |
|---|---|---|
| FLOWSTATE.md | .flowstate/docs/FLOWSTATE.md | Development workflow |
| PROCESS.md | .flowstate/docs/PROCESS.md | Development process |
| TDD.md | .flowstate/steering/TDD.md | Testing standards |
| QUALITY.md | .flowstate/steering/QUALITY.md | Code quality |
Version History
| Version | Date | Author | Changes |
|---|---|---|---|
| 1.0.0 | 2026-01-22 | Claude | Initial documentation |