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 &amp; 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>
  );
}