开发了一个投票应用

开发100款Web应用

项目介绍

最近,我开发了一款完全运行在 Cloudflare 边缘网络上的投票应用。整个项目无需传统后端服务器,所有逻辑均由 Cloudflare Workers 承载,数据存储于 Cloudflare D1(SQLite 数据库),前端则通过 Cloudflare Pages 静态托管。应用坚持最小化数据收集原则:不记录用户身份信息,仅在必要时记录投票 IP 地址,用于防止重复投票。欢迎大家体验使用!🎉

功能描述

该应用在保证简洁易用的同时,提供了灵活的投票配置能力:

  • 公开投票列表:首页展示所有公开的投票,用户可直接参与。
  • 自由创建投票:任何访客均可创建投票,并可自定义以下选项:
    • 可见性:公开(展示在列表)或私有(仅通过链接访问);
    • 记名方式:匿名投票(默认)或记名投票(记录归属标识);
    • 选择模式:单选或多选;
    • 为防止滥用,每位用户(基于 IP)限制最多创建 3 个投票。
  • 归属码机制:由于应用无需注册登录,创建成功后系统会生成一个唯一的“归属码”(类似管理密码)。用户需妥善保存该码,后续所有管理操作均需凭此码验证身份。
  • 投票管理面板:输入归属码后,可:
    • 查看实时投票统计与图表;
    • 导出投票结果为 CSV 格式;
    • 获取专属分享链接;
    • 删除整个投票(不可逆操作)。
  • 投票体验:用户进入投票页面后可进行选择,提交后立即展示结果汇总。同一 IP 地址无法重复投票,确保数据有效性。

架构设计

本项目是我首次尝试“无服务器”(Serverless)全栈开发,核心目标是深度体验 Cloudflare 的边缘计算生态

  • 技术栈:基于 Cloudflare 官方模板构建,前端采用 React + TypeScript + React Router,部署于 Cloudflare Pages;后端 API 由 Cloudflare Workers 实现,数据库使用 Cloudflare D1(兼容 SQLite 的边缘数据库)。
  • 边缘计算优势:Workers 在全球 300+ 节点运行,用户请求就近处理,API 响应极快;D1 数据库也部署在边缘,读写延迟低,天然具备高可用性。
  • 数据安全与隐私
    • 所有 IP 地址在存储前进行哈希脱敏处理(如使用 SHA-256),无法还原原始 IP;
    • 归属码采用高强度随机字符串生成,避免暴力破解;
    • 无用户账户体系,从根本上规避个人信息泄露风险。
  • 成本与维护:得益于 Cloudflare 的免费额度,该项目在低频使用下几乎零成本运行,且无需运维服务器,极大降低了长期维护负担。

总结

这个投票应用虽小,却是对现代边缘计算架构的一次完整实践。它验证了:无需传统后端,仅靠 Cloudflare 生态,也能构建功能完整、安全可靠、用户体验良好的 Web 应用。未来,我计划增加投票截止时间、结果密码查看、国际化支持等功能。如果你对边缘计算或无服务器架构感兴趣,不妨亲自部署一个试试!