First prototype
diff --git a/cron/generateData.php b/cron/generateData.php
new file mode 100644
index 0000000..fab3093
--- /dev/null
+++ b/cron/generateData.php
@@ -0,0 +1,129 @@
+<?php
+if (php_sapi_name() != "cli")
+  exit();
+
+// Font dels nombres d'habitants: https://catsalut.gencat.cat/web/.content/minisite/catsalut/proveidors_professionals/registres_catalegs/documents/poblacio-referencia.pdf
+$HABITANTS = [
+  "Alt Pirineu i Aran" => 67277,
+  "Lleida" => 362850,
+  "Camp de Tarragona" => 607999,
+  "Terres de l'Ebre" => 176817,
+  "Girona" => 861753,
+  "Catalunya Central" => 526959,
+  "Barcelona" => 5050190
+];
+
+$CODENAME = [
+  "Alt Pirineu i Aran" => "AltPirineuAran",
+  "Lleida" => "Lleida",
+  "Camp de Tarragona" => "CampDeTarragona",
+  "Terres de l'Ebre" => "TerresDeLEbre",
+  "Girona" => "Girona",
+  "Catalunya Central" => "CatalunyaCentral",
+  "Barcelona" => "Barcelona"
+];
+
+function getSumDay($originalDay, $translation, &$dataRegio) {
+  if ($translation >= 0)
+    $day = (clone $originalDay)->add(new DateInterval("P".abs($translation)."D"));
+  else
+    $day = (clone $originalDay)->sub(new DateInterval("P".abs($translation)."D"));
+
+  foreach ($dataRegio as $row) {
+    $rowDay = new DateTime($row["data"]);
+    if ($day == $rowDay) return $row["sum_numcasos"];
+  }
+
+  return 0;
+}
+
+function query($soql) {
+  $raw = file_get_contents("https://analisi.transparenciacatalunya.cat/resource/xuwf-dxjd.json?\$query=".urlencode($soql));
+  return json_decode($raw, true);
+}
+
+$data = query("SELECT data, regiosanitariadescripcio AS regio, sum(numcasos) AS sum_numcasos
+WHERE
+  resultatcoviddescripcio = 'Positiu' AND
+  regiosanitariadescripcio <> 'No classificat'
+GROUP BY regiosanitariadescripcio, data
+ORDER BY data ASC, regiosanitariadescripcio");
+
+$dataPerRegio = [];
+foreach ($data as $row) {
+  if (!isset($dataPerRegio[$row["regio"]])) $dataPerRegio[$row["regio"]] = [];
+  $dataPerRegio[$row["regio"]][] = $row;
+}
+
+$summary = [];
+foreach ($dataPerRegio as $regio => $dataRegio) {
+  $summary[$regio] = [];
+
+  $oldestDay = new DateTime("today");
+  $newestDay = new DateTime();
+  $newestDay->setTimestamp(0);
+
+  foreach ($dataRegio as $row) {
+    $date = new DateTime($row["data"]);
+    if ($date < $oldestDay) $oldestDay = $date;
+    if ($date > $newestDay) $newestDay = $date;
+  }
+
+  $newestDay->sub(new DateInterval("P1D"));
+
+  $rhos = [];
+
+  for ($currentDate = (clone $oldestDay)->add(new DateInterval("P7D")); $currentDate < $newestDay; $currentDate->add(new DateInterval("P1D"))) {
+    $den = getSumDay($currentDate, -4, $dataRegio) + getSumDay($currentDate, -5, $dataRegio) + getSumDay($currentDate, -6, $dataRegio);
+    if ($den == 0) continue;
+
+    $rho = (getSumDay($currentDate, 1, $dataRegio) + getSumDay($currentDate, 0, $dataRegio) + getSumDay($currentDate, -1, $dataRegio))/($den);
+
+    $rhos[] = [
+      "data" => $currentDate->format("c"),
+      "rho" => $rho
+    ];
+  }
+
+  for ($currentDate = (clone $oldestDay)->add(new DateInterval("P14D")); $currentDate < $newestDay; $currentDate->add(new DateInterval("P1D"))) {
+    $sum = 0;
+
+    $p14Date = (clone $currentDate)->sub(new DateInterval("P14D"));
+    $p7Date = (clone $currentDate)->sub(new DateInterval("P7D"));
+
+    foreach ($dataRegio as $row) {
+      $date = new DateTime($row["data"]);
+      if ($date >= $p14Date && $date < $currentDate) {
+        $sum += $row["sum_numcasos"];
+      }
+    }
+
+    $rhoAverage = 0;
+    $rhoCount = 0;
+
+    foreach ($rhos as $row) {
+      $date = new DateTime($row["data"]);
+      if ($date >= $p7Date && $date < $currentDate) {
+        ++$rhoCount;
+        $rhoAverage += $row["rho"];
+      }
+    }
+
+    $rhoAverage /= $rhoCount;
+
+    $summary[$regio][] = [
+      "data" => $currentDate->format("c"),
+      "ia14" => (isset($HABITANTS[$regio]) ? $sum*(1e5/$HABITANTS[$regio]) : null),
+      "rho7" => $rhoAverage
+    ];
+  }
+}
+
+foreach ($summary as $regio => $summaryRegio) {
+  $file = fopen("/tmp/covid19graphgenerator-".$CODENAME[$regio].".dat", "w");
+
+  foreach ($summaryRegio as $row)
+    fwrite($file, $row["data"]." ".$row["ia14"]." ".$row["rho7"]."\n");
+
+  fclose($file);
+}