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) |
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 |
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
-
Set the repository variable PUBLIC_POLIS_SITE_ID (Pol.is → Integrate).
-
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 = '[email protected]';
Create a discussion
- Sign in and open Admin: discussions (in the footer and on the Account page).
- 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).
- 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.
- In the Pol.is dashboard, turn on strict moderation and add 6–10 balanced
seed statements.
- 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
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.