Add Stackless right panel to project shell

Shows Discovery phase tracker (Big Picture → Risks), Captured data
from Atlas, and Project Info (created, last active, features).
Data flows from DB via layout server component.

Made-with: Cursor
This commit is contained in:
2026-03-02 16:11:58 -08:00
parent aaa3f51592
commit 94bb9dbeb4
2 changed files with 169 additions and 32 deletions

View File

@@ -5,20 +5,30 @@ interface ProjectData {
name: string;
status?: string;
progress?: number;
discoveryPhase?: number;
capturedData?: Record<string, string>;
createdAt?: string;
updatedAt?: string;
featureCount?: number;
}
async function getProjectData(projectId: string): Promise<ProjectData> {
try {
const rows = await query<{ data: any }>(
`SELECT data FROM fs_projects WHERE id = $1 LIMIT 1`,
const rows = await query<{ data: any; created_at?: string; updated_at?: string }>(
`SELECT data, created_at, updated_at FROM fs_projects WHERE id = $1 LIMIT 1`,
[projectId]
);
if (rows.length > 0) {
const data = rows[0].data;
const { data, created_at, updated_at } = rows[0];
return {
name: data?.productName || data?.name || "Project",
status: data?.status,
progress: data?.progress ?? 0,
discoveryPhase: data?.discoveryPhase ?? 0,
capturedData: data?.capturedData ?? {},
createdAt: created_at,
updatedAt: updated_at,
featureCount: Array.isArray(data?.features) ? data.features.length : (data?.featureCount ?? 0),
};
}
} catch (error) {
@@ -44,6 +54,11 @@ export default async function ProjectLayout({
projectName={project.name}
projectStatus={project.status}
projectProgress={project.progress}
discoveryPhase={project.discoveryPhase}
capturedData={project.capturedData}
createdAt={project.createdAt}
updatedAt={project.updatedAt}
featureCount={project.featureCount}
>
{children}
</ProjectShell>