IDKHowToCodeFr commited on
Commit
359459d
·
verified ·
1 Parent(s): 617ca3d

Upload folder using huggingface_hub

Browse files
README.md CHANGED
@@ -11,6 +11,15 @@ pinned: false
11
  <h1>HeartFlow OS</h1>
12
  <p><strong>Cardiovascular Telemetry & Edge MLOps Engine</strong></p>
13
 
 
 
 
 
 
 
 
 
 
14
  <p>
15
  <img src="https://img.shields.io/badge/Next.js-16+-black.svg?style=for-the-badge&logo=next.js" alt="Next.js" />
16
  <img src="https://img.shields.io/badge/React-19-61DAFB.svg?style=for-the-badge&logo=react&logoColor=black" alt="React" />
 
11
  <h1>HeartFlow OS</h1>
12
  <p><strong>Cardiovascular Telemetry & Edge MLOps Engine</strong></p>
13
 
14
+ <p>
15
+ <a href="https://huggingface.co/spaces/IDKHowToCodeFR/HEARTFLOW_OS" target="_blank">
16
+ <img src="https://img.shields.io/badge/🤗_HuggingFace-Live_Demo-FFD21E.svg?style=for-the-badge" alt="Hugging Face Space" />
17
+ </a>
18
+ <a href="https://heartflow-os.vercel.app" target="_blank">
19
+ <img src="https://img.shields.io/badge/🌐_Website-Live_App-black.svg?style=for-the-badge&logo=vercel" alt="Live Website" />
20
+ </a>
21
+ </p>
22
+
23
  <p>
24
  <img src="https://img.shields.io/badge/Next.js-16+-black.svg?style=for-the-badge&logo=next.js" alt="Next.js" />
25
  <img src="https://img.shields.io/badge/React-19-61DAFB.svg?style=for-the-badge&logo=react&logoColor=black" alt="React" />
frontend/src/app/architecture/page.tsx CHANGED
@@ -17,14 +17,34 @@ const fadeUp = {
17
  show: { opacity: 1, y: 0, transition: { duration: 0.8, ease: easeFluid } }
18
  };
