Projects App

Features & Capabilities

Projects App - Features & Capabilities Report

Template Version: 1.0.0 Generated: 2026-01-22 Package: @epicdm/flowstate-app-projects App ID: projects


Table of Contents

  1. Overview
  2. App Identity
  3. Feature Categories
  4. Capabilities
  5. Data Models
  6. User Workflows
  7. Integration Points
  8. Commands & Keybindings
  9. Architecture Summary
  10. 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 TypeDescriptionPrimary Use Cases
Project ManagersCoordinate projects and teamsCreate projects, manage milestones, track progress, assign tasks
Team MembersExecute project workView tasks, log time, update status, participate in discussions
Individual ContributorsPersonal task managementMy Day dashboard, time tracking, task completion
StakeholdersReview and approveDocument 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

PropertyValue
IDprojects
Display NameProjects
Package Name@epic-flow/flowstate-app-projects
Version0.1.0
Categorybusiness
Iconfolder-kanban
Color#EC4899
Base Path/projects
Permissionsdatabase, notifications

Entry Points

Entry PointPathDescription
Main Exportsrc/index.tsPrimary package export
Standalonesrc/standalone.tsxStandalone app entry
App Componentsrc/App.tsxMain React component with routing
Pluginsrc/plugin.tsFlowState plugin registration

Feature Categories

Category 1: Project Management

Core project lifecycle and organization

Feature: Project CRUD Operations

PropertyDetails
IDproject-crud
StatusImplemented
PriorityHigh

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:

ComponentPathPurpose
ProjectListViewsrc/components/projects/ProjectListView.tsxProject listing
ProjectDetailViewsrc/components/projects/ProjectDetailView.tsxProject details
ProjectQuickCreatesrc/components/projects/ProjectQuickCreate.tsxQuick create modal
ProjectFormsrc/components/form/ProjectForm.tsxFull project form
useProjectCRUDsrc/hooks/useProjectCRUD.tsProject operations

Routes:

  • /projects - Project list
  • /projects/:projectId - Project detail with tabs

Feature: Project Detail View

PropertyDetails
IDproject-detail
StatusImplemented
PriorityHigh

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:

ComponentPathPurpose
ProjectDetailHeadersrc/components/projects/ProjectDetailHeader.tsxHeader section
ProjectDetailContentsrc/components/projects/ProjectDetailContent.tsxMain content
ProjectDetailActionssrc/components/projects/ProjectDetailActions.tsxAction buttons
ProjectStatisticsCardsrc/components/projects/ProjectStatisticsCard.tsxStatistics
ProjectAttributesSectionsrc/components/projects/ProjectAttributesSection.tsxAttributes

Category 2: Milestone Management

Organize tasks into logical phases

Feature: Milestone CRUD Operations

PropertyDetails
IDmilestone-crud
StatusImplemented
PriorityHigh

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:

ComponentPathPurpose
MilestoneListViewsrc/components/milestones/MilestoneListView.tsxMilestone listing
MilestoneDetailViewsrc/components/milestones/MilestoneDetailView.tsxMilestone detail
MilestoneQuickCreatesrc/components/milestones/MilestoneQuickCreate.tsxQuick create
MilestoneSectionsrc/components/milestones/MilestoneSection.tsxSection component
MilestoneTasksTablesrc/components/milestones/MilestoneTasksTable.tsxTask table
useMilestoneCRUDsrc/hooks/useMilestoneCRUD.tsMilestone operations
useMilestoneDetailsrc/hooks/useMilestoneDetail.tsDetail 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

PropertyDetails
IDtask-crud
StatusImplemented
PriorityHigh

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:

ComponentPathPurpose
TaskListViewsrc/components/tasks/TaskListView.tsxTask listing
TaskDetailViewsrc/components/tasks/TaskDetailView.tsxTask detail
TaskQuickCreatesrc/components/tasks/TaskQuickCreate.tsxQuick create
TaskDetailContentsrc/components/tasks/TaskDetailContent.tsxDetail content
TaskSectionsrc/components/tasks/TaskSection.tsxTask section
TaskStatusChangeDialogsrc/components/tasks/TaskStatusChangeDialog.tsxStatus change
useTaskCRUDsrc/hooks/useTaskCRUD.tsTask operations
useTaskDetailsrc/hooks/useTaskDetail.tsDetail queries

Routes:

  • /tasks - All tasks
  • /tasks/:taskId - Task detail
  • /tasks/:taskId/tasks/:subtaskId - Subtask detail

Feature: Subtasks

