Core Features

Hierarch is organized around five nonlinear design phases, with tasks, projects, and artifacts as the primary objects. Everything connects through a unified drawer navigation system that keeps context visible as you move between items.

Design Phases

Every task in Hierarch belongs to one of five design phases. These phases are nonlinear, meaning a task can move freely between them. Moving backward (from Iterate to Explore, for example) is a normal part of the design process.

PhaseColorPurpose
ExploreVioletDiscovery, research, brainstorming
DesignBlueScope locked, requirements established, approach documented
IterateAmberHigh-fidelity production work, refinement cycles
ReviewOrangeAwaiting review from stakeholders or teammates
HandoffEmeraldComplete and ready for development

Phase transitions are recorded automatically. Every time a task moves between phases, Hierarch saves a PhaseTransition record containing the source phase, destination phase, timestamp, optional reviewer, and optional notes.

When a task enters the Review phase, Hierarch automatically creates a feedback artifact linked to that task. This ensures every review round has a place to capture review comments.

Phase Transition Record

{
  id: string,
  fromPhase: "explore" | "design" | "iterate" | "review" | "handoff",
  toPhase: "explore" | "design" | "iterate" | "review" | "handoff",
  timestamp: string (ISO 8601),
  reviewer?: string,
  deadline?: string,
  notes?: string
}

Tasks & Projects

Tasks are the fundamental unit of work. Each task has a title, rich text description, a phase, an optional due date with time, and an optional project assignment.

Projects group related tasks and provide high-level organization. Each project has a name, description, optional start and end dates, and metadata (icon, color, type). The project drawer shows all tasks grouped by phase with a "needs attention" indicator for tasks that are overdue, stuck in review, or stale.

Task Views

  • Overview (Briefing). Dashboard with metric cards, active projects, and a recent activity feed from the last 48 hours.
  • All Tasks (TaskBoard). Full task list with two modes: list view (resizable columns) and board view (kanban columns per phase). Supports sorting by date, status, or project. Filters by status, project, and due date. Multi-select for bulk operations.
  • Capacity View. Workload visualization per phase with burndown tracking.

Task Properties

FieldTypeDescription
titlestringTask name
descriptionJSONRich text content and phaseHistory array
statusstringCurrent phase (explore, design, iterate, review, handoff)
projectuuid | nullAssociated project (null for inbox tasks)
dueDatestring | nullDue date and time in local format
ordernumberPosition within its column or list

Blockers

Each task can have typed blockers that need resolution before the task can progress. Blockers are stored in a dedicated task_blockers table with row-level security.

Each blocker has a type: person (waiting on an individual), team (waiting on a group), external (outside dependency), or task (depends on another task). Tasks with at least one unresolved blocker display a lock icon in both list and board views.

Artifacts

Artifacts are rich documents attached to tasks and projects. Hierarch supports ten distinct artifact types, each with its own color and behavior.

TypeColorPurpose
NoteBlueUnstructured notes
DecisionAmberDesign decisions with rationale
FeedbackEmeraldReview comments (auto-created on Review phase entry)
ResearchVioletResearch findings and analysis
LinkSkyURL bookmarks
FigmaPinkFigma file URLs with oEmbed preview thumbnail
PrototypeOrangeInteractive prototype URLs
ScreenshotTealImage captures
VideoRedVideo files
DocSlateDocumentation and code snippets

Each artifact has a title, rich text body (Tiptap editor with bold, italic, headings, lists, and links), optional URL, and optional project and task links. Figma-type artifacts validate URLs against the pattern figma.com/(file|design|proto|board)/ and fetch an oEmbed thumbnail for preview.

Focus Timer

The built-in focus timer provides Pomodoro-style time tracking per task. Timer entries are persisted to a Supabase KV store via edge functions, keeping them separate from the main Postgres database.

Time entries are created, listed, and deleted through the /time-entries edge function endpoint. See the API Reference for endpoint details.