我创建了一个公民参与平台,因为联系你的代表不应该这么困难

发布: (2026年2月1日 GMT+8 14:21)
7 min read
原文: Dev.to

Source: Dev.to

封面图片:我创建了一个公民参与平台,因为联系你的代表不应该这么困难

几周前,我在刷负面新闻,心情有点…… 不加选择地对世界现状挥手。在这种时候,总是让我感到无能为力,觉得对任何事情都无能为力。

于是我认真思考了一下自己究竟能做些什么。我想到了多年来一直困扰我的问题:联系民选代表异常困难。你必须在多个政府网站中翻找,才能弄清楚谁是你的代表,在过时的目录里寻找联系信息,然后盯着空白的文本框发愁到底该说什么。这样的摩擦足以让大多数人…根本不去尝试。

我是一名拥有近十年网页开发经验的软件工程师。我无法改变政策,但我可以改善糟糕的用户体验。所以我创建了 Democracy Direct

现在的功能

您输入邮政编码(ZIP code),即可查看您所在地区的两位参议员和一位众议员的联系信息以及社交媒体链接。您可以保存自己的选区,这样以后就不必每次都重新查询。

我最期待的功能是 letter templates(信件模板)。有人撰写了一封关于医疗保健、住房或其他议题的优秀信件,其他人可以直接获取、定制并发送。一个人的努力就能成为许多人的工具。模板可以设为公开或私有,并附有简短描述,以便在搜索结果和社交分享中更好地展示。浏览或使用模板无需账户。您的信息永不触及服务器;所有内容都保留在您的设备上。

即将推出

接下来是投票记录和立法跟踪。我希望你能够查看你的代表实际投了哪票,搜索法案,阅读通俗易懂的摘要,并将信件模板直接链接到特定立法。随后会加入竞选财务数据和交互式选区地图。从长远来看,目标是扩展到联邦之外,覆盖州立法者和地方官员。

路线图已公开:

隐私至上

这从一开始就是不可协商的。邮政编码查询完全在你的浏览器中使用预加载的数据进行——我们永远看不到你的搜索内容。如果你创建账户,你的电子邮件会在存储前使用 SHA‑256 进行哈希处理,即使我们想要也无法恢复。你写的信件从不触及服务器。分析数据通过 PostHog 匿名处理,不会进行会话录制,也没有办法将使用数据关联回你。

Cloudflare Turnstile 防止机器人对模板系统进行垃圾信息攻击,我使用 AI 审核来帮助内容审查,这样一个人就能实际运行此系统,而不会被审核工作淹没。

The stack

我想要快速行动,交付一个加载迅速的产品,并部署到 Cloudflare Pages。这就意味着使用 Astro 搭配 ReactTypeScript,这也是与 AI 编码代理协作的最佳组合。我在整个项目中主要使用 Claude Code 构建,并尝试了 Ralph loops,成功程度各有不同。它运行顺畅时,就像拥有一个永不睡觉的初级开发者;一旦出问题,你就得清理一些极具创意的烂摊子。

数据库使用的是 Neon PostgreSQL——按需计算、轻松分支和每个 PR 的复制,并提供慷慨的免费层。认证方式是通过 AWS SES 发送的 OTP 码。无需管理密码,也不必担心忘记密码或凭证填充攻击。

代表性数据来源于公开渠道:用于联邦官员的 unitedstates/congress‑legislators,用于州立法者的 Open States,以及美国人口普查局提供的 ZIP 码映射。

公开构建

整个项目在 AGPL 下开源,因为公共基础设施应该是可审计且可分叉的。没有广告、没有赞助商、没有高级付费层、也不出售数据。如果你喜欢这种方式,可通过捐赠获得资助。

Democracy Direct 是独立的——没有政党、没有政治行动委员会(PAC)、也不是非营利组织。只是一个因厌倦无止境刷屏而决定动手构建东西的工程师。

代码位于 . 欢迎贡献,无论是代码、模板、错误报告或其他任何内容。如果它对你有用,请分享给可能会使用它的人。核心目标是让人们更容易被听见。

Back to Blog

相关文章

阅读更多 »

什么是 JWT?

什么是 JWT?JWT(JSON Web Token)是一种类似小型数字密钥的令牌,由后端在用户登录后创建。它告诉服务器:“是的,这个用户已经……”。