PropertyDetails
IDsubtasks
StatusImplemented
PriorityMedium

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:

ComponentPathPurpose
SubtasksListsrc/components/tasks/SubtasksList.tsxSubtask list

Feature: Task Recurrence

PropertyDetails
IDtask-recurrence
StatusImplemented
PriorityMedium

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:

ComponentPathPurpose
RecurrenceServicesrc/services/RecurrenceService.tsPattern logic
BackgroundRecurrenceProcessorsrc/services/BackgroundRecurrenceProcessor.tsInstance generation

Category 4: Time Tracking

Comprehensive time tracking with timers and statistics

Feature: Active Timers

PropertyDetails
IDactive-timers
StatusImplemented
PriorityHigh

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:

ComponentPathPurpose
TimerControlssrc/components/tasks/TimerControls.tsxTimer buttons
ActiveTimerPillssrc/components/header/ActiveTimerPills.tsxHeader display
ActiveTimerModalsrc/components/header/ActiveTimerModal.tsxTimer modal
useActiveTimerssrc/hooks/useActiveTimers.tsTimer state
useTimeTrackingsrc/hooks/useTimeTracking.tsTime operations

Feature: Time Entry Management

PropertyDetails
IDtime-entries
StatusImplemented
PriorityHigh

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:

ComponentPathPurpose
TimeEntryListsrc/components/tasks/TimeEntryList.tsxEntry list
TimeTrackingSectionsrc/components/tasks/TimeTrackingSection.tsxTracking section
QuickTimeTrackingModalsrc/components/timeTracking/QuickTimeTrackingModal.tsxQuick entry
useAllTimeEntriessrc/hooks/useAllTimeEntries.tsEntry queries

Feature: Time Tracking Statistics

PropertyDetails
IDtime-stats
StatusImplemented
PriorityMedium

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:

ComponentPathPurpose
TimeTrackingStatsWidgetsrc/components/tasks/TimeTrackingStatsWidget.tsxStats widget
TimeTrackingStatsServicesrc/services/TimeTrackingStatsService.tsStats logic
useTimeTrackingStatssrc/hooks/useTimeTrackingStats.tsStats queries
useMilestoneTimeTrackingsrc/hooks/useMilestoneTimeTracking.tsMilestone time

Category 5: Document Management

Markdown documents with approval workflows

Feature: Document CRUD

PropertyDetails
IDdocument-crud
StatusImplemented
PriorityHigh

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:

ComponentPathPurpose
DocumentListViewsrc/components/documents/DocumentListView.tsxDocument list
DocumentDetailViewsrc/components/documents/DocumentDetailView.tsxRead-only view
DocumentEditViewsrc/components/documents/DocumentEditView.tsxEditor view
MarkdownEditorsrc/components/documents/MarkdownEditor.tsxMarkdown editor
MarkdownRenderersrc/components/documents/MarkdownRenderer.tsxRender markdown
DocumentFormsrc/components/documents/DocumentForm.tsxDocument form
useDocumentCRUDsrc/hooks/useDocumentCRUD.tsDocument operations

Routes:

  • /documents - Document list
  • /documents/new - Create document
  • /documents/:documentId - Document detail
  • /documents/:documentId/edit - Edit document

Feature: Document Approval Workflow

PropertyDetails
IDdocument-approval
StatusImplemented
PriorityHigh

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:

ComponentPathPurpose
ApprovalSectionsrc/components/documents/ApprovalSection.tsxApproval UI
ApprovalStatusBadgesrc/components/documents/ApprovalStatusBadge.tsxStatus badge
ApprovalActionModalsrc/components/documents/ApprovalActionModal.tsxAction modal
ApprovalHistoryPanelsrc/components/documents/ApprovalHistoryPanel.tsxHistory display
useApprovalCRUDsrc/hooks/useApprovalCRUD.tsApproval operations
useDocumentsWithApprovalsrc/hooks/useDocumentsWithApproval.tsCombined queries

Category 6: Team Discussions

Threaded discussions on any entity

Feature: Discussion Threads

PropertyDetails
IDdiscussions
StatusImplemented
PriorityHigh

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:

ComponentPathPurpose
DiscussionListsrc/components/discussions/DiscussionList.tsxDiscussion list
DiscussionItemsrc/components/discussions/DiscussionItem.tsxSingle item
DiscussionEditorsrc/components/discussions/DiscussionEditor.tsxText editor
VirtualDiscussionListsrc/components/discussions/VirtualDiscussionList.tsxVirtualized
AdaptiveDiscussionListsrc/components/discussions/AdaptiveDiscussionList.tsxAuto-switch
FileAttachmentsrc/components/discussions/FileAttachment.tsxAttachments
useDiscussionssrc/hooks/useDiscussions.tsDiscussion operations
DiscussionServicesrc/services/DiscussionService.tsDiscussion logic

