Skip to content

Repository files navigation

CommonHall

See what your government is doing, from Congress to City Hall.

CommonHall is a free, nonpartisan, open-source website for following the U.S. Congress, state legislatures, state courts and city councils. Look up bills and votes in plain language, find out who represents you, follow what you care about, and take part in moderated public discussions.

Live site: https://commonhall.org/

Status: live data is loading. The database is connected and syncing on schedule, and the first full load of the current Congress (about 15,000 bills and every roll call) is still filling in, newest first. See Project status.

Contents

What you can do

Congress

  • Browse and search every bill and resolution in the current Congress, filter by chamber, status, policy area, sponsor's party or whether it has a discussion. The list opens on bills that moved past committee, latest action first; all activity is one click away.
  • Read a bill's plain status tracker, summary, full action history, sponsor, cosponsors (with a party breakdown) and related roll-call votes. A House bill's page links the constitutional provisions its sponsor cites as Congress's authority to the clause in Res Publica, our sister library of founding texts.
  • See every roll-call vote: the result, a party-by-party breakdown and how each member voted. The votes page highlights the closest votes.
  • Look up any member of Congress: photo, contact details, sponsored bills, recent votes, and how often they vote and vote with their party.
  • Browse every committee and subcommittee: chair and ranking member, the full roster by party, the bills sent to it (still in committee or reported out), and upcoming and recent hearings and markups with witnesses and video. Member pages list each member's committee seats; bill pages list the committees a bill went to.
  • See where each member's campaign money comes from: totals raised and spent, small versus large donors, PACs, in-state versus out-of-state money, and the employers of their largest donors.
  • Follow the federal budget (/budget/): the twelve annual spending bills for the fiscal year, where each stands in the House and Senate, any stopgap and the date it funds the government to, matched from the bills by title (no extra source). The same page shows where the money came from and went (receipts by source and outlays by function, from the Monthly Treasury Statement), each agency's budget and federal awards by state, from USAspending.gov.
  • See federal contracts and grants in each congressional district, beside the member who represents it (each state's Congress tab), and in your own district on the home page.

The executive branch

  • Executive orders as published in the Federal Register, with which earlier orders each one revokes, and counts per year and per presidential term.
  • Every nomination the President sends to the Senate and where it stands, from committee to confirmation, linked to the Senate's recorded vote.

The Supreme Court

  • Decisions from the last five terms, newest first, with the full opinions on CourtListener, the case's docket on supremecourt.gov, concurring and dissenting opinions where they are listed separately, and decisions per term.
  • What each case is about: its topic (Supreme Court Database) and the background from the Court's official syllabus, word for word; searchable and filterable.
  • The provision of the Constitution a case turned on (Supreme Court Database), linked to its text on Res Publica, and a link to Res Publica's own page for the landmark cases it holds.

Massachusetts (the featured state)

  • State legislators, searchable by name or district, with a party chart of each chamber.
  • State bills, with their own pages for bills that are advancing, and links to the full text on malegislature.gov.
  • The governor's executive orders and Supreme Judicial Court decisions (Governor and Courts tabs), each with a page where people can ask for a discussion.
  • The state budget (Budget tab): what was enacted for the year and how much has been spent so far, by category and secretariat, and every line item, searchable, from the Comptroller's CTHRU, with the Comptroller's own definitions.

Connecticut (in depth, like Massachusetts)

  • State bills with their full history, floor roll calls (how each legislator voted) and summaries, with their own pages for bills that passed, and links to each bill's status page on cga.ct.gov.
  • The governor's executive orders (from portal.ct.gov) and Connecticut Supreme Court decisions, with pages where people can ask for a discussion.
  • The state budget (Budget tab): what was budgeted in the funds the General Assembly appropriates and how much has been spent, by agency and service area, and every program, searchable, from the State Comptroller's data on data.ct.gov.
  • Every town's adopted budget (Budget tab): total spending, the share for education and the mill rate, from the Office of Policy and Management's summary.

Cities (/states/ma/boston/, /states/ma/worcester/, /states/ma/somerville/, /states/ma/cambridge/, /states/ct/bristol/, /states/ct/middletown/): one set of pages for every city, filled from whatever the city publishes. Tabs (Overview, Council, Committees, Neighborhoods, Budget) appear only when there is data behind them; a new city is a sync plus an entry in site/src/lib/cities.ts, no page code (see docs/extending.md).

Boston (tabs: Overview, Council, Committees, Neighborhoods, Budget)

  • All 13 councilors, with a clickable map of the nine council districts.
  • Ordinances, orders and hearing orders, with sponsors and history; consent-agenda resolutions (congratulations and commendations) are hidden until asked for.
  • Upcoming and recent council meetings, with agendas and minutes.
  • 311 requests by council district: how many, the share closed on time, typical time to close and the most common requests (summaries only).
  • Upcoming Zoning Board of Appeal hearings, searchable by street; the last year's decisions as totals by neighborhood (no archive of past cases by address).
  • The city budget: the operating budget by department and revenue by source, and the five-year Capital Plan by department, neighborhood and project, with a page per project where people can ask for a discussion.

Worcester (tabs: Overview, Council, Committees, Budget)

  • All 11 councilors, the district map, standing committees with members.
  • Council and committee meetings with agendas and minutes.
  • Every item on the council's agendas (orders, petitions, resolutions, City Manager communications, committee reports, ordinances), searchable, with sponsors and what the council was asked to do; held items keep one page.
  • The operating budget summary and the capital budget, with a page per project.

Somerville (tabs: Overview, Council, Committees, Neighborhoods)

  • All 11 councilors (seven ward councilors and four at-large), with the ward map.
  • Orders, resolutions, ordinances, home rule petitions and the mayor's requests (appropriations, grants, appointments), with sponsors and history; licenses and grants of location are left out.
  • Council and committee meetings (each committee is its own Legistar body), with agendas and the items on them.
  • 311 service requests by ward: how many, the share closed so far, typical time to close and the most common requests (summaries only; the city sets no target times).

Bristol, Connecticut (tabs: Overview, Council, Committees, Budget)

  • The mayor and six councilors (two per district); an address in Bristol finds the whole council, since the district map is published only as a street index.
  • City Council meetings, its joint meetings with the Board of Finance, and the Ordinance, Real Estate and Salary Committees, with agendas and minutes.
  • Every numbered agenda item (consent agenda, ordinances, contracts, appointments, committee reports), searchable, with each meeting it was on.
  • The adopted budget: revenue by source, education, debt service and the mill rate, with the change on the year before (as for every Connecticut town, from the state's summary).

Middletown, Connecticut (tabs: Overview, Council, Neighborhoods, Budget)

  • The twelve Common Council members, all elected citywide.
  • Council meetings (regular, special, workshops) with agendas and minutes.
  • Resolutions, ordinances and appropriations from the agendas, cited by number where the agenda gives one; items carried to later meetings keep one page.
  • 311 requests from SeeClickFix (summaries only): how many, typical time to close, the most common requests.
  • The adopted budget, like Bristol's.

Cambridge (tabs: Overview, Council, Committees, Neighborhoods, Budget)

  • All nine councillors (elected citywide, so there is no district map).
  • Policy orders, ordinances, City Manager items and committee reports since 2025, with sponsors, what the council did at each meeting and its roll calls; ceremonial resolutions are hidden until asked for.
  • Council and committee meetings with agendas and minutes.
  • 311 (SeeClickFix) requests citywide: how many, the share closed, typical time to close and the most common requests (summaries only).
  • The operating budget by department and revenue by source, and the five-year capital plan with a page per project.

Every state

  • A state map with each state's members of Congress, state legislators and recent state bills.

For you

  • Find my reps: enter an address to get your members of Congress, state legislators and, in the cities we cover, your district and at-large councilors. Remember it on your device (no account) or save it to your account, and the home page opens with Your government: your representatives, how your members of Congress voted lately, and your city's next meeting, 311 and budget. Bill pages then say whether your members of Congress sponsored or voted on the bill, and vote pages show their votes first. Only the districts and town are kept, never the street address.
  • Follow any bill, council matter, legislator or discussion and see everything that changed in one feed. Sign-in is by emailed link, or by a passkey added after the first sign-in; there are no passwords.
  • Discussions: structured public conversations (powered by Pol.is) on Boston council matters, Massachusetts and federal bills, executive orders and Supreme Court decisions, listed local first. You vote on short statements and add your own; the results show where people agree and where they divide. You can ask for a discussion from any of those pages.

At a glance: charts throughout the site show the make-up of each chamber, where bills stand, the most active topics, and how votes split.

Coverage and data sources

All data comes from official or public-domain sources and refreshes automatically. Each section says when its source last updated ("Updated from Congress.gov 12 minutes ago"), warns when a source is behind, and, while a source's records are still being copied, says how many we hold of how many; /status/ lists every source.

What Source Refreshed
Federal bills, actions, summaries, members Congress.gov API every 10 minutes
Constitution clause labels and links; landmark cases Res Publica's published index (/data/refs.json) each site build
House and Senate roll-call votes Congress.gov and senate.gov every 10 minutes
Committees and rosters congress-legislators daily
Bill referrals, hearings and markups Congress.gov hourly
Member contact details and IDs congress-legislators (public domain) daily
Executive orders Federal Register API hourly
Nominations Congress.gov hourly
Supreme Court decisions CourtListener (Free Law Project) hourly
Massachusetts Supreme Judicial Court and Connecticut Supreme Court decisions CourtListener every 3 hours
Massachusetts governor's executive orders mass.gov (Trial Court Law Libraries' list) weekly
Federal receipts and outlays Monthly Treasury Statement (Treasury Fiscal Data API) daily (a new statement each month)
Federal agencies' budgets; awards by state and district USAspending.gov daily (awards weekly)
Massachusetts state budget and spending Comptroller's CTHRU daily
Connecticut state budget and spending State Comptroller's expense data (data.ct.gov) daily (the Comptroller updates it after each monthly close)
Connecticut town budgets OPM's summary of adopted municipal budgets (data.ct.gov) daily (towns report once a year)
Massachusetts ballot questions Secretary of the Commonwealth, Information for Voters weekly
Connecticut governor's executive orders portal.ct.gov (Governor's office list and PDFs) weekly
Campaign finance OpenFEC weekly per member
Member photos Congress.gov, then unitedstates/images (public domain), loaded by your browser —
State bills Open States (CC0) hourly within a daily request budget, Massachusetts and Connecticut first
State legislators and committees openstates/people (CC0) weekly
Boston City Council Boston Legistar every 15 minutes
Boston council districts Analyze Boston on redistricting
Boston 311 request summaries Analyze Boston (both 311 systems) daily
Boston Zoning Board of Appeal Analyze Boston daily
Boston Capital Plan Analyze Boston weekly
Boston operating and revenue budgets Analyze Boston weekly
Worcester councilors and standing committees worcesterma.gov weekly
Worcester council and committee meetings, agendas, minutes PrimeGov hourly
Worcester council agenda items PrimeGov agendas (HTML or PDF) daily
Worcester council districts Worcester open data (2020 Census map) on redistricting
Worcester capital and operating budgets Worcester open data (annual PDFs) monthly check
Somerville City Council Somerville Legistar every 15 minutes
Somerville wards MassGIS Wards and Precincts (2022), dissolved by ward on redistricting
Somerville 311 request summaries Somerville open data daily
Bristol (CT) councilors bristolct.gov weekly
Bristol council and committee meetings and agenda items CivicClerk hourly
Middletown (CT) council members, meetings and agenda items middletownct.gov (agenda PDFs) daily
Middletown 311 request summaries SeeClickFix daily
Bristol and Middletown city boundaries Census TIGERweb once
Cambridge councillors; council items, sponsors and votes in 2025 IQM2 portal weekly; 2025 loaded once
Cambridge council meetings, items, sponsors and votes since 2026 PrimeGov (final actions) every 30 minutes
Cambridge 311, operating budget, revenue, capital plan Cambridge open data daily
Cambridge city boundary Census TIGERweb once
Address lookups U.S. Census Geocoder per lookup
Discussions Pol.is live

