
案例研究 Personal project
任何一位巴西候选人的公开档案,每个数字背后都有官方来源。
- 客户
- Personal project
- 类型
- 公民数据工具
- 角色
- 分叉、重新设计与前端功能
- 年份
- 2026
01概览
一个只读的 Web 应用,底层是一个由官方来源(高等选举法院、联邦税务局和透明度门户)构建的 12 GB SQLite 数据库:2014 至 2026 年的参选记录、竞选捐款与支出、申报资产和预警信号,按人物整理,每条记录的文件、URL、采集日期和 SHA-256 一键可查。它是开源项目 EloSys 的一个分叉;我负责的是新的品牌形象、前端以及围绕它的功能。
02问题
巴西的选举数据是公开的,但分散在每年超过 1 GB 的 ZIP 文件里,格式各不相同。要拼出一位候选人的历史,就得下载文件、按 CPF 和 CNPJ 关联记录,然后在说不清出处的情况下相信一个数字。
02方法
保留数据管道,重做读者接触到的部分。EloSys 的采集器为每条记录保存一条可追溯到原始文件及其哈希的来源链,Web 应用以只读方式打开数据库。我为项目改了名,把深色仪表盘换成了朴素的公共服务风格,并加入了人们调查某人时会用到的工具:收藏、并排比较、导出、分享和打印。
03构建
实际构建了什么
- 01
覆盖所有页面的新视觉系统:默认浅色主题并提供深色主题,Public Sans 与 IBM Plex Mono 字体,放大镜加对勾的标志,重新设计的侧边栏和顶栏,以及带滑出菜单、尊重“减少动态效果”设置的手机布局。
- 02
任何档案(候选人、CPF 或 CNPJ)都可收藏并固定在侧边栏;在原有的 Ctrl K 搜索面板中加入最近搜索和键盘导航,全部保存在浏览器中,无需账号。
- 03
最多三位候选人的比较页:参选记录、捐款、选举基金、签约与已付支出、申报资产和预警信号,配以比例条和可分享的链接。另外还有所有表格的 CSV 导出、一键复制 CPF 和 CNPJ、链接分享和打印版式。
- 04
为最重的聚合查询(申报资产排行和历年最大供应商)加入内存缓存,这些查询在完整数据库上最多要花约一分钟;另有预热脚本和局域网启动模式,让同一网络中的其他人共用一台机器上的数据。
技术
- Next.js
- React
- TypeScript
- Tailwind CSS
- SQLite
- better-sqlite3
- React Flow
- Python
04体验





05当前状态
基于可下载的数据库(解压后约 12 GB)在本地运行,未公开部署。采集器、检测规则和来源模型来自 EloSys。预警信号只是线索,不是证据。
