'use client' import { useEffect, useState } from 'react' interface RoadmapItem { phase: string title: string status: 'complete' | 'in-progress' | 'planned' description: string impact: string completed?: string items?: string[] } export default function RoadmapPage() { const [roadmap, setRoadmap] = useState([]) const [loading, setLoading] = useState(true) useEffect(() => { fetchRoadmap() }, []) const fetchRoadmap = async () => { try { const response = await fetch('/api/roadmap') const data = await response.json() setRoadmap(data.roadmap || []) } catch (error) { console.error('Failed to fetch roadmap:', error) } finally { setLoading(false) } } const getStatusColor = (status: string) => { switch (status) { case 'complete': return 'bg-green-500/20 text-green-400 border-green-500/30' case 'in-progress': return 'bg-blue-500/20 text-blue-400 border-blue-500/30' case 'planned': return 'bg-gray-500/20 text-gray-400 border-gray-500/30' default: return 'bg-gray-500/20 text-gray-400 border-gray-500/30' } } const getStatusIcon = (status: string) => { switch (status) { case 'complete': return 'βœ…' case 'in-progress': return 'πŸ”„' case 'planned': return 'πŸ“‹' default: return '❓' } } const stats = { total: roadmap.length, complete: roadmap.filter(item => item.status === 'complete').length, inProgress: roadmap.filter(item => item.status === 'in-progress').length, planned: roadmap.filter(item => item.status === 'planned').length, } const completionRate = stats.total > 0 ? Math.round((stats.complete / stats.total) * 100) : 0 if (loading) { return (
Loading roadmap...
) } return (
{/* Header */}

πŸ—ΊοΈ Trading Bot Roadmap

Back to Home

Track development progress and upcoming features

{/* Stats Overview */}
Total Items
{stats.total}
βœ… Completed
{stats.complete}
πŸ”„ In Progress
{stats.inProgress}
πŸ“‹ Planned
{stats.planned}
{/* Progress Bar */}
Overall Completion
{completionRate}%
{/* Roadmap Items */}
{roadmap.map((item, index) => (
{getStatusIcon(item.status)}

{item.title}

{item.phase}

{item.description}

Expected Impact
{item.impact}
{item.completed && (
βœ“ Completed: {item.completed}
)}
{item.items && item.items.length > 0 && (
Implementation Details:
    {item.items.map((subItem, subIndex) => (
  • β€’ {subItem}
  • ))}
)}
))}
{/* Footer */}

Last updated: {new Date().toLocaleDateString()} β€’ Trading Bot v4

) }