import { useState, useEffect } from 'react'; import Link from 'next/link'; import Head from 'next/head'; import FarmCard from '../../components/vertical-farm/FarmCard'; import { VerticalFarm } from '../../lib/vertical-farming/types'; export default function VerticalFarmDashboard() { const [farms, setFarms] = useState([]); const [loading, setLoading] = useState(true); const [stats, setStats] = useState({ totalFarms: 0, totalPlants: 0, upcomingHarvests: 0, activeZones: 0, }); useEffect(() => { fetchFarms(); }, []); const fetchFarms = async () => { try { const response = await fetch('/api/vertical-farm/list'); const data = await response.json(); if (data.success) { setFarms(data.farms); calculateStats(data.farms); } } catch (error) { console.error('Error fetching farms:', error); } finally { setLoading(false); } }; const calculateStats = (farmList: VerticalFarm[]) => { const totalPlants = farmList.reduce((sum, f) => sum + f.specs.currentActivePlants, 0); const activeZones = farmList.reduce( (sum, f) => sum + f.zones.filter(z => z.status === 'growing' || z.status === 'planted').length, 0 ); const upcomingHarvests = farmList.reduce( (sum, f) => sum + f.zones.filter(z => { if (!z.expectedHarvestDate) return false; const daysUntil = (new Date(z.expectedHarvestDate).getTime() - Date.now()) / (1000 * 60 * 60 * 24); return daysUntil <= 7 && daysUntil >= 0; }).length, 0 ); setStats({ totalFarms: farmList.length, totalPlants, upcomingHarvests, activeZones, }); }; return (
Vertical Farms - LocalGreenChain {/* Header */}
LocalGreenChain

Vertical Farm Dashboard

{/* Stats Overview */}

Total Farms

{stats.totalFarms}

Active Plants

{stats.totalPlants.toLocaleString()}

Active Zones

{stats.activeZones}

Harvests This Week

{stats.upcomingHarvests}

{/* Farms Grid */} {loading ? (

Loading farms...

) : farms.length > 0 ? (
{farms.map(farm => ( ))}
) : (
🌱

No Vertical Farms Yet

Start your controlled environment agriculture journey by registering your first vertical farm.

Register Your First Farm
)} {/* Quick Actions */} {farms.length > 0 && (

Quick Actions

+ Add New Farm
)}
); }