VIBN Frontend for Coolify deployment
This commit is contained in:
96
lib/types/phases.ts
Normal file
96
lib/types/phases.ts
Normal file
@@ -0,0 +1,96 @@
|
||||
/**
|
||||
* Phase Tracking for Vibn Projects
|
||||
*
|
||||
* Projects progress through phases with specific agents:
|
||||
* 1. Gathering → Collect and analyze all project materials
|
||||
* 2. Vision → Extract and validate Product Vision Board
|
||||
* 3. Scope → Define V1 MVP features
|
||||
* 4. Blueprint → Technical architecture design
|
||||
* 5. Build → Implementation (future)
|
||||
*/
|
||||
|
||||
export type ProjectPhase =
|
||||
| 'gathering' // Phase 1: Collecting context and analyzing materials
|
||||
| 'vision' // Phase 2: Extracting vision board
|
||||
| 'scope' // Phase 3: Defining V1 features
|
||||
| 'blueprint' // Phase 4: Technical design
|
||||
| 'build'; // Phase 5: Implementation
|
||||
|
||||
export type PhaseStatus =
|
||||
| 'not_started'
|
||||
| 'in_progress'
|
||||
| 'completed';
|
||||
|
||||
export interface PhaseProgress {
|
||||
phase: ProjectPhase;
|
||||
status: PhaseStatus;
|
||||
startedAt?: FirebaseFirestore.Timestamp;
|
||||
completedAt?: FirebaseFirestore.Timestamp;
|
||||
insights?: GatheringInsight[]; // For gathering phase
|
||||
visionBoard?: VisionBoardData; // For vision phase
|
||||
scope?: ScopeData; // For scope phase
|
||||
blueprint?: BlueprintData; // For blueprint phase
|
||||
}
|
||||
|
||||
export interface GatheringInsight {
|
||||
id: string;
|
||||
source: string; // "Patient History Overview"
|
||||
sourceType: 'document' | 'github' | 'session' | 'conversation';
|
||||
sourceId: string; // Document/session ID
|
||||
insight: string; // "Using evidence-based diagnostic methods"
|
||||
extractedAt: FirebaseFirestore.Timestamp;
|
||||
confirmed: boolean; // User validated this
|
||||
confirmedAt?: FirebaseFirestore.Timestamp;
|
||||
usedInVision: boolean; // Phase 2 marked this as used
|
||||
category?: 'feature' | 'user' | 'problem' | 'competitor' | 'tech' | 'progress';
|
||||
}
|
||||
|
||||
export interface VisionBoardData {
|
||||
vision: string; // One-sentence vision
|
||||
who: string; // Target users
|
||||
need: string; // Problem they face
|
||||
product: string; // Solution features
|
||||
validation: string; // Go-to-market strategy
|
||||
completedAt?: FirebaseFirestore.Timestamp;
|
||||
approved: boolean;
|
||||
approvedAt?: FirebaseFirestore.Timestamp;
|
||||
}
|
||||
|
||||
export interface ScopeData {
|
||||
v1Features: string[];
|
||||
timeline: string;
|
||||
priorities: {
|
||||
mustHave: string[];
|
||||
shouldHave: string[];
|
||||
niceToHave: string[];
|
||||
};
|
||||
completedAt?: FirebaseFirestore.Timestamp;
|
||||
}
|
||||
|
||||
export interface BlueprintData {
|
||||
techStack: string[];
|
||||
architecture: string;
|
||||
database: string;
|
||||
apis: string[];
|
||||
completedAt?: FirebaseFirestore.Timestamp;
|
||||
}
|
||||
|
||||
// Helper to determine which agent to use
|
||||
export function getAgentForPhase(phase: ProjectPhase): string {
|
||||
const agentMap: Record<ProjectPhase, string> = {
|
||||
gathering: 'GATHERING_AGENT',
|
||||
vision: 'VISION_AGENT',
|
||||
scope: 'SCOPE_AGENT',
|
||||
blueprint: 'BLUEPRINT_AGENT',
|
||||
build: 'BUILD_AGENT'
|
||||
};
|
||||
return agentMap[phase];
|
||||
}
|
||||
|
||||
// Helper to get next phase
|
||||
export function getNextPhase(currentPhase: ProjectPhase): ProjectPhase | null {
|
||||
const phaseOrder: ProjectPhase[] = ['gathering', 'vision', 'scope', 'blueprint', 'build'];
|
||||
const currentIndex = phaseOrder.indexOf(currentPhase);
|
||||
return currentIndex < phaseOrder.length - 1 ? phaseOrder[currentIndex + 1] : null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user