Skip to content

HyvFlow (Project Management)

HyvFlow is a full-featured project management and workflow tool. It’s the second-largest module (~140+ files) with support for hierarchical project structures, multiple view types, and team collaboration.

Module path: src/lib/modules/hyvflow/ Routes: /hyvflow, /hyvflow/[id]/[...path]

Workspace
└── Portfolio
└── Project
└── Milestone
├── Sprint
└── Task
├── Subtask
├── Activity/Comments
├── Attachments
├── Checklist Items
└── Relationships/Links
EntityStatuses
WorkspaceActive, Archived, Hidden, Complete, Canceled, Paused, Draft
PortfolioActive, Archived, Hidden, InProgress, InReview, Complete, Canceled, Paused
ProjectActive, Archived, Hidden, InProgress, InReview, Complete, Canceled, Paused
MilestoneActive, Archived, Hidden, InProgress, InReview, Complete, Canceled, Paused
TaskActive, InProgress, InReview, Complete, Canceled, Paused

Task Priorities: Urgent, High, Normal, Low

Sprint-based columns with status grouping. Drag-and-drop between statuses.

Components: board/kanban.svelte, board-sprints.svelte, board-status.svelte, board-task.svelte

Timeline visualization powered by dhtmlx-gantt v9.0.14. Shows sprints as parent rows with tasks as children.

Components: gantt/gantt-component.svelte, gantt/gantt-tab.svelte

  • 31-day range (past 3 days to future)
  • Today highlighting
  • Click-to-open task modal

Sprint-grouped task listing with status sections.

Components: listView/listview.svelte, listview-sprints.svelte, listview-task.svelte

Sortable/filterable tabular display.

Components: table/table-list-tasks.svelte, table-header-filters.svelte

FeatureDescription
SubtasksHierarchical via parentId
Custom StatusesPer-milestone via arrayStatus
SprintsIterative cycles with date ranges
AssigneesMultiple users per task
TagsOrganization labels
Time TrackingEstimation and tracking
ChecklistsItems with assignees
File AttachmentsUpload and manage files
Activity FeedComments with @mentions and threads
RelationshipsLinks between tasks
URL DependenciesExternal dependency links
ManagerFilePurpose
workspaceManagerworkspace-manager.svelte.tsWorkspaces, portfolios, projects, milestones
taskManagertask-manager.svelte.tsTask CRUD, activities, nested subtasks
notificationManagernotifications-manager.svelte.tsUnread/all notifications
favoriteManagerfavorites-manager.svelte.tsBookmarked items
userInterfacesManageruser-interfaces-manager.svelte.tsPersisted UI preferences
sidebarSessionManagersidebar-session-manager.svelte.tsSession-based sidebar state

Svelte writable stores for UI state:

  • workspaceActions, portfolioActions, projectActions, milestoneActions, sprintActions
  • Dialog toggles: isopenproject, isopenportfolio, isopensprint, etc.
  • myTasks, refreshTaskTree, taskrelationships

firestoreBatchManager.executeBatch(operations) for multi-document transactions:

  • Task batch: recursive deletion, status updates
  • Milestone batch: bulk operations
  • Project batch: cascade operations

HyvFlow uses a catch-all route pattern:

/hyvflow/{workspaceId}/pf/{portfolioId}/p/{projectId}/m/{milestoneId}

Path segments are parsed to set context in workspaceManager.

All use Valibot:

  • workspace.ts - name, color, logo
  • portfolio.ts - name, status
  • project.ts - name, description, objectives, risks, scope, requirements, vision, resources, members
  • milestone.ts - name, description
  • sprint.ts - sprint fields
  • status.ts - custom status columns
CategoryComponents
Formsworkspace-form, portfolio-form, project-form, milestone-form, sprints-form, status-form
Task Modaltask-table-form-modal (16KB), task-modal, task-upload-files, tasks-tags
Sidebar Leftmenu-sidebar (tree nav), menu-sidebar-item
Sidebar Righturl-dependencies, menu-relationships
Activitytask-activity, comment-form, comment-card, mention-dropdown, replies-list
My Tasksportfolios-tasks, milestone-tasks (data table with 10 columns)
Dropdownspriority, status, task-type, relationships, chronometer

Available at /my-tasks - shows all tasks assigned to the current user across all workspaces, with filtering by status, priority, name, and due date.