Known gaps: Boston publishes council roll-call votes only in meeting minutes, not in Legistar, so individual councilors' votes are not shown. Bills from older Congresses load on demand.

How it works

Congress.gov · senate.gov · congress-legislators · Open States · Census · Boston Legistar · Analyze Boston · Worcester PrimeGov · Worcester open data · Bristol CivicClerk · Middletown Agenda Center · SeeClickFix
                                   │
          Scheduled jobs (Supabase Edge Functions, run by pg_cron)
                                   │  API keys stay here
                                   ▼
                    Supabase Postgres (row-level security everywhere)
                      │                                    │
      Nightly site build (GitHub Actions)       Your browser (public, read-only key)
                      │                                    │
          Static website on GitHub Pages  ◄────────────────┘  live updates, follows, feed
  • A fast static site. Pages are built ahead of time and served by GitHub Pages. Members, councilors, discussions and notable items (bills past committee, advancing Massachusetts and Connecticut bills, anything followed or discussed) get their own prebuilt pages; everything else loads on request at the same kind of link, so every bill still has a shareable page.
  • Always current. Each page fetches its latest status and actions when you open it, so changes appear without waiting for the nightly rebuild.
  • Scheduled sync jobs fetch only what changed since their last run, stay within each source's request limits, and can stop and resume safely.
  • Security by default. API keys never reach the browser. The browser uses a public read-only key, and row-level security limits every table so people can only read public data and their own account.
  • Free to run. Everything fits the free tiers of GitHub and Supabase.