Category 7: Calendar & Scheduling

Visual scheduling with drag-drop support

Feature: Calendar View

PropertyDetails
IDcalendar-view
StatusImplemented
PriorityMedium

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:

ComponentPathPurpose
ProjectCalendarsrc/components/calendar/ProjectCalendar.tsxMain calendar
EventCalendarsrc/components/calendar/EventCalendar.tsxEvent display
CalendarViewTogglesrc/components/calendar/CalendarViewToggle.tsxView toggle
CalendarStatssrc/components/calendar/CalendarStats.tsxStatistics
useCalendarDatasrc/hooks/useCalendarData.tsCalendar queries
CalendarDataServicesrc/services/CalendarDataService.tsData transformation

Feature: Drag-Drop Scheduling

PropertyDetails
IDcalendar-dnd
StatusImplemented
PriorityMedium

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:

ComponentPathPurpose
CalendarDataServicesrc/services/CalendarDataService.tsDrag-drop handling
useCalendarActionssrc/hooks/useCalendarActions.tsCalendar actions

Category 8: My Day Dashboard

Personal productivity and focus

Feature: My Day Views

PropertyDetails
IDmy-day
StatusImplemented
PriorityHigh

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:

ComponentPathPurpose
MyDayTodayViewsrc/components/myday/MyDayTodayView.tsxToday view
MyDayWeekViewsrc/components/myday/MyDayWeekView.tsxWeek view
MyDayMonthViewsrc/components/myday/MyDayMonthView.tsxMonth view
MyDayTrackedTimeViewsrc/components/myday/MyDayTrackedTimeView.tsxTime view
ViewScopeDropdownsrc/components/myday/ViewScopeDropdown.tsxScope selector
MyDayDashboardsrc/pages/MyDayPage.tsxDashboard page

Routes:

  • /my-day - My Day dashboard

Category 9: Templates

Reusable project/task templates

Feature: Template Management

PropertyDetails
IDtemplates
StatusImplemented
PriorityMedium

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:

ComponentPathPurpose
TemplateListsrc/components/templates/TemplateList.tsxTemplate list
TemplateCardsrc/components/templates/TemplateCard.tsxTemplate card
SaveTemplateModalsrc/components/templates/SaveTemplateModal.tsxSave modal
CreateFromTemplateWizardsrc/components/templates/CreateFromTemplateWizard.tsxCreation wizard
TemplateEditViewsrc/components/templates/TemplateEditView.tsxEdit view
TemplatesPagesrc/pages/TemplatesPage.tsxTemplates page
useTemplatessrc/hooks/useTemplates.tsTemplate operations
TemplateServicesrc/services/TemplateService.tsTemplate logic
TaskGenerationServicesrc/services/TaskGenerationService.tsTask generation

Routes:

  • /templates - Template management

Category 10: Dashboard & Navigation

Central dashboard and app navigation

Feature: Project Dashboard

PropertyDetails
IDdashboard
StatusImplemented
PriorityHigh

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:

ComponentPathPurpose
DashboardPagesrc/pages/DashboardPage.tsxDashboard page
TabbedDashboardsrc/components/dashboard/TabbedDashboard.tsxTab layout

Routes:

  • /dashboard - Main dashboard (default route)

Feature: Floating Action Button

PropertyDetails
IDfab
StatusImplemented
PriorityLow

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:

ComponentPathPurpose
FloatingActionButtonsrc/components/FloatingActionButton.tsxFAB component
FloatingActionProvidersrc/components/FloatingActionProvider.tsxFAB context
useFloatingActionConfigsrc/hooks/useFloatingActionConfig.tsFAB config

Capabilities

Core Capabilities

CapabilityDescriptionImplementation
Hierarchical OrganizationProject > Milestone > Task > SubtaskParent-child relationships with completion rollup
Time TrackingActive timers and manual entriesTimer state with elapsed calculation
Document ManagementMarkdown with approval workflowRich editor with status tracking
Team CollaborationThreaded discussions on any entityPolymorphic discussions with attachments
Personal ProductivityMy Day dashboard with focus viewsScope-based filtering with localStorage

Technical Capabilities

