Skip to content

Custom Storage Adapters

Critical Path makes zero assumptions about your persistence layer. Any class implementing CriticalPathStore can be passed to CriticalPathEngine.


The CriticalPathStore Interface

import type { Task, Project, Dependency, StatusDefinition } from '@critical-path/core';
export interface CriticalPathStore {
// Project Methods
createProject(project: Project): Promise<Project>;
getProject(id: string): Promise<Project | null>;
listProjects(): Promise<Project[]>;
updateProject(id: string, updates: Partial<Project>): Promise<Project>;
deleteProject(id: string): Promise<void>;
// Task Methods
createTask(task: Task): Promise<Task>;
getTask(id: string): Promise<Task | null>;
listTasks(filter?: { projectId?: string; status?: string }): Promise<Task[]>;
updateTask(id: string, updates: Partial<Task>): Promise<Task>;
deleteTask(id: string): Promise<void>;
// Dependency Methods
addDependency(dep: Dependency): Promise<Dependency>;
listDependencies(projectId: string): Promise<Dependency[]>;
deleteDependency(id: string): Promise<void>;
}