VIBN Frontend for Coolify deployment

This commit is contained in:
2026-02-15 19:25:52 -08:00
commit 40bf8428cd
398 changed files with 76513 additions and 0 deletions

96
lib/types/phases.ts Normal file
View 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;
}