Scheduled job Runs What it does
sync-federal every 10 minutes New roll-call votes and changed bills; writes feed events; once a day, Congress.gov's count of the Congress's bills (to tell when ours are still loading)
sync-members daily Members of Congress
sync-committees hourly Congressional committee rosters (daily), hearings and markups, and older bills' committee referrals and constitutional authority statements
sync-finance hourly Campaign finance summaries from OpenFEC for members whose figures are over a week old
sync-executive hourly Executive orders from the Federal Register and presidential nominations from Congress.gov
sync-scotus hourly U.S. Supreme Court decisions, syllabi and separate opinions from CourtListener (Res Publica shares the token)
sync-state hourly (daily Open States budget) State bills, Massachusetts and Connecticut first (with histories and floor roll calls)
sync-boston every 15 minutes Council meetings, matters, sponsors and councilors
sync-boston-311 daily Boston 311 request counts per day, council district and type, from both of the city's 311 systems (Analyze Boston)
sync-boston-zba daily Boston Zoning Board of Appeal cases: open appeals and those heard in the last year
sync-capital-plan weekly Boston's five-year Capital Plan, read only when the city has changed it
sync-city-budget weekly Boston's operating and revenue budgets, read only when the city has changed them
sync-worcester hourly Worcester council and committee meetings; councilors and committee members weekly
sync-somerville every 15 minutes Somerville council and committee meetings, matters and sponsors; councilors weekly
sync-somerville-311 daily Somerville 311 service requests per day, ward and type, summarised on the city's portal; stores the report
sync-state-courts every 3 hours Massachusetts Supreme Judicial Court and Connecticut Supreme Court decisions from CourtListener (shares the free tier with sync-scotus)
sync-bristol hourly Bristol (CT) council and committee meetings and agenda items from CivicClerk; councilors weekly
sync-middletown-311 daily Middletown (CT) 311 report from SeeClickFix (only the report is stored)
sync-cambridge every 30 minutes Cambridge council and committee meetings, items, sponsors and roll calls (PrimeGov; the 2025 IQM2 archive once); councillors weekly
sync-cambridge-data daily Cambridge 311 report, operating and revenue budgets and capital plan from data.cambridgema.gov
sync-state-budget daily State budgets line by line with spending so far (Massachusetts from the Comptroller's CTHRU, Connecticut from the State Comptroller on data.ct.gov) and Connecticut's town budgets, each read only when its source has changed
sync-federal-budget daily The Monthly Treasury Statement's receipts and outlays (when a new one is out), agencies' budgets, and federal awards by state and congressional district (weekly), from the Treasury and USAspending
Load Worcester agendas (GitHub Action) daily The items on Worcester City Council agendas from PrimeGov (HTML or PDF), as council matters with sponsors
Load Middletown agendas (GitHub Action) daily Middletown (CT) Common Council members, meetings and agenda items (resolutions, ordinances, appropriations) from the city's agenda PDFs
Load governor orders (GitHub Action) weekly Massachusetts governors' executive orders from mass.gov, read in a headless browser
Load MA ballot questions (GitHub Action) weekly Massachusetts' statewide ballot questions from the Secretary of the Commonwealth's Information for Voters guide, read in a headless browser
Load CT governor orders (GitHub Action) weekly Connecticut governors' executive orders from portal.ct.gov; a short summary from each new order's PDF (pdftotext)
Load Worcester budget (GitHub Action) monthly Worcester's capital budget and operating revenue and spending summaries from the city's PDFs, checked against their printed totals
Load Supreme Court Database (GitHub Action) monthly Who won each Supreme Court case, the disposition, the vote split and the provision considered, from the Supreme Court Database
Load council districts (GitHub Action) on demand A city's council districts (or boundary) for the district maps and address lookups; run once per city and after redistricting
Load state people and committees (GitHub Action) weekly Legislators' offices, phones and links; every state's committees and members
Nightly rebuild daily Rebuilds the website so new notable items get their own page
refresh-member-stats every 30 minutes Database job: recomputes members' vote statistics
trim-past-congresses monthly Database job: deletes past Congresses' action histories, co-sponsors and member-by-member positions (bills and vote totals stay)
check-database-size weekly Database job: records the database size; the health check flags it above 400 MB
purge-api-usage, purge-archive-cache, purge-cron-history, purge-discussion-requests-anon, purge-feed-events, purge-geo-cache, purge-rate-limits daily Database jobs: delete old request counts, expired caches, cron history, anonymous discussion requests, feed events and rate-limit rows
Sync health (GitHub Action) every 6 hours Fails (and GitHub emails the owner) when a job failed or is overdue; a source gone quiet is a warning; pings HEARTBEAT_URL if set; the same list is public at /status/

The reasoning behind the main design choices is recorded in docs/decisions.md.

Privacy and principles

  • Nonpartisan. Neutral wording, the same treatment for every party, and party colours used only to show data.
  • No ads, no tracking. The site has no analytics or tracking scripts.
  • Minimal data. An account stores your email, what you follow and, only if you choose to save it, your matched address and districts. Delete any of it, or your whole account, at any time.
  • Discussions stay anonymous. Discussions are Pol.is polls in an iframe; no Pol.is code runs in the site's own pages. When you're signed in, Pol.is receives a random ID for you, never your name, email, account ID or address. Like any site you load, Pol.is sees your IP address and keeps its own cookie in its frame.

Full details are on the site's privacy page and discussion rules.

Running discussions

Discussions are Pol.is polls embedded in the site. Maintainers create them from the site; Pol.is creates the poll the first time its page loads.

One-time setup

  1. Set the repository variable PUBLIC_POLIS_SITE_ID (Pol.is → Integrate).

  2. Sign in to the site once, then make yourself a maintainer in the Supabase SQL editor:

    insert into public.admins (user_id, role)
    select id, 'admin' from auth.users where email = 'you@example.org';

Create a discussion

  1. Sign in and open Admin: discussions (in the footer and on the Account page).
  2. Fill in the form: a short id (it becomes the address and the Pol.is page id, and cannot change), a neutral question as the title, a one-paragraph prompt, the jurisdiction, and what it is about (a bill, Massachusetts or Connecticut bill, council matter, executive order or Supreme Court decision).
  3. Save it as a draft and open its page from the admin list while signed in to Pol.is. That first load creates the poll in your Pol.is account.
  4. In the Pol.is dashboard, turn on strict moderation and add 6–10 balanced seed statements.
  5. Set the status to open. It appears in the discussion lists and on the item's page straight away; the next build gives it its own prerendered page.

When someone asks for one

Anyone can press "Ask for a public discussion" on an item's page, signed in or not. The admin page opens with Waiting for a discussion: requested items that have no discussion yet, most requested first (never who asked). Start a discussion fills in the form for one. Once a discussion exists for an item (even a draft), its requests move to the folded Requests already covered list, and closed discussions are folded away too.

While it runs

  • Moderate new statements in Pol.is at least daily under the published discussion rules: accept or reject, never edit.
  • Set the status to closed to stop voting; results stay readable. Pol.is's Report and Export give a shareable report and CSV files.
  • Anyone can vote and add statements without an account for now. Set the repository variable PUBLIC_OPEN_PARTICIPATION=false and redeploy to require sign-in and enforce "residents only".

The full guide is docs/discussions.md.

Project status

Area Status
Website, charts, Congress, states and Boston pages Live
Database and scheduled syncs Live: bills and votes every 10 minutes, state bills hourly, Boston every 15 minutes, members daily (see the jobs table above)
Federal bills and roll-call votes Loading: the first full load of the current Congress takes about a day; recently active bills and the newest votes arrive first
Boston council districts Loaded
Campaign finance (FEC) Ready; fills in over the first week after deploy (about 535 members, refreshed weekly)
Accounts, following, feed, Find my reps Ready; sign-in needs an email (SMTP) provider in Supabase Auth
Massachusetts bills Live; refreshed with the hourly Open States sync
Massachusetts and Connecticut state budgets, Connecticut town budgets Ready; load on the first daily run after deploy
Federal spending (Treasury statement, agencies, awards by district) Ready; loads on the first daily run after deploy
Connecticut bills, orders and Supreme Court Bills and decisions arrive with the hourly syncs; orders after the first "Load CT governor orders" run
Discussions Example discussions open as a preview; pilot topics to be chosen
Committees, rosters, hearings Ready; rosters load on the first hourly run, referrals fill in as bills load
Executive orders and nominations Ready; load on the first hourly run after deploy
Supreme Court Ready; loads on the first hourly run after deploy (needs COURTLISTENER_TOKEN)

The site is static and rebuilds nightly (and on every deploy), so new data shows up on pages the next morning; bill pages also fetch their latest status live.

To set up your own copy, follow the deployment guide.

Development

Requirements: Node 22 and Docker. No API keys are needed: the local database is loaded with real sample data.

npm install
npm run db:start            # local Supabase in Docker
npm run db:reset            # create the database and load the sample data
npx supabase status         # shows the local URL and keys
cp .env.example site/.env   # set PUBLIC_SUPABASE_URL and PUBLIC_SUPABASE_ANON_KEY
npm run dev                 # http://localhost:4321

Checks (CI runs the same): npm run lint, npm run typecheck, npm test -- --project unit and npm run test:db. See CONTRIBUTING.md for the full workflow and project rules.

Path What
site/ The website (Astro, with small Preact components)
supabase/ Database migrations, Edge Functions, tests and sample data
packages/congress-client/ Typed clients for each data source, tested against recorded responses
packages/sync/ The sync jobs, shared by the Edge Functions and scripts
scripts/ Backfill, sample-data and verification scripts
docs/ Guides and design decisions

Documentation

Guide For
Deployment and operations Connecting Supabase and GitHub, schedules, sign-in, troubleshooting
Configuration reference Every secret, variable and setting in one place
Discussions Setting up Pol.is, creating and moderating discussions, privacy rules
Custom domain and repository rename Switching to your own domain or renaming the repo without breaking sign-in, links or the backfill
Design decisions Why things work the way they do
Contributing Local setup, checks and project rules

License

MIT. Congress.gov, senate.gov and congress-legislators data are in the public domain; Open States data is CC0; Boston data is published by the City of Boston.