CatalogPublic data ›Transparency

Parliament by the numbers — Chamber and Senate bills and votes

The Chamber of Deputies' bills and votes, the Senate's bills and their outcome — every Republic legislature, since 1948. Official data from dati.camera.it and the Senate.

📗 Chamber📘 Senate

data space «parlamento» — the suite’s glue: on your device, multi-user with one invite (link or QR), end-to-end encrypted.

▶ Open the suite (2 micro apps)

or open it as a single app

parliamentchambersenatebillsvotesroll-calldeputiessenatorstransparency

What it records

  • Legislature
  • A word in the title, e.g. «budget»
  • Legislature

Composed of 2 micro apps

One job each, over the same data: every micro app reads and writes the shared data space “parlamento” (with your consent, asked on first open). Everything stays on your device — and with a single invite the whole suite goes multi-user, end-to-end encrypted.

How it works

This is a Reactive app: a plain text document that your browser turns into a working app — forms, live data, tables, statistics and even charts, with nothing to install or configure.

  1. Use it right away. Hit “Use this app”: it opens right in your browser, ready to go, with data saved only on your device.
  2. Your data stays yours. Everything is stored locally on your device, kept separate for each app: no account, no server, nothing to set up.
  3. Make it your own. The text below is the entire app: copy it, tweak fields, views and words, and your changes become interactive instantly.
  4. Share it as a file. An app is a simple file: save it, export it or share it with a link; and with encrypted collaboration several people edit the same data in real time.
The app’s source
# 🏛️ Parliament by the numbers

The Chamber of Deputies' bills and votes, the Senate's bills and their
outcome — every Republic legislature, since 1948. Official data from
dati.camera.it and the Senate.

:::::page{title="Chamber" icon="📗"}

## The votes

Pick the legislature (19 = the current one).

::input[leg]{value="19" placeholder="Legislature"}

::od-query{into="riepilogo" sql="SELECT esito AS esito, count(*) AS n FROM camera_votazioni WHERE legislatura = TRY_CAST('{#leg}' AS INTEGER) AND esito IS NOT NULL GROUP BY esito"}

::chart-pie{data="riepilogo" label="esito" value="n" height="14rem"}

### The latest votes

::od-query{into="voti" sql="SELECT data AS data, titolo AS titolo, esito AS esito, favorevoli AS favorevoli, contrari AS contrari, astenuti AS astenuti FROM camera_votazioni WHERE legislatura = TRY_CAST('{#leg}' AS INTEGER) AND titolo IS NOT NULL ORDER BY data DESC LIMIT 30" limit="30"}

:::table{path="voti" headers="Date,Title,Outcome,For,Against,Abstained" pagesize="10"}
{data} | {titolo} | {esito} | {favorevoli} | {contrari} | {astenuti}
:::

### Search a bill

::input[q]{placeholder="A word in the title, e.g. «budget»"}

::od-query{into="atti" sql="SELECT titolo AS titolo, data AS data, primo_firmatario AS primo_firmatario, iniziativa AS iniziativa, url AS url FROM camera_atti WHERE legislatura = TRY_CAST('{#leg}' AS INTEGER) AND titolo ILIKE '%' || '{#q}' || '%' ORDER BY data DESC LIMIT 20" limit="20"}

:::cards{path="atti" search="false"}
**{titolo}**
{primo_firmatario} · {iniziativa} · {data}
[Official record]({url})
:::

:::::

:::::page{title="Senate" icon="📘"}

## The bills

Same legislature, Senate side — with the latest known stage of the process.

::input[legS]{value="19" placeholder="Legislature"}

::od-query{into="ddl" sql="SELECT titolo_breve AS titolo_breve, natura AS natura, ramo AS ramo, stato AS stato, data_stato AS data_stato, relatore AS relatore, url AS url FROM senato_ddl WHERE legislatura = TRY_CAST('{#legS}' AS INTEGER) ORDER BY data_stato DESC LIMIT 30" limit="30"}

:::table{path="ddl" headers="Title,Nature,Chamber of origin,Status,Date,Rapporteur" pagesize="10"}
{titolo_breve} | {natura} | {ramo} | {stato} | {data_stato} | {relatore}
:::

### Passed into law

The bills from this legislature that completed their process.

::od-query{into="leggi" sql="SELECT COALESCE(titolo_breve, titolo) AS titolo_breve, numero_legge AS numero_legge, data_legge AS data_legge, url AS url FROM senato_ddl WHERE legislatura = TRY_CAST('{#legS}' AS INTEGER) AND numero_legge IS NOT NULL ORDER BY data_legge DESC LIMIT 20" limit="20"}

:::cards{path="leggi" search="false"}
**{titolo_breve}**
Law no. {numero_legge} of {data_legge}
[Record]({url})
:::

:::::

---

The data are the **Chamber of Deputies' bills and electronic roll-call
votes** (source dati.camera.it, OCD ontology, CC BY-SA 4.0) and the
**Senate's bills** (source SenatoDellaRepubblica/OpenData on GitHub, CC BY
3.0), every Republic legislature. None of your data leaves the device.