CapabilityStatusNotes
CRUD OperationsYesFull CRUD on all entity types
Real-time UpdatesYesRxDB reactive subscriptions
Offline SupportYesRxDB local-first architecture
Search & FilterYesMulti-field filtering, category/tag support
SortingYesConfigurable sort on list views
PaginationYesPaginated discussion lists
ExportNoNot currently implemented
NotificationsYesToast notifications for actions

Integration Capabilities

IntegrationTypeDescription
Product AppinternalProducts link to projects
GoalsinternalGoals can reference projects
RxDB ServerinternalReplication for data sync
FlowState FrameworkinternalAuth, org context, layout

Data Models

Collections Used

CollectionDescriptionOperationsPrimary Hook
projectsProject recordsCRUD, QueryuseProjectCRUD
milestonesProject milestonesCRUD, QueryuseMilestoneCRUD
tasksTask records with recurrenceCRUD, QueryuseTaskCRUD
documentsMarkdown documentsCRUD, QueryuseDocumentCRUD
approvalsDocument approvalsCRUD, QueryuseApprovalCRUD
discussionsThreaded discussionsCRUD, QueryuseDiscussions
timeEntriesTime tracking entriesCRUD, QueryuseTimeTracking
templatesReusable templatesCRUD, QueryuseTemplates
attributesCategories and tagsCRUD, QueryuseAttributesCRUD

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:

StepActionComponentOutcome
1Open quick createProjectQuickCreateModal displayed
2Enter project detailsProjectFormTitle, description set
3Save projectuseProjectCRUDProject created
4Navigate to detailRouterProject detail shown
5Add milestonesMilestoneQuickCreateMilestones created
6Add tasksTaskQuickCreateTasks 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:

StepActionComponentOutcome
1View task detailTaskDetailViewTask displayed
2Start timerTimerControlsTimer running
3Work on task-Time elapsed
4Stop timerTimerControlsTime entry created
5Change statusTaskStatusChangeDialogStatus dialog shown
6Add completion noteTaskStatusChangeDialogNote attached
7Mark completeuseTaskCRUDStatus 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:

StepActionComponentOutcome
1Create documentDocumentEditViewEditor displayed
2Write contentMarkdownEditorContent saved
3Request approvalApprovalSectionApproval requested
4Reviewer notified-Approval pending
5Review documentDocumentDetailViewDocument displayed
6Take actionApprovalActionModalApprove/reject/revise
7Update statususeApprovalCRUDApproval 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:

StepActionComponentOutcome
1Start timerTimerControlsTimer starts
2View in headerActiveTimerPillsTimer visible
3Pause if neededTimerControlsTimer paused
4Resume workTimerControlsTimer continues
5Stop timerTimerControlsTime entry created
6View statisticsTimeTrackingStatsWidgetStats 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:

StepActionComponentOutcome
1Open My DayMyDayDashboardDashboard displayed
2Select scopeViewScopeDropdownScope filtered
3View today's tasksMyDayTodayViewTasks shown
4Check time trackedMyDayTrackedTimeViewTime displayed
5Mark tasks completeTaskItemStatus 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 StateTo StateTriggerSide Effects
To DoIn ProgressStart workOptional note
In ProgressCompleteFinish workCompletion timestamp
In ProgressBlockedBlocker foundNote required
BlockedIn ProgressBlocker resolvedNote optional
AnyOn HoldPause workNote optional

Document Approval States

┌─────────┐   ┌─────────────┐   ┌──────────┐
│  Draft  │──▶│   Pending   │──▶│ Approved │
└─────────┘   └─────────────┘   └──────────┘


              ┌─────────────┐
              │  Revision   │──▶ Draft
              │  Requested  │
              └─────────────┘


              ┌─────────────┐
              │  Rejected   │
              └─────────────┘

Integration Points

Internal Integrations

IntegrationPackagePurpose
FlowState Framework@epicdm/flowstate-app-frameworkApp container, auth, layout
Collections@epicdm/flowstate-collectionsData models and schemas
RxDB React@epicdm/flowstate-rxdb-reactReactive subscriptions
UI Components@epicdm/flowstate-uiShared UI buttons

External Integrations

IntegrationTypeConfiguration
FullCalendarLibraryCalendar visualization
react-toastifyLibraryToast notifications

MCP Integration

ToolPurposeExample Usage
collection-queryQuery projects, tasks{"collection": "tasks", "selector": {"status": "To Do"}}
collection-createCreate entities{"collection": "tasks", "data": {...}}
collection-updateUpdate status{"collection": "tasks", "id": "...", "data": {"status": "Complete"}}

Commands & Keybindings

Registered Commands

