// Landing Page Component - Main entry point with navigation cards const LandingPage = () => { const { Box, Typography, Card, CardContent, CardActionArea, CardMedia, Grid, Container, Paper, Avatar } = MaterialUI; // Card data for each subpage const pages = [ { title: 'Live Data', description: 'Real-time sensor data from around my home.', route: 'live-data', icon: '📊', image: '/images/live-data-plot.png' }, { title: 'Plants', description: 'Monitoring moisture levels for my houseplants.', route: 'plants', icon: null, image: '/images/plant1.png' }, { title: 'Image Tools', description: 'Upload images and apply filters like blur, sharpen, and grayscale.', route: 'image-tools', icon: '🖼️', image: null }, { title: '3D Viewer', description: 'Experimenting with rendering 3D data such as point clouds and meshes.', route: '3d-viewer', icon: '🧊', image: null }, { title: 'Server Analytics', description: 'Usage statistics and performance metrics for this server.', route: 'analytics', icon: '📈', image: null }, { title: 'Resume', description: 'My professional background and experience.', route: 'resume', icon: '📄', image: null }, ]; // Navigate to a subpage using hash routing const navigateTo = (route) => { const routeMapping = { 'live-data': 'live-data', 'plants': 'plants', 'image-tools': 'image-tools', '3d-viewer': '3d-viewer', 'analytics': 'analytics', 'resume': 'resume', }; const cleanUrl = routeMapping[route] || route; window.location.hash = cleanUrl; }; return ( {/* Header Section */} Pseudoremy Projects I like building and experimenting with software, hardware, and anything in between. Here you'll find small tools, experiments, and assorted projects I work on mostly for fun. {/* Navigation Cards Grid */} {pages.map((page) => ( navigateTo(page.route)} sx={{ flexGrow: 1, display: 'flex', flexDirection: 'column', alignItems: 'stretch' }} > {/* Image or Icon placeholder */} {page.image ? ( ) : ( {page.icon} )} {page.title} {page.description} ))} ); }; // Export to global scope for browser-based JSX compilation window.LandingPage = LandingPage;