尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Vibe-coded project to compile House of Representatives floor proceedings and vote tallies.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
A comprehensive real-time monitoring dashboard for tracking U.S. House floor proceedings, live votes, and legislative activities with a tactical command-center interface.
Live Vote Tracking
• Real-time Vote Display: Displays current vote counts (Yeas, Nays, Present) with percentages
• Live Vote Tallies: Integration with House Clerk's voting system
• Threshold Analysis: Calculates votes needed, remaining votes, and maximum possible outcomes
• Vote History: Auto-refreshes every 30 seconds for up-to-date information查看完整 README ↗A comprehensive real-time monitoring dashboard for tracking U.S. House floor proceedings, live votes, and legislative activities with a tactical command-center interface.
Clone the repository:
git clone https://github.com/buckler-rougher/house-floor-monitor.git
cd house-floor-monitor
Open in browser:
# Simple file opening
open index.html
# Or using a local server
npm run dev
The site loads with live data by default and will display current House floor activity
The application uses a Cloudflare Worker to handle RSS feed processing server-side, eliminating CORS issues.
Install Wrangler CLI:
npm install -g wrangler
Login to Cloudflare:
wrangler login
Update Configuration:
wrangler.toml and replace your-subdomain with your Cloudflare subdomainapp.js and update worker URLs in RSS_CONFIG and NEWS_CONFIGDeploy Worker:
npm run deploy-worker
Update Client URLs:
In app.js, update these configuration sections:
const RSS_CONFIG = {
workerUrl: 'https://your-worker-subdomain.workers.dev/api/proceedings',
refreshInterval: 120000
};
const NEWS_CONFIG = {
workerUrl: 'https://your-worker-subdomain.workers.dev/api/news',
refreshInterval: 300000
};
/api/proceedings - House floor proceedings with relative timestamps/api/news - Latest news from multiple RSS feeds/api/health - Worker health statusEdit configuration objects in app.js:
API_CONFIG.refreshInterval = 30000; // milliseconds
Modify CSS variables in styles.css:
--bg-primary: Main background color
--bg-secondary: Secondary background
--text-primary: Main text color
--text-secondary: Secondary text
--accent-green: Success indicators
--accent-amber: Warnings
--accent-red: Errors
--party-dem: Democratic party color
--party-rep: Republican party color
Works in all modern browsers that support:
Tested on:
Four directories that are easy to confuse, told apart by where the code runs:
| Runs | ||
|---|---|---|
lib/ | the browser, and the Worker | Shared modules. Loaded by both boards with <script defer>, and three of them (bill-id, floor-speaker, floor-status) are also imported by worker.js, so the same rules apply on the page and at the edge. They assign to globalThis rather than exporting, which is what lets one file do both. |
functions/ | Cloudflare Pages, at the edge | Pages Functions. One file: _middleware.js, which rewrites senate-floor.evanhollander.org/ to /senate.html so both boards live in one Pages project. A rewrite, not a redirect, because the hostname has to stay in the address bar. Load-bearing, despite being 30 lines. |
test/ | your machine, on demand | Automated and asserted. npm test runs all five, no network and no dependencies. The large files beside them are fixtures, deliberately verbatim. |
dev/ | your machine, by hand | Investigation tooling. Nothing here is asserted and nothing runs in CI. The exception is harness.js, which the page itself loads in dev mode. See dev/README.md. |
worker.js is a separate Cloudflare Worker on api.evanhollander.org, not a
Pages Function; functions/ and worker.js are two different runtimes.
lib/crec.js has no production consumer. It grades speaker attribution against
the Congressional Record and is reached only by test/crec.test.js and
dev/grade.mjs.
house-floor-monitor/
├── index.html # House board
├── senate.html # Senate board, served at senate-floor.* by functions/
├── app.js # House board logic
├── senate.js # Senate board logic — deliberately not app.js
├── styles.css # Both boards: the source. Edit this.
├── styles.house.css # GENERATED (npm run css): styles.css without comments; the House loads it
├── styles.senate.css # GENERATED (npm run css): also without the rules the Senate page cannot use
├── worker.js # The API Worker (api.evanhollander.org)
├── lib/ # Shared modules (browser + Worker)
├── functions/ # Pages middleware
├── test/ # npm test
├── dev/ # Off-network harness and probes
├── committees/ # Committee seals
├── wrangler.toml # Worker configuration
└── README.md # This file
npm run dev
Serves the repo on port 3456. API calls from localhost fail CORS against the
production Worker, so use the dev harness to render off-network:
npm run dev # then open http://localhost:3456/?fixtures
npm test
Push to main. Cloudflare's Git integration deploys the Pages site and the
Worker together; there is no deploy command to run, and wrangler deploy is not
the path this project uses.
MIT License - Feel free to modify and use as needed.
This project tracks live House floor activity. Contributions, suggestions, and improvements are welcome. Feel free to open issues or submit pull requests.
This is an independent project and is not affiliated with the U.S. House of Representatives. All data is sourced from public APIs and feeds. For official information, please visit house.gov.