Command IDTitleIconCategory
projects.createCreate ProjectplusProjects
projects.createTaskCreate Taskplus-circleProjects
projects.createMilestoneCreate MilestoneflagProjects
projects.createTimeEntryCreate Time EntryclockProjects
projects.showDashboardShow Dashboardlayout-dashboardProjects
projects.showKanbanShow Kanban BoardcolumnsProjects
projects.showCalendarShow CalendarcalendarProjects

Keybindings

CommandWindows/LinuxmacOSContext
Create ProjectCtrl+Shift+PCmd+Shift+PactiveApp == projects
Create TaskCtrl+Shift+TCmd+Shift+TactiveApp == projects
Show DashboardCtrl+1Cmd+1activeApp == projects
Show KanbanCtrl+2Cmd+2activeApp == projects
Show CalendarCtrl+3Cmd+3activeApp == projects
Menu LocationCommands
header.actionsprojects.create, projects.createTask, projects.createTimeEntry
context.projectprojects.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

PatternUsageExample
State ManagementRxDB + ZustandCollections for data, Zustand for UI state
Data FlowReactive subscriptionsRxDB observables through hooks
Component ArchitectureFeature-based organizationComponents grouped by domain
RoutingReact Router v6Deeply nested routes for entity hierarchy
ServicesPure function servicesBusiness logic separated from components

Services Overview

ServiceResponsibilityKey Methods
CalendarDataServiceCalendar transformationstransformToCalendarEvents(), handleDragDrop()
RecurrenceServiceRecurrence patternscreateRecurrencePattern(), generateInstances()
DiscussionServiceDiscussion logiccreateDiscussion(), flattenThreads()
TemplateServiceTemplate operationscreateTemplateFromProject(), applyTemplate()
TimeTrackingStatsServiceTime statisticsgetTimeStatsForEntity(), generateTimeReport()
TaskGenerationServiceTask generationgenerateTasksFromMilestone()
FileUploadServiceFile uploadsuploadFile(), getFileUrl()
BackgroundRecurrenceProcessorRecurrence backgroundprocessRecurringTasks()
projectStatsServiceProject statisticscalculateCompletionPercentage()

Hooks Overview

HookPurposeReturns
useProjectCRUDProject operations{ createProject, updateProject, deleteProject }
useMilestoneCRUDMilestone operations{ createMilestone, updateMilestone, deleteMilestone }
useTaskCRUDTask operations{ createTask, updateTask, deleteTask, updateTaskStatus }
useDocumentCRUDDocument operations{ createDocument, updateDocument, deleteDocument }
useApprovalCRUDApproval operations{ createApproval, updateApproval }
useTimeTrackingTime tracking{ activeTimer, start, stop, pause, create }
useActiveTimersActive timers{ activeTimers, elapsedMs }
useDiscussionsDiscussion operations{ discussions, create, update, delete, reply }
useCalendarDataCalendar data{ events, statistics }
useCalendarActionsCalendar actions{ createEvent, updateEvent, moveEvent }
useTemplatesTemplate operations{ templates, create, apply }

Quality & Compliance

Test Coverage

Test TypeLocationCoverage Target
Unit Testssrc/**/__tests__/>= 80%
Hook Testssrc/hooks/__tests__/>= 80%
Service Testssrc/services/__tests__/>= 80%
Util Testssrc/utils/__tests__/>= 80%
E2E Testsplaywright/Critical paths

Accessibility

RequirementStatusNotes
WCAG 2.1 AAIn ProgressComponents use semantic HTML
Keyboard NavigationYesTab navigation supported
Screen Reader SupportPartialAria labels on interactive elements
Focus ManagementYesModal focus trapping

Security Considerations

ConsiderationImplementation
Input ValidationZod schemas for form validation
AuthorizationOrg/workspace isolation via IDs
Data ProtectionRxDB encryption support
File UploadFile 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

GateRequirementStatus
Test Coverage>= 80% statementsIn Progress
TypeScript StrictNo any without justificationPass
AccessibilityWCAG 2.1 AAIn Progress
Documentation100% TSDoc on public APIsIn Progress
SecurityNo critical vulnerabilitiesPass

Appendix

DocumentLocationPurpose
FLOWSTATE.md.flowstate/docs/FLOWSTATE.mdDevelopment workflow
PROCESS.md.flowstate/docs/PROCESS.mdDevelopment process
TDD.md.flowstate/steering/TDD.mdTesting standards
QUALITY.md.flowstate/steering/QUALITY.mdCode quality

Version History

VersionDateAuthorChanges
1.0.02026-01-22ClaudeInitial documentation
Previous
Getting Started