Cell Assay Lab

Pure Frontend Lab Tool

把原始 PRD 的 Next.js / Vue 思路,切换成更适合科研计算器的 Astro + Svelte + Cloudflare。

这个骨架保持了文档要求的“所有数据都在浏览器本地完成解析、计算与出图”,同时把整体工程改成静态优先、局部高交互的实现方式。

架构原则 纯前端本地计算

避免实验数据离开浏览器。

交互核心 96 孔板 + 向导式流程

围绕数据输入、标记、计算、导出四段推进。

部署方式 Cloudflare Static Assets

静态托管即可上线,后续可平滑升级边缘能力。

后续依赖 SheetJS / Plotly / jsPDF

数据解析、科研图表与报告导出分层接入。

Updated Stack

新的技术栈更贴近这个产品本身

这不是把框架名字简单替换掉,而是把实现方式改成“Astro 管页面骨架,Svelte 管重交互,Cloudflare 管交付”的静态优先方案。

pnpm

统一包管理和锁文件,适合后续继续接入 SheetJS、Plotly.js、jsPDF 等工具库。

Astro

负责静态页面编排与内容骨架,让纯前端科研工具保持更轻的默认输出。

Svelte

专注 96 孔板选择、分组标记、参数面板和异常值剔除这类高频交互。

Cloudflare

用 Wrangler 托管静态构建产物,后续若引入 KV 或边缘缓存也能平滑扩展。

Wizard UX

按 PRD 保留四步式工作流

先把数据结构跑通,再把统计计算和导出逐层接上,避免一开始就把页面做成难维护的大而全单体。

01

数据输入

支持复制粘贴 Excel 表格,或上传 `.xlsx` / `.csv` 形成 8×12 矩阵。

02

孔板标记

交互式 96 孔板支持批量设置药物类型、处理方式、细胞类型、浓度和时间。

03

数据计算

在浏览器内完成空白扣除、存活率、抑制率、均值、SD、SEM 和异常值处理。

04

统计与导出

对接 T-test、ANOVA、IC50 拟合与图表导出,最终生成论文级报告。

Svelte Island

先用一个交互式 96 孔板占住最关键的产品入口

这里不是完整计算器,而是项目最需要的交互骨架。后面可以继续往这个组件里接入批量标签、空白孔/对照组绑定和异常值剔除。

96-Well Preview

孔位选择与批量标记

点击任意孔位即可模拟分组操作。

1
2
3
4
5
6
7
8
9
10
11
12
A
B
C
D
E
F
G
H

Tag Config

当前批量配置

默认按当前药物类型、浓度和时间写入分组标签。

Selection Summary

6 个孔位已选中

  • 组别:实验组
  • 药物:Drug A
  • 处理:CCK-8 24h
  • 细胞:HeLa
  • 孔位:B3, B4, C3, C4, D3, D4
均值预览 0.834
存活率 70%
抑制率 30%

Implementation Roadmap

后续功能接入路线

先保住架构边界,再逐个把 PRD 里的解析、统计、图表和导出接上,不把页面逻辑和计算逻辑搅在一起。

Data Intake

用 SheetJS 解析 Excel / CSV,同时保留粘贴输入和矩阵校验。

Plate Tagging

Svelte 管理孔位选中、标签批量应用、Blank / Control 绑定和热图联动。

Stats Engine

simple-statistics / jStat 负责基础统计,后续引入拟合库补齐 IC50。

Charts & Export

Plotly.js 输出带误差线和显著性标记的图,配合 jsPDF / html2canvas 导出报告。