diff --git a/spark.meta.json b/spark.meta.json
index 706a311..a277bc5 100644
--- a/spark.meta.json
+++ b/spark.meta.json
@@ -1,3 +1,4 @@
{
- "templateVersion": 1
-}
+ "templateVersion": 1,
+ "dbType": "kv"
+}
\ No newline at end of file
diff --git a/src/App.tsx b/src/App.tsx
index 8af281d..785a664 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,11 +1,12 @@
import { useKV } from '@github/spark/hooks'
import { useState } from 'react'
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'
-import { Strategy, ChartBar, FolderOpen, Target } from '@phosphor-icons/react'
+import { Strategy, ChartBar, FolderOpen, Target, MapTrifold } from '@phosphor-icons/react'
import StrategyCards from './components/StrategyCards'
import Workbench from './components/Workbench'
import Portfolios from './components/Portfolios'
import Dashboard from './components/Dashboard'
+import Roadmap from './components/Roadmap'
import type { StrategyCard, Initiative } from './types'
function App() {
@@ -42,7 +43,7 @@ function App() {
-
+
Strategy Cards
@@ -59,6 +60,10 @@ function App() {
Dashboard
+
+
+ Roadmap
+
@@ -76,6 +81,10 @@ function App() {
+
+
+
+
diff --git a/src/components/Roadmap.tsx b/src/components/Roadmap.tsx
new file mode 100644
index 0000000..c9088b9
--- /dev/null
+++ b/src/components/Roadmap.tsx
@@ -0,0 +1,377 @@
+import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
+import { Badge } from '@/components/ui/badge'
+import { Separator } from '@/components/ui/separator'
+import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'
+import { CheckCircle, Circle, Target, ChartBar, Link as LinkIcon, Package, Wrench, ChartLine } from '@phosphor-icons/react'
+import { ScrollArea } from '@/components/ui/scroll-area'
+
+interface RoadmapPhase {
+ id: string
+ phase: string
+ status: 'completed' | 'in-progress' | 'planned'
+ quarter: string
+ capabilities: RoadmapCapability[]
+}
+
+interface RoadmapCapability {
+ title: string
+ description: string
+ category: 'strategy' | 'execution' | 'integration' | 'analytics'
+ requirements: string[]
+}
+
+const roadmapData: RoadmapPhase[] = [
+ {
+ id: 'phase-1',
+ phase: 'Foundation',
+ status: 'in-progress',
+ quarter: 'Q1 2025',
+ capabilities: [
+ {
+ title: 'Strategy Cards Core',
+ description: 'Enable structured strategy creation using proven frameworks',
+ category: 'strategy',
+ requirements: [
+ 'Support SWOT, Hoshin Kanri, OKR, and Value Disciplines frameworks',
+ 'Capture vision, goals, metrics, and assumptions',
+ 'Enable collaborative strategy formulation',
+ 'Reduce reliance on slides and spreadsheets'
+ ]
+ },
+ {
+ title: 'Workbench Foundations',
+ description: 'Basic initiative tracking and execution capabilities',
+ category: 'execution',
+ requirements: [
+ 'Create and manage initiatives linked to strategy',
+ 'Track progress, status, and ownership',
+ 'Support priority and portfolio assignment',
+ 'Enable KPI definition and tracking'
+ ]
+ },
+ {
+ title: 'Portfolio Structure',
+ description: 'Organize initiatives into strategic portfolios',
+ category: 'execution',
+ requirements: [
+ 'Support M&A, OpEx, Financial, ESG, and Innovation portfolios',
+ 'Enable custom portfolio definitions',
+ 'Track capacity and utilization per portfolio',
+ 'Visual portfolio grouping and filtering'
+ ]
+ }
+ ]
+ },
+ {
+ id: 'phase-2',
+ phase: 'Alignment & Traceability',
+ status: 'planned',
+ quarter: 'Q2 2025',
+ capabilities: [
+ {
+ title: 'Strategy-to-Execution Linking',
+ description: 'End-to-end traceability from strategy to delivery',
+ category: 'integration',
+ requirements: [
+ 'Link initiatives directly to strategy card goals',
+ 'Visual impact mapping and alignment views',
+ 'Trace KPIs back to strategic objectives',
+ 'Identify alignment gaps and orphaned work'
+ ]
+ },
+ {
+ title: 'Dashboard & Reporting',
+ description: 'Real-time visibility and executive reporting',
+ category: 'analytics',
+ requirements: [
+ 'Portfolio-level dashboards with drill-down',
+ 'Scorecard management with consistent definitions',
+ 'Real-time status and progress tracking',
+ 'Executive summary views'
+ ]
+ },
+ {
+ title: 'Governance & Accountability',
+ description: 'Clear ownership and decision-making support',
+ category: 'execution',
+ requirements: [
+ 'Define and track initiative ownership',
+ 'Support portfolio-level prioritization',
+ 'Enable impact and capacity assessment',
+ 'Decision history and rationale capture'
+ ]
+ }
+ ]
+ },
+ {
+ id: 'phase-3',
+ phase: 'Advanced Execution',
+ status: 'planned',
+ quarter: 'Q3 2025',
+ capabilities: [
+ {
+ title: 'Multi-Methodology Support',
+ description: 'Support diverse execution approaches',
+ category: 'execution',
+ requirements: [
+ 'Strategic Portfolio Management workflows',
+ 'Hoshin Kanri policy deployment',
+ 'Operational Excellence and Lean methods',
+ 'OKR cascading and alignment'
+ ]
+ },
+ {
+ title: 'Financial Integration',
+ description: 'Link strategy to financial outcomes',
+ category: 'analytics',
+ requirements: [
+ 'Budget tracking and allocation by initiative',
+ 'Savings and value realization tracking',
+ 'ROI and financial impact analysis',
+ 'Shared visibility between Ops and Finance'
+ ]
+ },
+ {
+ title: 'Dependency & Risk Management',
+ description: 'Identify and manage cross-initiative dependencies',
+ category: 'execution',
+ requirements: [
+ 'Map dependencies between initiatives',
+ 'Track delivery risks and blockers',
+ 'Impact analysis for changes',
+ 'Automated risk identification'
+ ]
+ }
+ ]
+ },
+ {
+ id: 'phase-4',
+ phase: 'Enterprise Scale',
+ status: 'planned',
+ quarter: 'Q4 2025',
+ capabilities: [
+ {
+ title: 'External Integrations',
+ description: 'Connect with enterprise systems',
+ category: 'integration',
+ requirements: [
+ 'Project management tool integrations',
+ 'ERP system connectivity',
+ 'CRM data integration',
+ 'Automated data sync and reconciliation'
+ ]
+ },
+ {
+ title: 'Advanced Analytics',
+ description: 'Predictive insights and recommendations',
+ category: 'analytics',
+ requirements: [
+ 'Capacity vs demand forecasting',
+ 'Predictive delivery risk scoring',
+ 'Resource optimization recommendations',
+ 'Trend analysis and pattern detection'
+ ]
+ },
+ {
+ title: 'Global Operations',
+ description: 'Support for multi-region, multi-language organizations',
+ category: 'integration',
+ requirements: [
+ 'Multi-language support',
+ 'Regional customization and branding',
+ 'Organizational hierarchy modeling',
+ 'Distributed team collaboration'
+ ]
+ }
+ ]
+ }
+]
+
+const categoryIcons = {
+ strategy: Target,
+ execution: CheckCircle,
+ integration: LinkIcon,
+ analytics: ChartLine
+}
+
+const categoryColors = {
+ strategy: 'bg-accent/10 text-accent border-accent/30',
+ execution: 'bg-success/10 text-success border-success/30',
+ integration: 'bg-primary/10 text-primary border-primary/30',
+ analytics: 'bg-secondary/10 text-secondary border-secondary/30'
+}
+
+function PhaseTimeline() {
+ return (
+
+
+
+ {roadmapData.map((phase, index) => {
+ const StatusIcon = phase.status === 'completed' ? CheckCircle : phase.status === 'in-progress' ? Circle : Circle
+ const statusColor = phase.status === 'completed' ? 'text-success' : phase.status === 'in-progress' ? 'text-accent' : 'text-muted-foreground'
+ const statusBg = phase.status === 'completed' ? 'bg-success' : phase.status === 'in-progress' ? 'bg-accent' : 'bg-muted'
+
+ return (
+
+
+
+
+
+
+
+
+
+ Phase {index + 1}: {phase.phase}
+
+
+
+ {phase.quarter}
+
+
+ {phase.status === 'completed' ? 'Completed' : phase.status === 'in-progress' ? 'In Progress' : 'Planned'}
+
+
+
+
+
+
+ {phase.capabilities.map((capability, capIndex) => {
+ const Icon = categoryIcons[capability.category]
+ return (
+
+ {capIndex > 0 &&
}
+
+
+
+
+ {capability.category}
+
+
+
{capability.title}
+
{capability.description}
+
+
+
+ {capability.requirements.map((req, reqIndex) => (
+ -
+ •
+ {req}
+
+ ))}
+
+
+
+ )
+ })}
+
+
+
+ )
+ })}
+
+
+ )
+}
+
+function CapabilityMatrix() {
+ const categories = ['strategy', 'execution', 'integration', 'analytics'] as const
+
+ const capabilitiesByCategory = categories.map(category => ({
+ category,
+ capabilities: roadmapData.flatMap(phase =>
+ phase.capabilities
+ .filter(cap => cap.category === category)
+ .map(cap => ({
+ ...cap,
+ phase: phase.phase,
+ quarter: phase.quarter,
+ status: phase.status
+ }))
+ )
+ }))
+
+ return (
+
+ {capabilitiesByCategory.map(({ category, capabilities }) => {
+ const Icon = categoryIcons[category]
+ return (
+
+
+
+
+ {category}
+
+
+ {capabilities.length} {capabilities.length === 1 ? 'capability' : 'capabilities'} planned
+
+
+
+
+
+ {capabilities.map((cap, index) => (
+
+ {index > 0 &&
}
+
+
+
{cap.title}
+
+ {cap.quarter}
+
+
+
{cap.description}
+
+ Phase: {cap.phase}
+
+
+
+ ))}
+
+
+
+
+ )
+ })}
+
+ )
+}
+
+export default function Roadmap() {
+ return (
+
+
+
Product Roadmap
+
Strategic development plan for StrategyOS platform
+
+
+
+
+
+
+ Timeline View
+
+
+
+ Capability Matrix
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}