19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  export default function Architecture() {
21
  return (
22
- <main className="min-h-[100dvh] bg-canvas-cream flex flex-col font-mono selection:bg-hazard selection:text-white pb-16">
23
  <motion.div
24
  variants={staggerContainer}
25
  initial="hidden"
26
  animate="show"
27
- className="max-w-[1000px] mx-auto w-full px-4 md:px-8 py-8 md:py-16 flex-1 flex flex-col"
28
  >
29
  <motion.header variants={fadeUp} className="mb-8 md:mb-12 border-b-4 border-ink pb-8 flex justify-between items-end">
30
  <div>
@@ -37,40 +57,44 @@ export default function Architecture() {
37
  </div>
38
  </motion.header>
39
 
40
- <motion.div variants={fadeUp} className="border-2 border-ink bg-white p-6 md:p-8 mb-8 hover:border-hazard transition-colors">
41
- <h2 className="text-[16px] md:text-[18px] font-sans font-black tracking-[-0.02em] uppercase text-ink mb-6 border-b-2 border-ink pb-4">
42
- [ 01 ] Client Plane (Frontend)
43
- </h2>
44
- <p className="text-[13px] md:text-[14px] text-slate uppercase leading-relaxed mb-4">
45
- Engineered using Next.js 16 (App Router). The UI adheres to an Industrial Brutalist aesthetic utilizing hard grids, monochromatic blueprints, and high-contrast hazard states. A global Telemetry Provider manages native WebSocket streams with exponential backoff and UI-level auto-reconnection, rendered via hardware-accelerated SVG paths.
46
- </p>
47
- </motion.div>
 
 
 
 
 
 
 
 
 
 
 
48
 
49
- <motion.div variants={fadeUp} className="border-2 border-ink bg-white p-6 md:p-8 mb-8 hover:border-hazard transition-colors">
50
- <h2 className="text-[16px] md:text-[18px] font-sans font-black tracking-[-0.02em] uppercase text-ink mb-6 border-b-2 border-ink pb-4">
51
- [ 02 ] Core Plane (Backend)
52
- </h2>
53
- <p className="text-[13px] md:text-[14px] text-slate uppercase leading-relaxed mb-4">
54
- Built on FastAPI (Python 3.10+) maximizing async throughput. Full-stack orchestration is containerized via Docker Compose. A state-machine driven data simulator generates correlated, volatile telemetry streams. Storage employs aiosqlite for non-blocking database writes to track historical classifications without stalling the event loop.
55
- </p>
56
- </motion.div>
57
 
58
- <motion.div variants={fadeUp} className="border-2 border-ink bg-white p-6 md:p-8 mb-8 hover:border-hazard transition-colors">
59
- <h2 className="text-[16px] md:text-[18px] font-sans font-black tracking-[-0.02em] uppercase text-ink mb-6 border-b-2 border-ink pb-4">
60
- [ 03 ] Intelligence Pipeline (MLOps)
61
- </h2>
62
- <p className="text-[13px] md:text-[14px] text-slate uppercase leading-relaxed mb-4">
63
- Clinical precision is achieved via a 5-model soft-voting ensemble (RF, KNN, SVM, LogReg, MLP). The `/retrain` pipeline implements a strict CI/CD gate: it evaluates newly uploaded datasets against a test holdout, and automatically rolls back if the F1-score degrades. Winning models are logged to a JSON registry and hot-swapped globally.
64
- </p>
65
- </motion.div>
66
 
67
- <motion.div variants={fadeUp} className="border-2 border-ink bg-white p-6 md:p-8 mb-8 hover:border-hazard transition-colors">
68
- <h2 className="text-[16px] md:text-[18px] font-sans font-black tracking-[-0.02em] uppercase text-ink mb-6 border-b-2 border-ink pb-4">
69
- [ 04 ] Edge Compilation (TinyML)
70
- </h2>
71
- <p className="text-[13px] md:text-[14px] text-slate uppercase leading-relaxed mb-4">
72
- The backend transpiles trained SciKit-Learn tree models directly into standalone zero-dependency C-headers (`model.h`). Floating-point thresholds are quantized to INT8, shrinking payload footprints by ~75%. A PlatformIO firmware wrapper handles deployment to ESP32/Arduino, guaranteed by an automated structural integrity testing script.
73
- </p>
74
  </motion.div>
75
  </motion.div>
76
  </main>
 
17
  show: { opacity: 1, y: 0, transition: { duration: 0.8, ease: easeFluid } }
18
  };
19
 
20
+ const BlueprintNode = ({ title, desc, pulse = false }: { title: string, desc: string, pulse?: boolean }) => (
21
+ <motion.div
22
+ whileHover={{ x: 5 }}
23
+ className="border border-slate/30 bg-ink/50 p-4 relative group hover:border-hazard transition-colors cursor-default"
24
+ >
25
+ {pulse && (
26
+ <div className="absolute right-4 top-1/2 -translate-y-1/2 flex items-center justify-center">
27
+ <motion.div
28
+ animate={{ scale: [1, 2, 1], opacity: [0.8, 0, 0.8] }}
29
+ transition={{ duration: 1.5, repeat: Infinity, ease: "easeInOut" }}
30
+ className="absolute w-3 h-3 bg-hazard rounded-full"
31
+ />
32
+ <div className="w-1.5 h-1.5 bg-hazard rounded-full relative z-10" />
33
+ </div>
34
+ )}
35
+ <div className="text-[10px] text-slate tracking-[0.1em] mb-1 uppercase">{desc}</div>
36
+ <div className="text-[14px] text-white font-bold tracking-tight uppercase">{title}</div>
37
+ </motion.div>
38
+ );
39
+
40
  export default function Architecture() {
41
  return (
42
+ <main className="min-h-[100dvh] bg-canvas-cream flex flex-col font-mono selection:bg-hazard selection:text-white pb-16 overflow-x-hidden">
43
  <motion.div
44
  variants={staggerContainer}
45
  initial="hidden"
46
  animate="show"
47
+ className="max-w-[1200px] mx-auto w-full px-4 md:px-8 py-8 md:py-16 flex-1 flex flex-col"
48
  >
49
  <motion.header variants={fadeUp} className="mb-8 md:mb-12 border-b-4 border-ink pb-8 flex justify-between items-end">
50
  <div>
 
57
  </div>
58
  </motion.header>
59
 
60
+ {/* Live Hardware Blueprint */}
61
+ <motion.div variants={fadeUp} className="w-full bg-ink p-8 md:p-12 mb-16 relative font-mono overflow-hidden border-2 border-ink shadow-[8px_8px_0px_0px_rgba(242,56,39,1)]">
62
+ {/* Animated Scanning Line */}
63
+ <motion.div
64
+ animate={{ top: ["-10%", "110%"] }}
65
+ transition={{ duration: 8, ease: "linear", repeat: Infinity }}
66
+ className="absolute left-0 right-0 h-32 bg-gradient-to-b from-transparent via-hazard/10 to-transparent pointer-events-none z-0"
67
+ />
68
+
69
+ <div className="relative z-10 flex flex-col lg:flex-row gap-12 lg:gap-16 items-stretch">
70
+
71
+ {/* Stage 1: Ingestion */}
72
+ <div className="flex-1 flex flex-col gap-6 border-l-2 border-slate/30 pl-6 relative">
73
+ <div className="absolute -left-[5px] top-0 w-2 h-2 bg-hazard" />
74
+ <div className="text-[10px] text-hazard tracking-[0.2em] font-bold">PHASE_01 // INGESTION</div>
75
+ <BlueprintNode title="PATIENT SENSORS" desc="60Hz Telemetry Stream" pulse />
76
+ <BlueprintNode title="CLIENT UI" desc="Next.js 16 / React 19" />
77
+ <BlueprintNode title="CSV BATCH" desc="Offline Dataset Upload" />
78
+ </div>
79
 
80
+ {/* Stage 2: Processing */}
81
+ <div className="flex-1 flex flex-col gap-6 border-l-2 border-slate/30 pl-6 relative">
82
+ <div className="absolute -left-[5px] top-0 w-2 h-2 bg-hazard" />
83
+ <div className="text-[10px] text-hazard tracking-[0.2em] font-bold">PHASE_02 // CORE_ROUTER</div>
84
+ <BlueprintNode title="FASTAPI SERVER" desc="Async WebSockets & REST" pulse />
85
+ <BlueprintNode title="SQLITE DB" desc="Aiosqlite Async Storage" />
86
+ </div>
 
87
 
88
+ {/* Stage 3: Inference & Compilation */}
89
+ <div className="flex-1 flex flex-col gap-6 border-l-2 border-slate/30 pl-6 relative">
90
+ <div className="absolute -left-[5px] top-0 w-2 h-2 bg-hazard" />
91
+ <div className="text-[10px] text-hazard tracking-[0.2em] font-bold">PHASE_03 // EDGE_INTELLIGENCE</div>
92
+ <BlueprintNode title="SCIKIT-LEARN" desc="Soft-Voting Ensemble" pulse />
93
+ <BlueprintNode title="AST COMPILER" desc="Python to C Transpiler" />
94
+ <BlueprintNode title="ESP32 HARDWARE" desc="Zero-Dep C Firmware" pulse />
95
+ </div>
96
 
97
+ </div>
 
 
 
 
 
 
98
  </motion.div>
99
  </motion.div>
100
  </main>
frontend/src/app/layout.tsx CHANGED
@@ -56,6 +56,8 @@ export default function RootLayout({ children }: { children: React.ReactNode })
56
  © 2026 HEARTFLOW_OS. TELEMETRY_SYS.
57
  </div>
58
  <div className="flex flex-wrap items-center justify-center gap-4 md:gap-8">
 
 
59
  <Link href="/architecture" className="text-[12px] font-bold tracking-[0.05em] uppercase text-ink hover:text-hazard transition-colors">ARCHITECTURE.MD</Link>
60
  <a href={`${process.env.NEXT_PUBLIC_API_URL || "http://localhost:8000"}/docs`} target="_blank" rel="noopener noreferrer" className="text-[12px] font-bold tracking-[0.05em] uppercase text-ink hover:text-hazard transition-colors">API_DOCS</a>
61
  <a href="https://github.com/IDKHowToCodeFR/HEARTFLOW_OS" target="_blank" rel="noopener noreferrer" className="text-[12px] font-bold tracking-[0.05em] uppercase text-ink hover:text-hazard transition-colors">GITHUB_REPO</a>
 
56
  © 2026 HEARTFLOW_OS. TELEMETRY_SYS.
57
  </div>
58
  <div className="flex flex-wrap items-center justify-center gap-4 md:gap-8">
59
+ <a href="https://huggingface.co/spaces/IDKHowToCodeFR/HEARTFLOW_OS" target="_blank" rel="noopener noreferrer" className="text-[12px] font-bold tracking-[0.05em] uppercase text-ink hover:text-hazard transition-colors">HUGGING_FACE</a>
60
+ <a href="https://heartflow-os.vercel.app" target="_blank" rel="noopener noreferrer" className="text-[12px] font-bold tracking-[0.05em] uppercase text-ink hover:text-hazard transition-colors">LIVE_APP</a>
61
  <Link href="/architecture" className="text-[12px] font-bold tracking-[0.05em] uppercase text-ink hover:text-hazard transition-colors">ARCHITECTURE.MD</Link>
62
  <a href={`${process.env.NEXT_PUBLIC_API_URL || "http://localhost:8000"}/docs`} target="_blank" rel="noopener noreferrer" className="text-[12px] font-bold tracking-[0.05em] uppercase text-ink hover:text-hazard transition-colors">API_DOCS</a>
63
  <a href="https://github.com/IDKHowToCodeFR/HEARTFLOW_OS" target="_blank" rel="noopener noreferrer" className="text-[12px] font-bold tracking-[0.05em] uppercase text-ink hover:text-hazard transition-colors">GITHUB_REPO</a>