All projects

Part of the Public tenders in the open

Cohesion funds are one slice of public spending. **OpenCUP** covers ANY public investment project since 2003 — public works, business incentives, grants, services — regardless of who funds it: same town set on "By town".

▶ Use this app

data space «appalti-trasparenti-en» — this micro app reads and writes the suite’s shared data space.

The other micro apps in the same suite

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
# 🗂️ All projects

## The whole portfolio, not just tenders and EU funds

Cohesion funds are one slice of public spending. **OpenCUP** covers ANY
public investment project since 2003 — public works, business incentives,
grants, services — regardless of who funds it: same town set on "By town".

::od-query{into="cupComune" sql="SELECT count(*) AS progetti, round(sum(costo_progetto)) AS totale FROM opencup WHERE codice_istat = '{#comune}'"}

:::cards{path="cupComune" search="false"}
🗂️ **{progetti}** CUP projects, **€{totale}** total cost
:::

::od-query{into="areeComune" sql="SELECT area_intervento AS area, count(*) AS n, round(sum(costo_progetto)) AS costo FROM opencup WHERE codice_istat = '{#comune}' AND area_intervento IS NOT NULL GROUP BY 1 ORDER BY costo DESC LIMIT 10"}

::chart-bar{data="areeComune" x="area" y="costo" height="18rem"}

::od-query{into="progettiCup" sql="SELECT descrizione AS description, natura_intervento AS nature, costo_progetto AS cost, stato_progetto AS status FROM opencup WHERE codice_istat = '{#comune}' ORDER BY costo_progetto DESC LIMIT 30" limit="30"}

:::table{path="progettiCup" headers="Description,Nature,Cost €,Status" pagesize="10"}
{description} | {nature} | {cost} | {status}
:::