feat(plan): add Plan tab as the first project surface
A new home for everything that happens BEFORE building: - Vision — one-line elevator pitch (mirrors productVision) - Ideas — the "park-it" bin for raw thoughts - Tasks — what needs to happen next (open / done) - Decisions — log of "we chose X over Y because Z" Storage is appended under fs_projects.data.plan so no schema migration is needed. CRUD lives at /api/projects/[projectId]/plan. The bare project URL now redirects to /plan instead of /product, and the AI chat receives decisions + open tasks in its active-project context block — so it stops re-litigating settled questions and knows what's queued up. Made-with: Cursor
This commit is contained in:
@@ -10,12 +10,13 @@
|
||||
|
||||
import Link from "next/link";
|
||||
import { usePathname } from "next/navigation";
|
||||
import { Box, Cloud, Server } from "lucide-react";
|
||||
import { Box, Cloud, Server, NotebookPen } from "lucide-react";
|
||||
|
||||
const TABS = [
|
||||
{ id: "product", label: "Product", icon: Box, blurb: "Custom code, design, and content built for this vision." },
|
||||
{ id: "infrastructure", label: "Infrastructure", icon: Server, blurb: "Swappable services this product depends on." },
|
||||
{ id: "hosting", label: "Hosting", icon: Cloud, blurb: "Where it runs and how people reach it." },
|
||||
{ id: "plan", label: "Plan", icon: NotebookPen, blurb: "Vision, ideas, tasks, and decisions for this project." },
|
||||
{ id: "product", label: "Product", icon: Box, blurb: "Custom code, design, and content built for this vision." },
|
||||
{ id: "infrastructure", label: "Infrastructure", icon: Server, blurb: "Swappable services this product depends on." },
|
||||
{ id: "hosting", label: "Hosting", icon: Cloud, blurb: "Where it runs and how people reach it." },
|
||||
] as const;
|
||||
|
||||
export function ProjectTabBar({
|
||||
@@ -28,7 +29,7 @@ export function ProjectTabBar({
|
||||
const pathname = usePathname() ?? "";
|
||||
const activeTab =
|
||||
TABS.find(t => pathname.includes(`/project/${projectId}/${t.id}`))?.id ??
|
||||
"product";
|
||||
"plan";
|
||||
|
||||
return (
|
||||
<nav style={tabBar} aria-label="Project sections">
|
||||
|
||||
Reference in New Issue
Block a user