Constitutional and administrative justice — searchable rulings
Constitutional Court rulings since 1956 and rulings from Italy's Regional Administrative Courts and Council of State: public litigation, the judicial side. Official data from dati.cortecostituzionale.it and the OpenGA portal of Italian administrative justice.
data space «giustizia» — the suite’s glue: on your device, multi-user with one invite (link or QR), end-to-end encrypted.
What it records
- Describe the issue you're looking for…
- Year
- S = judgment, O = order (empty = both)
- Region (empty for the Council of State)
- A word in the subject, e.g. «competition», «tender»
- Court name, e.g. Milano, Napoli, Torino…
Composed of 3 micro apps
One job each, over the same data: every micro app reads and writes the shared data space “giustizia” (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.
- Use it right away. Hit “Use this app”: it opens right in your browser, ready to go, with data saved only on your device.
- Your data stays yours. Everything is stored locally on your device, kept separate for each app: no account, no server, nothing to set up.
- Make it your own. The text below is the entire app: copy it, tweak fields, views and words, and your changes become interactive instantly.
- 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
# ⚖️ Constitutional and administrative justice
Constitutional Court rulings since 1956 and rulings from Italy's Regional
Administrative Courts and Council of State: public litigation, the judicial
side. Official data from dati.cortecostituzionale.it and the OpenGA portal
of Italian administrative justice.
:::::page{title="Constitutional Court" icon="🏛️"}
## Search by topic
Describe the issue — «legitimate impediment», «regional autonomy» — and
find relevant rulings (semantic search over the heading).
::od-search{into="ricerca" table="corte_costituzionale" placeholder="Describe the issue you're looking for…"}
:::cards{path="ricerca" search="false"}
**{tipo} no. {numero}/{anno}** — {presidente}
{epigrafe}
[Official record]({url})
:::
## Browse by year
::input[anno]{value="2024" placeholder="Year"}
::input[tipo]{value="" placeholder="S = judgment, O = order (empty = both)"}
::od-query{into="pronunce" sql="SELECT numero AS numero, tipo AS tipo, data_deposito AS data_deposito, presidente AS presidente, epigrafe AS epigrafe, url AS url FROM corte_costituzionale WHERE anno = TRY_CAST('{#anno}' AS INTEGER) AND ('{#tipo}' = '' OR tipo = CASE lower(trim('{#tipo}')) WHEN 's' THEN 'sentenza' WHEN 'o' THEN 'ordinanza' END) ORDER BY numero" limit="200"}
:::table{path="pronunce" headers="No.,Type,Filed,President,Heading" pagesize="10"}
{numero} | {tipo} | {data_deposito} | {presidente} | {epigrafe}
:::
:::::
:::::page{title="Regional courts & Council of State" icon="🔍"}
## Rulings in your region
::input[regione]{value="Lazio" placeholder="Region (empty for the Council of State)"}
::od-query{into="riepilogo" sql="SELECT esito AS esito, count(*) AS n FROM giustizia_amministrativa WHERE regione = '{#regione}' GROUP BY esito ORDER BY n DESC LIMIT 8"}
::chart-bar{data="riepilogo" x="esito" y="n" height="16rem"}
### Search by subject
::input[q]{placeholder="A word in the subject, e.g. «competition», «tender»"}
::od-query{into="sentenze" sql="SELECT sede AS sede, sezione AS sezione, data_pubblicazione AS data_pubblicazione, esito AS esito, oggetto AS oggetto FROM giustizia_amministrativa WHERE regione = '{#regione}' AND oggetto ILIKE '%' || '{#q}' || '%' ORDER BY data_pubblicazione DESC LIMIT 30" limit="30"}
:::table{path="sentenze" headers="Seat,Section,Date,Outcome,Subject" pagesize="10"}
{sede} | {sezione} | {data_pubblicazione} | {esito} | {oggetto}
:::
:::::
:::::page{title="Trial length" icon="⏳"}
## How long a civil trial takes
The most-cited statistic on Italian justice: the average length, in days, of
proceedings closed by the chosen court (SICID register — ordinary civil
litigation).
::input[sede]{value="Milano" placeholder="Court name, e.g. Milano, Napoli, Torino…"}
::od-query{into="trend" sql="SELECT anno AS anno, durata_media_giorni AS giorni FROM giustizia_durata WHERE sede = '{#sede}' AND tipo_ufficio = 'Tribunale' AND materia = 'Totale delle materie' AND registro = 'SICID' ORDER BY anno" limit="20"}
::chart-line{data="trend" x="anno" y="giorni" height="16rem"}
### By subject matter, latest available year
::od-query{into="materie" sql="SELECT materia AS materia, durata_media_giorni AS giorni, definiti AS definiti FROM giustizia_durata WHERE sede = '{#sede}' AND tipo_ufficio = 'Tribunale' AND registro = 'SICID' AND anno = (SELECT max(anno) FROM giustizia_durata WHERE sede = '{#sede}' AND tipo_ufficio = 'Tribunale') ORDER BY giorni DESC" limit="10"}
:::table{path="materie" headers="Subject matter,Days,Closed proceedings" pagesize="10"}
{materia} | {giorni} | {definiti}
:::
Voluntary jurisdiction and special proceedings are usually the fastest;
ordinary civil litigation the slowest. Civil only: the Ministry has no
downloadable export for criminal proceedings.
:::::
---
The data are **Constitutional Court rulings** since 1956 (source
dati.cortecostituzionale.it, CC BY-SA 3.0), **rulings from Regional
Administrative Courts, the Council of State and the CGA Sicilia** (source
OpenGA portal of Italian administrative justice, CC BY 4.0) and **civil
trial length** (source DGSTAT — Ministry of Justice, CC BY 4.0). None of your
data leaves the device.