跳转到主要内容
RaoufResearchOS
中文
澳大利亚悉尼当前悉尼时间—
Divan · 开放日

工程

Divan · 开放日

Divan 是为波斯学生会开放日展位构建的双语波斯诗歌体验。访客选择哈菲兹或鲁米,心怀一个愿望,获得经过审校的诗句、英文译文、来源及可选吟诵。它以离线和隐私为基础,不使用 cookie、追踪器、后端或访客输入,因此在活动场地不稳定的网络下仍可靠运行,且不收集使用者的数据。

  • React 19
  • Vite
  • TypeScript
  • 离线优先
  • 隐私源于设计
  • i18n / RTL
项目视觉标识静态

01 / 概览

有文档支持的技术栈
  • 01Vite
  • 02React 19
  • 03严格 TypeScript
  • 04手写服务工作线程
  • 05Web Crypto(随机排序的候选池(shuffle bag))
  • 06Vitest(单元/组件/无障碍/离线)
  • 07Playwright(Chromium 端到端)
  • 08pnpm 10.33 · Node 22.16

问题

公共开放日展位需要快速、愉快的文化体验,能在不稳定的 Wi-Fi 下运行,充分保护隐私,并以文化与学术诚信展示波斯诗歌;不编造诗句、不将书法栅格化,也不收集数据。

解决方案概述

  1. 精选 60 首哈菲兹诗句 + 60 首鲁米诗句,共 120 条,每条绑定不可变版本与可核验的出处。
  2. 通过手写服务工作线程让整套应用离线优先,无网络也能运行。
  3. Web Crypto 随机排序候选池(shuffle bag)在设备端选择诗句;没有服务器记录访客抽到的内容。
  4. 使用 Nastaliq 文本字体和诗人独立视觉设计,保留文化真实性而非扁平图像。
  5. 从开始纳入无障碍:双语/RTL 标记、双向隔离、实时区域、强制颜色及减少动态效果。

02 / 证据

证明与验证

  • 零数据收集;无 cookie、追踪器或后端,仅在 sessionStorage 保存公开诗句 ID。
  • 首次加载后,经完整性验证的服务工作线程支持完全离线运行。
  • 生产编译器在部署前拒绝合成测试数据,只发布经过审校的语料。
  • Vitest 覆盖单元、组件、无障碍、离线、分享、性能与安全测试,另有 Playwright Chromium 端到端测试。

03 / 方法

构建

技术栈

  • Vite
  • React 19
  • 严格 TypeScript
  • 手写服务工作线程
  • Web Crypto(随机排序的候选池(shuffle bag))
  • Vitest(单元/组件/无障碍/离线)
  • Playwright(Chromium 端到端)
  • pnpm 10.33 · Node 22.16
  • 审校双语语料:60 哈菲兹 + 60 鲁米 = 120 条诗句,各自绑定不可变版本及可追溯出处。
  • 诗句选择使用在设备端计算的 Web Crypto 随机排序候选池(shuffle bag),无服务器参与。
  • 手写服务工作线程检查完整性,在场地不稳定网络中保持离线运行。
  • 每位诗人独立文化视觉与 Nastaliq 文本字体,使用真实波斯文字而非栅格图像。
  • 双语标记支持方向处理、双向隔离、实时区域、强制颜色和减少动态效果。

安全

  • 隐私源于设计:无 cookie、标识符、追踪器或访客输入,不传输任何数据。
  • 纯静态客户端,无后端、数据库或分析基础设施。
  • sessionStorage 仅保存公开版本/诗句 ID,动态效果偏好仅存本地。
  • 生产编译器在部署前拒绝合成及测试数据。
  • 绑定来源并核验权利:代码为 MIT;诗歌和译文保留各自许可,如 CC BY-SA。
  • 以静态容器通过出站隧道提供服务,无入站攻击面。

搜索

查找项目、论文、文章或页面。

30 / 41 · 搜索结果

↑ ↓ 工作空间导航Enter 打开Esc 关闭