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".
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.
- 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
# 🗂️ 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}
:::