Spaces:
Runtime error
Runtime error
File size: 11,121 Bytes
4cea933 dea9d44 4cea933 604d53b 4cea933 604d53b dea9d44 604d53b 286f44c dea9d44 4cea933 604d53b dea9d44 604d53b dea9d44 604d53b dea9d44 604d53b dea9d44 604d53b dea9d44 604d53b dea9d44 604d53b dea9d44 604d53b dea9d44 604d53b dea9d44 604d53b 4cea933 604d53b dea9d44 604d53b dea9d44 604d53b 4cea933 604d53b dea9d44 604d53b dea9d44 4cea933 604d53b dea9d44 604d53b 4cea933 604d53b 4cea933 604d53b dea9d44 604d53b dea9d44 604d53b 4cea933 dea9d44 604d53b 4cea933 dea9d44 604d53b 4cea933 604d53b dea9d44 604d53b 4cea933 604d53b dea9d44 604d53b dea9d44 604d53b 4cea933 dea9d44 604d53b 4cea933 dea9d44 604d53b 4cea933 604d53b 4cea933 604d53b dea9d44 604d53b dea9d44 604d53b 4cea933 dea9d44 604d53b 4cea933 dea9d44 4cea933 604d53b dea9d44 604d53b dea9d44 604d53b dea9d44 604d53b dea9d44 604d53b 4cea933 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 | "use client";
import Link from "next/link";
import { Cpu, Zap, Activity, ShieldCheck, ArrowRight, Terminal, GitBranch, Sliders } from "lucide-react";
export default function Home() {
return (
<main className="min-h-dvh bg-canvas-cream flex flex-col font-mono selection:bg-hazard selection:text-white bg-blueprint-grid">
{/* Hero Section */}
<section className="max-w-350 mx-auto w-full px-4 sm:px-8 pt-10 md:pt-16 pb-16 grid grid-cols-1 lg:grid-cols-12 gap-10 lg:gap-14 flex-1">
<div className="lg:col-span-7 flex flex-col justify-center">
{/* Eyebrow Badge */}
<div className="inline-flex items-center gap-2 px-3 py-1 text-[11px] font-bold uppercase tracking-wider border border-ink/20 bg-white text-ink mb-6 self-start shadow-[2px_2px_0px_#141413]">
<span className="w-2 h-2 rounded-full bg-hazard" />
<span>Edge AI Clinical Intelligence</span>
<span className="text-ink/30">/</span>
<span className="text-slate font-medium">ESP32 & ARM Cortex-M</span>
</div>
<h1 className="text-[clamp(2.75rem,6vw,6rem)] mb-6 leading-[0.92] text-ink tracking-tight font-extrabold text-balance">
CLINICAL<br />
INFERENCE<br />
<span className="text-hazard">AT THE EDGE.</span>
</h1>
<p className="text-[15px] sm:text-[16px] text-slate-700 max-w-xl leading-relaxed text-pretty mb-8 font-sans font-normal border-l-3 border-hazard pl-4">
Cardiovascular anomaly classification transpiled directly for bare-metal microcontrollers. Stream multi-channel physiological vitals, evaluate a calibrated 5-model soft-voting ensemble, and export zero-malloc C99 headers for embedded silicon.
</p>
{/* Technical Telemetry Badges Matrix */}
<div className="crosshair-corner grid grid-cols-2 sm:grid-cols-4 gap-px bg-ink border-2 border-ink mb-8 max-w-xl shadow-[3px_3px_0px_0px_#141413]">
<div className="bg-white p-3 text-center">
<div className="text-[9px] text-slate font-bold uppercase tracking-wider mb-0.5">INFERENCE LATENCY</div>
<div className="text-[15px] font-black text-ink tabular-nums">18.4 μs</div>
<div className="text-[9px] text-slate tracking-tight mt-0.5">ESP32-S3 @ 240MHz</div>
</div>
<div className="bg-white p-3 text-center">
<div className="text-[9px] text-slate font-bold uppercase tracking-wider mb-0.5">STATIC RAM</div>
<div className="text-[15px] font-black text-ink tabular-nums">28 Bytes</div>
<div className="text-[9px] text-slate tracking-tight mt-0.5">Zero Dynamic Heap</div>
</div>
<div className="bg-white p-3 text-center">
<div className="text-[9px] text-slate font-bold uppercase tracking-wider mb-0.5">SERIAL BUS</div>
<div className="text-[15px] font-black text-ink tabular-nums">115.2k</div>
<div className="text-[9px] text-slate tracking-tight mt-0.5">Web Serial API</div>
</div>
<div className="bg-white p-3 text-center">
<div className="text-[9px] text-slate font-bold uppercase tracking-wider mb-0.5">ECG SAMPLING</div>
<div className="text-[15px] font-black text-hazard tabular-nums">250 Hz</div>
<div className="text-[9px] text-slate tracking-tight mt-0.5">Lead-II Waveform</div>
</div>
</div>
{/* Action Button Grid */}
<div className="grid grid-cols-1 sm:grid-cols-2 gap-3 max-w-xl">
<Link
href="/monitor"
className="btn-tactile-hazard h-12 px-6 text-[13px] font-bold uppercase tracking-wider flex items-center justify-center gap-2 cursor-pointer"
>
<Activity size={16} />
Launch Monitor
</Link>
<Link
href="/simulator"
className="btn-tactile bg-white text-ink border-2 border-ink h-12 px-5 text-[12px] font-bold uppercase tracking-wider hover:bg-ink hover:text-white transition-colors flex items-center justify-center gap-1.5 cursor-pointer"
>
<Sliders size={14} />
Simulator
<ArrowRight size={14} />
</Link>
<Link
href="/edge"
className="btn-tactile bg-canvas-cream text-ink border-2 border-ink h-12 px-5 text-[12px] font-bold uppercase tracking-wider hover:bg-ink hover:text-white transition-colors flex items-center justify-center gap-2 cursor-pointer"
>
<Terminal size={14} />
C99 Compiler
</Link>
<Link
href="/mlops"
className="btn-tactile bg-white text-ink border-2 border-ink h-12 px-6 text-[12px] font-bold uppercase tracking-wider hover:bg-ink hover:text-white transition-colors flex items-center justify-center gap-2 cursor-pointer"
>
<GitBranch size={14} />
MLOps Registry
</Link>
</div>
</div>
{/* Feature Grid: Three Structural Modules */}
<div className="lg:col-span-5 grid grid-cols-1 gap-px bg-ink border-2 border-ink shadow-[6px_6px_0px_0px_#141413] self-center">
{/* Card 01 */}
<Link
href="/edge"
className="bg-white p-6 sm:p-7 flex flex-col justify-between group cursor-pointer hover:bg-[#FAF8F5] transition-colors relative"
>
<div className="flex justify-between items-center mb-3">
<div className="text-[10px] text-slate font-bold tracking-wider group-hover:text-hazard transition-colors flex items-center gap-2">
<span className="w-1.5 h-1.5 bg-hazard inline-block" />
<span>01 · QUANTIZATION ENGINE</span>
</div>
<Cpu size={16} className="text-slate group-hover:text-hazard transition-colors" />
</div>
<div>
<h3 className="font-sans text-[18px] sm:text-[20px] font-black uppercase tracking-tight mb-2 text-ink group-hover:text-hazard transition-colors">
INT8 Quantized Weights
</h3>
<p className="text-[13px] text-slate-600 leading-relaxed font-sans font-normal">
Continuous weight vectors and decision thresholds quantized to 8-bit integers. Delivers 75% SRAM reduction for constrained microcontrollers without floating-point FPU reliance.
</p>
</div>
<div className="mt-4 pt-3 border-t border-ink/10 flex justify-between items-center text-[10px] font-bold text-slate tracking-wider tabular-nums">
<span>MEMORY SCALE: 4:1 INT8</span>
<span className="text-hazard font-black flex items-center gap-1">
OPEN COMPILER →
</span>
</div>
</Link>
{/* Card 02 */}
<Link
href="/simulator"
className="bg-canvas-cream p-6 sm:p-7 flex flex-col justify-between group cursor-pointer hover:bg-white transition-colors relative"
>
<div className="flex justify-between items-center mb-3">
<div className="text-[10px] text-slate font-bold tracking-wider group-hover:text-hazard transition-colors flex items-center gap-2">
<span className="w-1.5 h-1.5 bg-hazard inline-block" />
<span>02 · ENSEMBLE ARBITRATION</span>
</div>
<Zap size={16} className="text-slate group-hover:text-hazard transition-colors" />
</div>
<div>
<h3 className="font-sans text-[18px] sm:text-[20px] font-black uppercase tracking-tight mb-2 text-ink group-hover:text-hazard transition-colors">
5-Model Soft-Voting
</h3>
<p className="text-[13px] text-slate-600 leading-relaxed font-sans font-normal">
Aggregates class probabilities across Random Forest (30 trees), Linear SVM, Logistic Regression, MLP Neural Network, and KNN to suppress single-estimator variance.
</p>
</div>
<div className="mt-4 pt-3 border-t border-ink/10 flex justify-between items-center text-[10px] font-bold text-slate tracking-wider tabular-nums">
<span>TOPOLOGY: 5 ESTIMATORS</span>
<span className="text-hazard font-black flex items-center gap-1">
OPEN SIMULATOR →
</span>
</div>
</Link>
{/* Card 03 */}
<Link
href="/edge"
className="bg-white p-6 sm:p-7 flex flex-col justify-between group cursor-pointer hover:bg-[#FAF8F5] transition-colors relative"
>
<div className="flex justify-between items-center mb-3">
<div className="text-[10px] text-slate font-bold tracking-wider group-hover:text-hazard transition-colors flex items-center gap-2">
<span className="w-1.5 h-1.5 bg-hazard inline-block" />
<span>03 · CODE GENERATION</span>
</div>
<ShieldCheck size={16} className="text-slate group-hover:text-hazard transition-colors" />
</div>
<div>
<h3 className="font-sans text-[18px] sm:text-[20px] font-black uppercase tracking-tight mb-2 text-ink group-hover:text-hazard transition-colors">
Zero-Malloc C Headers
</h3>
<p className="text-[13px] text-slate-600 leading-relaxed font-sans font-normal">
Transpiles scikit-learn ensembles directly to standalone C99 headers (<code className="text-hazard font-bold font-mono">model.h</code>) with zero dynamic heap allocation, avoiding fragmentation crashes on bare-metal firmware.
</p>
</div>
<div className="mt-4 pt-3 border-t border-ink/10 flex justify-between items-center text-[10px] font-bold text-slate tracking-wider tabular-nums">
<span>TARGET: ESP32 // CORTEX-M</span>
<span className="text-hazard font-black flex items-center gap-1">
VIEW C99 EXPORTER →
</span>
</div>
</Link>
</div>
</section>
{/* Understated Architecture Strip */}
<section className="border-t-2 border-ink bg-white py-3.5 px-4 sm:px-8">
<div className="max-w-350 mx-auto flex items-center justify-between text-[11px] font-bold uppercase tracking-wider text-slate flex-wrap gap-4">
<div className="flex items-center gap-2 text-ink">
<span className="w-2 h-2 bg-hazard inline-block" />
<span className="font-black">CORE ARCHITECTURE:</span>
</div>
<span>UART 115,200 (8-N-1)</span>
<span>LEAD-II SAMPLING (250 HZ)</span>
<span>5-CHANNEL VITAL SIGN VECTOR</span>
<span>ZERO-MALLOC C99 ABI</span>
<span>SHAP TREE ATTRIBUTION</span>
</div>
</section>
</main>
);
}
|