diff --git a/src/inc/api.php b/src/inc/api.php
index 9b606be..aa12ca2 100644
--- a/src/inc/api.php
+++ b/src/inc/api.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class api {
   public static function inputJson() {
     $string = trim(file_get_contents("php://input"));
diff --git a/src/inc/calendars.php b/src/inc/calendars.php
index a8b4a9f..213c6da 100644
--- a/src/inc/calendars.php
+++ b/src/inc/calendars.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class calendars {
   const TYPE_FESTIU = 0;
   const TYPE_FEINER = 1;
diff --git a/src/inc/calendarsView.php b/src/inc/calendarsView.php
index eddc230..46a3761 100644
--- a/src/inc/calendarsView.php
+++ b/src/inc/calendarsView.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class calendarsView {
   public static function renderCalendar($current, $ends, $selectedFunc, $disabled = false, $extra = false) {
     $interval = new DateInterval("P1D");
diff --git a/src/inc/categories.php b/src/inc/categories.php
index a75d998..d4b3453 100644
--- a/src/inc/categories.php
+++ b/src/inc/categories.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class categories {
   private static function parseEmails($string) {
     $string = str_replace(" ", "", $string);
diff --git a/src/inc/common.php b/src/inc/common.php
index 26d02aa..3dc12e0 100644
--- a/src/inc/common.php
+++ b/src/inc/common.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class common {
   public static function getDayTimestamp($originaltime) {
     $datetime = new DateTime();
diff --git a/src/inc/companies.php b/src/inc/companies.php
index 702151f..4646ca7 100644
--- a/src/inc/companies.php
+++ b/src/inc/companies.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class companies {
   public static function add($company, $cif) {
     global $con;
diff --git a/src/inc/csv.php b/src/inc/csv.php
index ce44c81..ed01c2a 100644
--- a/src/inc/csv.php
+++ b/src/inc/csv.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class csv {
   public static $fields = ["dni", "name", "category", "email", "companies"];
 
diff --git a/src/inc/db.php b/src/inc/db.php
index 293707a..91042df 100644
--- a/src/inc/db.php
+++ b/src/inc/db.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class db {
   const EXPORT_DB_FORMAT_SQL = 0;
 
diff --git a/src/inc/export.php b/src/inc/export.php
index 6800d50..f52f926 100644
--- a/src/inc/export.php
+++ b/src/inc/export.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class export {
   const FORMAT_PDF = 1;
   const FORMAT_DETAILEDPDF = 2;
diff --git a/src/inc/files.php b/src/inc/files.php
index 5f9cce2..4e84862 100644
--- a/src/inc/files.php
+++ b/src/inc/files.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class files {
   const NAME_LENGTH = 16;
   const MAX_SIZE = 6*1024*1024;
diff --git a/src/inc/help.php b/src/inc/help.php
index 3fe7179..2b77277 100644
--- a/src/inc/help.php
+++ b/src/inc/help.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class help {
   const PLACE_INCIDENT_FORM = 0;
   const PLACE_VALIDATION_PAGE = 1;
diff --git a/src/inc/helpView.php b/src/inc/helpView.php
index d6b642a..614b706 100644
--- a/src/inc/helpView.php
+++ b/src/inc/helpView.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class helpView {
   public static function renderHelpButton($place, $topRight = false, $margin = false) {
     $url = help::get($place);
diff --git a/src/inc/incidents.php b/src/inc/incidents.php
index 7664fe9..b558ed9 100644
--- a/src/inc/incidents.php
+++ b/src/inc/incidents.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class incidents {
   const STARTOFDAY = 0;
   const ENDOFDAY = 60*60*24;
diff --git a/src/inc/incidentsView.php b/src/inc/incidentsView.php
index ca646cb..1f90bc8 100644
--- a/src/inc/incidentsView.php
+++ b/src/inc/incidentsView.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class incidentsView {
   public static $limitOptions = [10, 15, 20, 30, 40, 50];
 
diff --git a/src/inc/intervals.php b/src/inc/intervals.php
index 10c31f7..98061e9 100644
--- a/src/inc/intervals.php
+++ b/src/inc/intervals.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class intervals {
   public static function wellFormed($i) {
     return (isset($i[0]) && isset($i[1]) && $i[0] <= $i[1]);
diff --git a/src/inc/listings.php b/src/inc/listings.php
index b3aa258..5c6977f 100644
--- a/src/inc/listings.php
+++ b/src/inc/listings.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class listings {
   public static function renderFilterDialog($form, $select) {
     global $_GET;
diff --git a/src/inc/mail.php b/src/inc/mail.php
index 7f3b353..e767d0f 100644
--- a/src/inc/mail.php
+++ b/src/inc/mail.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 use PHPMailer\PHPMailer\PHPMailer;
 use PHPMailer\PHPMailer\Exception;
 use PHPMailer\PHPMailer\SMTP;
diff --git a/src/inc/people.php b/src/inc/people.php
index deccc10..ddb3617 100644
--- a/src/inc/people.php
+++ b/src/inc/people.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class people {
   public static $filters = ["categories", "types", "companies"];
   public static $mysqlFilters = ["categories", "types"];
diff --git a/src/inc/recovery.php b/src/inc/recovery.php
index 1f8307b..a4057bc 100644
--- a/src/inc/recovery.php
+++ b/src/inc/recovery.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class recovery {
   const TOKEN_BYTES = 32;
   const EXPIRATION_TIME = 60*60*24;
diff --git a/src/inc/recurringIncidents.php b/src/inc/recurringIncidents.php
index b07bf66..258fba6 100644
--- a/src/inc/recurringIncidents.php
+++ b/src/inc/recurringIncidents.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class recurringIncidents {
   /*public static function oldAdd($worker, $type, $details, $ifirstday, $ilastday, $begins, $ends, $creator = "ME", $typedays, $days, $alreadyTimestamp = false) {
     global $con, $conf;
diff --git a/src/inc/registry.php b/src/inc/registry.php
index 363968d..8b09d14 100644
--- a/src/inc/registry.php
+++ b/src/inc/registry.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class registry {
   const LOGS_PAGINATION_LIMIT = 30;
   const REGISTRY_PAGINATION_LIMIT = 20;
diff --git a/src/inc/registryView.php b/src/inc/registryView.php
index 1767bc3..f068558 100644
--- a/src/inc/registryView.php
+++ b/src/inc/registryView.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class registryView {
   public static function renderRegistry(&$registry, &$companies, $scrollable = false, $showPersonAndCompany = true, $isForWorker = false, $isForValidationView = false) {
     global $conf, $renderRegistryAutoIncremental;
diff --git a/src/inc/schedules.php b/src/inc/schedules.php
index 87b5ed6..a987cc4 100644
--- a/src/inc/schedules.php
+++ b/src/inc/schedules.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class schedules {
   const STATUS_NO_ACTIVE_SCHEDULE = 0;
   const STATUS_HALFWAY_CONFIGURED_SCHEDULE = 1;
diff --git a/src/inc/schedulesView.php b/src/inc/schedulesView.php
index aab3a2f..69dfb3c 100644
--- a/src/inc/schedulesView.php
+++ b/src/inc/schedulesView.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class schedulesView {
   const HOUR_HEIGHT = 30;
 
diff --git a/src/inc/secondFactor.php b/src/inc/secondFactor.php
index 1b0de75..bcf8937 100644
--- a/src/inc/secondFactor.php
+++ b/src/inc/secondFactor.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../lib/GoogleAuthenticator/GoogleAuthenticator.php");
 require_once(__DIR__."/../lib/WebAuthn/WebAuthn.php");
 
diff --git a/src/inc/secondFactorView.php b/src/inc/secondFactorView.php
index 7ed9712..53c078c 100644
--- a/src/inc/secondFactorView.php
+++ b/src/inc/secondFactorView.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class secondFactorView {
   public static function renderSecret($secret) {
     for ($i = 0; $i < strlen($secret); $i++) {
diff --git a/src/inc/security.php b/src/inc/security.php
index 1d3159b..8c2214d 100644
--- a/src/inc/security.php
+++ b/src/inc/security.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class security {
   const HYPERADMIN = 0;
   const ADMIN = 2;
diff --git a/src/inc/validations.php b/src/inc/validations.php
index d3c310f..2b063f9 100644
--- a/src/inc/validations.php
+++ b/src/inc/validations.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class validations {
   const DEFAULT_REMINDER_GRACE_PERIOD = 3; // When sending email notifications about pending elements to verify,
                                    // only elements effective until the current day minus the grace period
diff --git a/src/inc/validationsView.php b/src/inc/validationsView.php
index b6b2b68..52df778 100644
--- a/src/inc/validationsView.php
+++ b/src/inc/validationsView.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class validationsView {
   public static function renderPendingValidations($userId) {
     $workers = workers::getPersonWorkers((int)$userId);
diff --git a/src/inc/visual.php b/src/inc/visual.php
index 02a3457..676d129 100644
--- a/src/inc/visual.php
+++ b/src/inc/visual.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class visual {
   const VIEW_ADMIN = 0;
   const VIEW_WORKER = 1;
diff --git a/src/inc/workers.php b/src/inc/workers.php
index 6c6e1d9..f004286 100644
--- a/src/inc/workers.php
+++ b/src/inc/workers.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class workers {
   const AFFILIATION_STATUS_NOTWORKING = 0;
   const AFFILIATION_STATUS_WORKING = 1;
