feat(dashboard): update roadmap to match PRD phases

This commit is contained in:
Nicholai Vogel 2026-01-24 13:15:42 -07:00
parent a730220aef
commit 6ffc780841
2 changed files with 78 additions and 107 deletions

View File

@ -36,6 +36,9 @@ export default async function DashboardLayout({
</div> </div>
</div> </div>
</SidebarInset> </SidebarInset>
<p className="pointer-events-none fixed bottom-3 left-0 right-0 text-center text-xs text-muted-foreground/60">
Pre-alpha build
</p>
</SidebarProvider> </SidebarProvider>
</CommandMenuProvider> </CommandMenuProvider>
</SettingsProvider> </SettingsProvider>

View File

@ -1,130 +1,98 @@
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle,
} from "@/components/ui/card"
import { Badge } from "@/components/ui/badge"
import { Button } from "@/components/ui/button" import { Button } from "@/components/ui/button"
import { IconExternalLink } from "@tabler/icons-react" import { IconExternalLink } from "@tabler/icons-react"
const GITHUB_URL = const GITHUB_URL =
"https://github.com/High-Performance-Structures/compass" "https://github.com/High-Performance-Structures/compass"
const working = [
"Projects — create and manage projects with D1 database",
"Schedule — Gantt chart with phases, tasks, dependencies, and baselines",
"File browser — drive-style UI with folder navigation",
"Sidebar navigation with contextual project/file views",
]
const inProgress = [
"User authentication and accounts",
"Settings page",
"Search functionality",
"Notifications",
]
const planned = [
"Role-based permissions",
"File uploads and storage (R2)",
"Project activity feed",
"Mobile-responsive layout improvements",
]
export default function Page() { export default function Page() {
return ( return (
<div className="flex flex-1 items-start justify-center p-4 md:p-8"> <div className="flex flex-1 items-start justify-center p-6 md:p-12">
<div className="flex w-full max-w-2xl flex-col gap-6 py-8"> <div className="w-full max-w-3xl py-8">
<div className="text-center"> <div className="mb-10 text-center">
<span
className="mx-auto mb-3 block size-12 bg-foreground"
style={{
maskImage: "url(/logo-black.png)",
maskSize: "contain",
maskRepeat: "no-repeat",
WebkitMaskImage: "url(/logo-black.png)",
WebkitMaskSize: "contain",
WebkitMaskRepeat: "no-repeat",
}}
/>
<h1 className="text-3xl font-bold tracking-tight"> <h1 className="text-3xl font-bold tracking-tight">
Compass Compass
</h1> </h1>
<p className="text-muted-foreground mt-2 text-balance"> <p className="text-muted-foreground mt-2">
Development preview features may be incomplete Development preview features may be incomplete
or change without notice. or change without notice.
</p> </p>
</div> </div>
<div className="grid gap-4"> <div className="space-y-8 text-sm leading-relaxed">
<Card> <section>
<CardHeader className="pb-3"> <h2 className="mb-3 text-base font-semibold flex items-center gap-2">
<CardTitle className="text-base flex items-center gap-2"> <span className="inline-block size-2 rounded-full bg-green-500" />
<span className="inline-block size-2 rounded-full bg-green-500" /> Working
Working </h2>
<Badge variant="secondary" className="font-normal"> <ul className="space-y-1.5 pl-4">
{working.length} <li>Projects create and manage projects with D1 database</li>
</Badge> <li>Schedule Gantt chart with phases, tasks, dependencies, and critical path</li>
</CardTitle> <li>File browser drive-style UI with folder navigation</li>
<CardDescription> <li>Settings app preferences with theme and notifications</li>
Features that are functional in this preview <li>Sidebar navigation with contextual project/file views</li>
</CardDescription> <li>Command palette search (Cmd+K)</li>
</CardHeader> </ul>
<CardContent> </section>
<ul className="space-y-1.5 text-sm">
{working.map((item) => (
<li key={item} className="flex items-start gap-2">
<span className="text-muted-foreground mt-0.5"></span>
{item}
</li>
))}
</ul>
</CardContent>
</Card>
<Card> <section>
<CardHeader className="pb-3"> <h2 className="mb-3 text-base font-semibold flex items-center gap-2">
<CardTitle className="text-base flex items-center gap-2"> <span className="inline-block size-2 rounded-full bg-yellow-500" />
<span className="inline-block size-2 rounded-full bg-yellow-500" /> In Progress
In Progress </h2>
<Badge variant="secondary" className="font-normal"> <ul className="space-y-1.5 pl-4">
{inProgress.length} <li>Project auto-provisioning (code generation, CSI folder structure)</li>
</Badge> <li>Budget tracking (CSI divisions, estimated vs actual, change orders)</li>
</CardTitle> <li>Document management (S3/R2 storage, metadata, versioning)</li>
<CardDescription> <li>Communication logging (manual entries, timeline view)</li>
Currently being developed <li>Dashboard three-column layout (past due, due today, action items)</li>
</CardDescription> <li>User authentication and roles (WorkOS)</li>
</CardHeader> <li>Email notifications (Resend)</li>
<CardContent> <li>Basic reports (budget variance, overdue tasks, monthly actuals)</li>
<ul className="space-y-1.5 text-sm"> </ul>
{inProgress.map((item) => ( </section>
<li key={item} className="flex items-start gap-2">
<span className="text-muted-foreground mt-0.5"></span>
{item}
</li>
))}
</ul>
</CardContent>
</Card>
<Card> <section>
<CardHeader className="pb-3"> <h2 className="mb-3 text-base font-semibold flex items-center gap-2">
<CardTitle className="text-base flex items-center gap-2"> <span className="inline-block size-2 rounded-full bg-muted-foreground/50" />
<span className="inline-block size-2 rounded-full bg-muted-foreground/50" /> Planned
Planned </h2>
<Badge variant="secondary" className="font-normal"> <ul className="space-y-1.5 pl-4 text-muted-foreground">
{planned.length} <li>Client portal with read-only views</li>
</Badge> <li>BuilderTrend import wizard (CSV-based)</li>
</CardTitle> <li>Daily logs</li>
<CardDescription> <li>Time tracking</li>
On the roadmap but not started <li>Report builder (custom fields and filters)</li>
</CardDescription> <li>Bid package management</li>
</CardHeader> </ul>
<CardContent> </section>
<ul className="space-y-1.5 text-sm text-muted-foreground">
{planned.map((item) => ( <section>
<li key={item} className="flex items-start gap-2"> <h2 className="mb-3 text-base font-semibold flex items-center gap-2">
<span className="mt-0.5"></span> <span className="inline-block size-2 rounded-full bg-muted-foreground/30" />
{item} Future
</li> </h2>
))} <ul className="space-y-1.5 pl-4 text-muted-foreground">
</ul> <li>Netsuite/QuickBooks API sync</li>
</CardContent> <li>Payment integration</li>
</Card> <li>RFI/Submittal tracking</li>
<li>Native mobile apps (iOS/Android)</li>
<li>Advanced scheduling (resource leveling, baseline comparison)</li>
</ul>
</section>
</div> </div>
<div className="flex justify-center pt-2"> <div className="mt-10 flex justify-center">
<Button variant="outline" asChild> <Button variant="outline" asChild>
<a <a
href={GITHUB_URL} href={GITHUB_URL}