Sfoglia il codice sorgente

All main sections implemented. Project reestructuration.

Iñigo Valentin 1 anno fa
parent
commit
c14d6da74f
100 ha cambiato i file con 320 aggiunte e 1923 eliminazioni
  1. 0 0
      backend/.gitignore
  2. 0 0
      backend/app.js
  3. 5 1
      backend/app/controllers/lang.controller.js
  4. 0 0
      backend/app/controllers/license.controller.js
  5. 0 0
      backend/app/controllers/message.controller.js
  6. 0 0
      backend/app/controllers/project-type.controller.js
  7. 0 0
      backend/app/controllers/project.controller.js
  8. 0 0
      backend/app/controllers/text.controller.js
  9. 0 0
      backend/app/controllers/user.controller.js
  10. 0 0
      backend/app/models/index.js
  11. 0 0
      backend/app/models/lang.model.js
  12. 0 0
      backend/app/models/license.model.js
  13. 0 0
      backend/app/models/message.model.js
  14. 0 0
      backend/app/models/project-image.model.js
  15. 0 0
      backend/app/models/project-type.model.js
  16. 0 0
      backend/app/models/project-url-type.model.js
  17. 0 0
      backend/app/models/project-url.model.js
  18. 0 0
      backend/app/models/project.model.js
  19. 0 0
      backend/app/models/tag.model.js
  20. 0 0
      backend/app/models/text.model.js
  21. 0 0
      backend/app/models/user-text.model.js
  22. 0 0
      backend/app/models/user-url.model.js
  23. 1 0
      backend/app/models/user.model.js
  24. 0 0
      backend/app/routes/access.routes.js
  25. 0 0
      backend/app/routes/lang.routes.js
  26. 0 0
      backend/app/routes/message.routes.js
  27. 0 0
      backend/app/routes/project.routes.js
  28. 0 0
      backend/app/routes/text.routes.js
  29. 0 0
      backend/app/routes/user.routes.js
  30. 0 0
      backend/app/services/auth.service.js
  31. 0 0
      backend/app/services/auth.service.spec.js
  32. 0 0
      backend/app/services/locale.service.js
  33. 0 0
      backend/app/services/locale.service.spec.ts
  34. 0 0
      backend/config/db.config.js
  35. 0 0
      backend/env/example.env
  36. 0 0
      backend/env/test.env
  37. 0 0
      backend/package-lock.json
  38. 2 2
      backend/package.json
  39. 0 0
      frontend/.gitignore
  40. 1 1
      frontend/README.md
  41. 0 0
      frontend/angular.json
  42. 0 98
      frontend/inigovalentin/public/img/license/CC-0.svg
  43. 0 92
      frontend/inigovalentin/public/img/license/CC-BY-NC-ND.svg
  44. 0 84
      frontend/inigovalentin/public/img/license/CC-BY-NC-SA.svg
  45. 0 81
      frontend/inigovalentin/public/img/license/CC-BY-NC.svg
  46. 0 5
      frontend/inigovalentin/public/img/license/CC-BY-SA.svg
  47. 0 107
      frontend/inigovalentin/public/img/license/CC-BY.svg
  48. 0 5
      frontend/inigovalentin/public/img/license/GPLV3.svg
  49. 0 488
      frontend/inigovalentin/public/img/social/app_store.svg
  50. 0 17
      frontend/inigovalentin/public/img/social/email.svg
  51. 0 54
      frontend/inigovalentin/public/img/social/facebook.svg
  52. 0 3
      frontend/inigovalentin/public/img/social/github.svg
  53. 0 21
      frontend/inigovalentin/public/img/social/google_play.svg
  54. 0 209
      frontend/inigovalentin/public/img/social/google_plus.svg
  55. 0 37
      frontend/inigovalentin/public/img/social/linkedin.svg
  56. 0 17
      frontend/inigovalentin/public/img/social/telegram.svg
  57. 0 21
      frontend/inigovalentin/public/img/social/twitter.svg
  58. 0 46
      frontend/inigovalentin/public/img/social/web.svg
  59. BIN
      frontend/inigovalentin/public/img/tag/android.png
  60. BIN
      frontend/inigovalentin/public/img/tag/angular.png
  61. BIN
      frontend/inigovalentin/public/img/tag/c.png
  62. BIN
      frontend/inigovalentin/public/img/tag/cpp.png
  63. BIN
      frontend/inigovalentin/public/img/tag/css.png
  64. BIN
      frontend/inigovalentin/public/img/tag/html.png
  65. BIN
      frontend/inigovalentin/public/img/tag/ios.png
  66. BIN
      frontend/inigovalentin/public/img/tag/java.png
  67. BIN
      frontend/inigovalentin/public/img/tag/js.png
  68. BIN
      frontend/inigovalentin/public/img/tag/lua.png
  69. BIN
      frontend/inigovalentin/public/img/tag/mariadb.png
  70. BIN
      frontend/inigovalentin/public/img/tag/nodejs.png
  71. BIN
      frontend/inigovalentin/public/img/tag/ogre.png
  72. BIN
      frontend/inigovalentin/public/img/tag/php.png
  73. BIN
      frontend/inigovalentin/public/img/tag/python.png
  74. BIN
      frontend/inigovalentin/public/img/tag/sqlite.png
  75. BIN
      frontend/inigovalentin/public/img/tag/swift.png
  76. BIN
      frontend/inigovalentin/public/img/tag/tag.xcf
  77. BIN
      frontend/inigovalentin/public/img/tag/web.png
  78. 0 17
      frontend/inigovalentin/src/app/app.component.ts
  79. 0 13
      frontend/inigovalentin/src/app/app.routes.ts
  80. 0 31
      frontend/inigovalentin/src/app/components/footer/footer.component.html
  81. 0 25
      frontend/inigovalentin/src/app/components/footer/footer.component.ts
  82. 0 51
      frontend/inigovalentin/src/app/components/message/message.component.html
  83. 0 10
      frontend/inigovalentin/src/app/components/navbar/navbar.component.html
  84. 0 12
      frontend/inigovalentin/src/app/components/navbar/navbar.component.ts
  85. 0 12
      frontend/inigovalentin/src/app/components/project/project.component.html
  86. 0 23
      frontend/inigovalentin/src/app/components/project/project.component.spec.ts
  87. 0 16
      frontend/inigovalentin/src/app/components/project/project.component.ts
  88. 0 42
      frontend/inigovalentin/src/app/pages/home/home.component.ts
  89. 0 31
      frontend/inigovalentin/src/app/pages/profile/profile.component.ts
  90. 0 108
      frontend/inigovalentin/src/app/pages/project/project.component.ts
  91. 0 37
      frontend/inigovalentin/src/app/pages/projects/projects.component.ts
  92. 0 11
      frontend/inigovalentin/src/app/services/user.service.ts
  93. 0 1
      frontend/inigovalentin/src/environments/environment.development.ts
  94. 0 1
      frontend/inigovalentin/src/environments/environment.ts
  95. 0 9
      frontend/inigovalentin/tailwind.config.js
  96. 309 83
      frontend/package-lock.json
  97. 2 1
      frontend/package.json
  98. 0 0
      frontend/public/favicon.ico
  99. 0 0
      frontend/public/font/Handwritten.ttf
  100. 0 0
      frontend/public/font/NotoMono-Regular.ttf

+ 0 - 0
backend/inigovalentin/.gitignore → backend/.gitignore


+ 0 - 0
backend/inigovalentin/server.js → backend/app.js


+ 5 - 1
backend/inigovalentin/app/controllers/lang.controller.js → backend/app/controllers/lang.controller.js

@@ -61,7 +61,11 @@ exports.create = (req, res) => {
  * @param res The request to be sent by the server.
  */
 exports.findAll = (req, res) => {
-    Lang.findAll()
+    Lang.findAll({
+        where: {active: true},
+        attributes: {exclude: ['priority', 'active']},
+        order: [['priority', 'ASC']]
+    })
     .then(data => {res.send(data);})
     .catch(err => {
         logger.error("Error retrieving language: " + err);

+ 0 - 0
backend/inigovalentin/app/controllers/license.controller.js → backend/app/controllers/license.controller.js


+ 0 - 0
backend/inigovalentin/app/controllers/message.controller.js → backend/app/controllers/message.controller.js


+ 0 - 0
backend/inigovalentin/app/controllers/project-type.controller.js → backend/app/controllers/project-type.controller.js


+ 0 - 0
backend/inigovalentin/app/controllers/project.controller.js → backend/app/controllers/project.controller.js


+ 0 - 0
backend/inigovalentin/app/controllers/text.controller.js → backend/app/controllers/text.controller.js


+ 0 - 0
backend/inigovalentin/app/controllers/user.controller.js → backend/app/controllers/user.controller.js


+ 0 - 0
backend/inigovalentin/app/models/index.js → backend/app/models/index.js


+ 0 - 0
backend/inigovalentin/app/models/lang.model.js → backend/app/models/lang.model.js


+ 0 - 0
backend/inigovalentin/app/models/license.model.js → backend/app/models/license.model.js


+ 0 - 0
backend/inigovalentin/app/models/message.model.js → backend/app/models/message.model.js


+ 0 - 0
backend/inigovalentin/app/models/project-image.model.js → backend/app/models/project-image.model.js


+ 0 - 0
backend/inigovalentin/app/models/project-type.model.js → backend/app/models/project-type.model.js


+ 0 - 0
backend/inigovalentin/app/models/project-url-type.model.js → backend/app/models/project-url-type.model.js


+ 0 - 0
backend/inigovalentin/app/models/project-url.model.js → backend/app/models/project-url.model.js


+ 0 - 0
backend/inigovalentin/app/models/project.model.js → backend/app/models/project.model.js


+ 0 - 0
backend/inigovalentin/app/models/tag.model.js → backend/app/models/tag.model.js


+ 0 - 0
backend/inigovalentin/app/models/text.model.js → backend/app/models/text.model.js


+ 0 - 0
backend/inigovalentin/app/models/user-text.model.js → backend/app/models/user-text.model.js


+ 0 - 0
backend/inigovalentin/app/models/user-url.model.js → backend/app/models/user-url.model.js


+ 1 - 0
backend/inigovalentin/app/models/user.model.js → backend/app/models/user.model.js

@@ -13,6 +13,7 @@ module.exports = (sequelize, Sequelize) => {
     firstName: {type: Sequelize.STRING(128)},
     lastName: {type: Sequelize.STRING(128)},
     image: {type: Sequelize.STRING(64)},
+    year: {type: Sequelize.INTEGER},
     password: {allowNull: false, type: Sequelize.STRING(256)},
     salt: {allowNull: false, type: Sequelize.STRING(64)},
     active: {allowNull: false, default: true, type: Sequelize.BOOLEAN},

+ 0 - 0
backend/inigovalentin/app/routes/access.routes.js → backend/app/routes/access.routes.js


+ 0 - 0
backend/inigovalentin/app/routes/lang.routes.js → backend/app/routes/lang.routes.js


+ 0 - 0
backend/inigovalentin/app/routes/message.routes.js → backend/app/routes/message.routes.js


+ 0 - 0
backend/inigovalentin/app/routes/project.routes.js → backend/app/routes/project.routes.js


+ 0 - 0
backend/inigovalentin/app/routes/text.routes.js → backend/app/routes/text.routes.js


+ 0 - 0
backend/inigovalentin/app/routes/user.routes.js → backend/app/routes/user.routes.js


+ 0 - 0
backend/inigovalentin/app/services/auth.service.js → backend/app/services/auth.service.js


+ 0 - 0
backend/inigovalentin/app/services/auth.service.spec.js → backend/app/services/auth.service.spec.js


+ 0 - 0
backend/inigovalentin/app/services/locale.service.js → backend/app/services/locale.service.js


+ 0 - 0
backend/inigovalentin/app/services/locale.service.spec.ts → backend/app/services/locale.service.spec.ts


+ 0 - 0
backend/inigovalentin/config/db.config.js → backend/config/db.config.js


+ 0 - 0
backend/inigovalentin/env/example.env → backend/env/example.env


+ 0 - 0
backend/inigovalentin/env/test.env → backend/env/test.env


+ 0 - 0
backend/inigovalentin/package-lock.json → backend/package-lock.json


+ 2 - 2
backend/inigovalentin/package.json → backend/package.json

@@ -4,8 +4,8 @@
   "description": "Iñigo Valentin's Website",
   "main": "index.js",
   "scripts": {
-    "start": "nodejs --env-file=env/pro.env server.js",
-    "start-dev": "nodejs --env-file=env/dev.env server.js",
+    "start": "nodejs --env-file=env/pro.env app.js",
+    "start-dev": "nodejs --env-file=env/dev.env app.js",
     "test": "jest"
   },
   "author": "Iñigo Valentin",

+ 0 - 0
frontend/inigovalentin/.gitignore → frontend/.gitignore


+ 1 - 1
frontend/inigovalentin/README.md → frontend/README.md

@@ -1,4 +1,4 @@
-# Inigovalentin
+# Frontend
 
 This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.2.8.
 

+ 0 - 0
frontend/inigovalentin/angular.json → frontend/angular.json


+ 0 - 98
frontend/inigovalentin/public/img/license/CC-0.svg

@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="88px" height="31px" viewBox="-0.5 -0.101 88 31" enable-background="new -0.5 -0.101 88 31" xml:space="preserve">
-<g>
-	<path fill="#FFFFFF" d="M1.803,0.482L84.93,0.631c1.161,0,2.198-0.173,2.198,2.333L87.025,30.52h-87.32V2.862
-		C-0.295,1.626-0.177,0.482,1.803,0.482z"/>
-	<g>
-		<ellipse fill="#FFFFFF" cx="13.887" cy="15.502" rx="11.101" ry="11.174"/>
-	</g>
-	<path d="M23.271,4.061c3.484,2.592,5.754,6.744,5.755,11.44c-0.001,4.272-1.88,8.095-4.842,10.705h62.853V4.061H23.271z"/>
-	<g>
-		<path fill="#FFFFFF" d="M35.739,7.559c0.392,0,0.728,0.059,1.002,0.173c0.276,0.116,0.5,0.268,0.674,0.456
-			c0.173,0.189,0.299,0.405,0.379,0.647c0.079,0.242,0.118,0.494,0.118,0.753c0,0.253-0.039,0.503-0.118,0.749
-			c-0.08,0.244-0.206,0.462-0.379,0.65c-0.174,0.189-0.397,0.341-0.674,0.456c-0.274,0.114-0.61,0.173-1.002,0.173h-1.452v2.267
-			h-1.382V7.559H35.739z M35.36,10.535c0.158,0,0.312-0.012,0.457-0.035c0.147-0.023,0.276-0.069,0.388-0.137
-			c0.112-0.068,0.201-0.164,0.269-0.288s0.101-0.287,0.101-0.487c0-0.2-0.033-0.362-0.101-0.487
-			c-0.067-0.124-0.157-0.221-0.269-0.287c-0.111-0.068-0.24-0.114-0.388-0.138C35.671,8.652,35.518,8.64,35.36,8.64h-1.073v1.896
-			L35.36,10.535L35.36,10.535z"/>
-		<path fill="#FFFFFF" d="M43.751,13.4c-0.476,0.417-1.133,0.625-1.972,0.625c-0.851,0-1.509-0.207-1.976-0.62
-			c-0.466-0.412-0.699-1.052-0.699-1.913V7.559h1.381v3.934c0,0.171,0.016,0.338,0.045,0.505c0.029,0.165,0.091,0.311,0.185,0.439
-			c0.094,0.126,0.225,0.229,0.392,0.309c0.167,0.081,0.392,0.12,0.673,0.12c0.493,0,0.833-0.11,1.021-0.332
-			c0.188-0.222,0.282-0.568,0.282-1.04V7.559h1.382v3.934C44.464,12.348,44.227,12.983,43.751,13.4z"/>
-		<path fill="#FFFFFF" d="M49.07,7.559c0.3,0,0.572,0.027,0.818,0.081c0.244,0.054,0.457,0.14,0.633,0.261
-			c0.177,0.121,0.312,0.282,0.41,0.482c0.096,0.201,0.146,0.45,0.146,0.745c0,0.318-0.072,0.584-0.216,0.796
-			c-0.146,0.212-0.357,0.388-0.639,0.523c0.387,0.112,0.676,0.31,0.865,0.589c0.189,0.281,0.286,0.62,0.286,1.015
-			c0,0.319-0.062,0.595-0.187,0.828c-0.123,0.232-0.289,0.423-0.496,0.571c-0.209,0.148-0.445,0.257-0.713,0.327
-			c-0.269,0.07-0.541,0.105-0.822,0.105h-3.047V7.559H49.07z M48.895,10.119c0.246,0,0.448-0.059,0.607-0.178
-			c0.158-0.118,0.236-0.309,0.236-0.576c0-0.147-0.025-0.269-0.078-0.363c-0.053-0.093-0.123-0.168-0.211-0.221
-			c-0.09-0.053-0.189-0.091-0.305-0.109C49.029,8.65,48.912,8.64,48.789,8.64h-1.294v1.48L48.895,10.119L48.895,10.119
-			L48.895,10.119z M48.975,12.804c0.135,0,0.264-0.014,0.387-0.04c0.123-0.026,0.23-0.072,0.326-0.133
-			c0.092-0.062,0.168-0.147,0.226-0.254c0.056-0.104,0.083-0.241,0.083-0.406c0-0.324-0.092-0.557-0.271-0.695
-			c-0.182-0.138-0.424-0.208-0.723-0.208h-1.505v1.738h1.479v-0.002H48.975z"/>
-		<path fill="#FFFFFF" d="M54.143,7.559v5.156h3.062v1.168H52.76V7.559H54.143z"/>
-		<path fill="#FFFFFF" d="M59.748,7.559v6.324h-1.382V7.559H59.748z"/>
-		<path fill="#FFFFFF" d="M65.451,9.247c-0.082-0.132-0.186-0.249-0.309-0.349c-0.123-0.102-0.263-0.18-0.418-0.236
-			c-0.156-0.057-0.316-0.084-0.488-0.084c-0.312,0-0.574,0.062-0.793,0.183c-0.217,0.12-0.394,0.283-0.525,0.486
-			c-0.136,0.204-0.232,0.436-0.296,0.695c-0.062,0.259-0.093,0.528-0.093,0.806c0,0.267,0.031,0.524,0.093,0.776
-			c0.062,0.251,0.16,0.477,0.296,0.678c0.134,0.201,0.312,0.361,0.525,0.483c0.219,0.12,0.481,0.181,0.793,0.181
-			c0.424,0,0.752-0.13,0.99-0.389c0.236-0.26,0.383-0.602,0.437-1.028H67c-0.034,0.396-0.126,0.753-0.271,1.072
-			c-0.146,0.318-0.342,0.591-0.582,0.815c-0.238,0.225-0.521,0.396-0.845,0.513c-0.323,0.119-0.678,0.178-1.065,0.178
-			c-0.479,0-0.914-0.084-1.297-0.252c-0.385-0.169-0.709-0.398-0.973-0.695c-0.265-0.295-0.468-0.642-0.607-1.04
-			c-0.142-0.399-0.211-0.829-0.211-1.289c0-0.473,0.069-0.911,0.211-1.316c0.141-0.404,0.344-0.758,0.607-1.059
-			c0.264-0.302,0.588-0.536,0.973-0.708c0.384-0.172,0.815-0.258,1.297-0.258c0.348,0,0.676,0.051,0.981,0.15
-			c0.308,0.102,0.583,0.248,0.827,0.44c0.243,0.191,0.443,0.43,0.604,0.712c0.158,0.283,0.259,0.608,0.301,0.975h-1.34
-			C65.586,9.524,65.533,9.377,65.451,9.247z"/>
-		<path fill="#FFFFFF" d="M35.615,16.418c0.405,0,0.782,0.062,1.131,0.192c0.35,0.13,0.651,0.324,0.906,0.585
-			c0.255,0.26,0.455,0.586,0.599,0.975c0.144,0.391,0.216,0.849,0.216,1.371c0,0.463-0.059,0.888-0.176,1.277
-			c-0.118,0.391-0.295,0.727-0.532,1.012c-0.238,0.281-0.534,0.504-0.89,0.668c-0.354,0.16-0.772,0.242-1.254,0.242h-2.71v-6.322
-			H35.615z M35.519,21.572c0.199,0,0.393-0.031,0.581-0.098c0.188-0.062,0.354-0.173,0.502-0.323
-			c0.146-0.151,0.264-0.347,0.352-0.59c0.088-0.241,0.132-0.536,0.132-0.886c0-0.317-0.031-0.606-0.093-0.863
-			c-0.062-0.256-0.162-0.479-0.304-0.659c-0.141-0.183-0.326-0.323-0.559-0.421c-0.231-0.098-0.517-0.146-0.858-0.146h-0.984v3.986
-			H35.519z"/>
-		<path fill="#FFFFFF" d="M39.8,18.289c0.141-0.403,0.344-0.756,0.606-1.059c0.265-0.303,0.589-0.538,0.973-0.709
-			c0.385-0.171,0.816-0.257,1.298-0.257c0.487,0,0.921,0.086,1.303,0.257c0.381,0.171,0.704,0.406,0.969,0.709
-			c0.264,0.303,0.466,0.652,0.605,1.059c0.143,0.404,0.213,0.845,0.213,1.316c0,0.46-0.07,0.891-0.213,1.288
-			c-0.142,0.397-0.344,0.744-0.605,1.04c-0.266,0.295-0.588,0.525-0.969,0.695c-0.382,0.166-0.815,0.252-1.303,0.252
-			c-0.481,0-0.913-0.086-1.298-0.252c-0.384-0.17-0.708-0.4-0.973-0.695c-0.263-0.296-0.466-0.645-0.606-1.04
-			c-0.14-0.397-0.211-0.828-0.211-1.288C39.589,19.134,39.659,18.694,39.8,18.289z M41.062,20.379
-			c0.062,0.252,0.16,0.479,0.295,0.68c0.135,0.2,0.312,0.359,0.527,0.482c0.218,0.121,0.481,0.183,0.792,0.183
-			c0.312,0,0.576-0.062,0.792-0.183c0.218-0.121,0.394-0.281,0.529-0.482c0.134-0.2,0.231-0.428,0.295-0.68
-			c0.062-0.25,0.092-0.508,0.092-0.774c0-0.276-0.03-0.547-0.092-0.806c-0.062-0.262-0.161-0.492-0.295-0.696
-			c-0.136-0.201-0.312-0.365-0.529-0.485c-0.216-0.121-0.48-0.184-0.792-0.184c-0.311,0-0.574,0.062-0.792,0.184
-			c-0.216,0.12-0.393,0.284-0.527,0.485c-0.135,0.204-0.233,0.437-0.295,0.696c-0.062,0.259-0.093,0.527-0.093,0.806
-			C40.97,19.871,41.001,20.129,41.062,20.379z"/>
-		<path fill="#FFFFFF" d="M49.092,16.418l1.471,4.348h0.02l1.393-4.348h1.942v6.322h-1.294v-4.48h-0.02l-1.539,4.48H50l-1.54-4.437
-			h-0.019v4.437h-1.293v-6.322H49.092z"/>
-		<path fill="#FFFFFF" d="M58.764,16.418l2.35,6.322H59.68l-0.476-1.408h-2.351l-0.492,1.408h-1.391l2.377-6.322H58.764z
-			 M58.844,20.297l-0.793-2.322h-0.018l-0.817,2.322H58.844z"/>
-		<path fill="#FFFFFF" d="M63.547,16.418v6.322h-1.382v-6.322H63.547z"/>
-		<path fill="#FFFFFF" d="M66.604,16.418l2.623,4.242h0.018v-4.242h1.294v6.322h-1.384l-2.611-4.234h-0.02v4.234H65.23v-6.322
-			H66.604z"/>
-	</g>
-	<path d="M85.852,0H1.147C0.239,0-0.5,0.744-0.5,1.658v28.969C-0.5,30.834-0.333,31-0.128,31h87.256
-		c0.205,0,0.372-0.166,0.372-0.373V1.658C87.5,0.744,86.762,0,85.852,0z M1.147,0.75h84.705c0.498,0,0.902,0.406,0.902,0.908
-		c0,0,0,20.121,0,28.557H0.245v-8.426c0-8.435,0-20.131,0-20.131C0.245,1.157,0.65,0.75,1.147,0.75z"/>
-	<g>
-		<ellipse fill="#FFFFFF" cx="14.156" cy="15.661" rx="11.004" ry="11.076"/>
-		<path id="text2809_4_" d="M14.22,8.746c-3.862,0-4.834,3.669-4.834,6.779c0,3.111,0.971,6.779,4.834,6.779
-			c3.863,0,4.834-3.67,4.834-6.779C19.054,12.414,18.083,8.746,14.22,8.746z M14.22,11.301c0.157,0,0.3,0.024,0.435,0.06
-			c0.278,0.24,0.414,0.573,0.147,1.038l-2.572,4.76c-0.079-0.603-0.091-1.195-0.091-1.634C12.139,14.155,12.233,11.301,14.22,11.301
-			z M16.146,13.494c0.137,0.731,0.155,1.493,0.155,2.03c0,1.37-0.094,4.223-2.08,4.223c-0.156,0-0.301-0.017-0.435-0.049
-			c-0.025-0.01-0.049-0.019-0.074-0.025c-0.04-0.012-0.084-0.024-0.122-0.041c-0.442-0.188-0.721-0.531-0.319-1.139L16.146,13.494z"
-			/>
-		<path id="path2815_4_" d="M14.195,3.748c-3.245,0-5.98,1.137-8.21,3.422c-1.128,1.135-1.99,2.431-2.589,3.876
-			c-0.585,1.43-0.876,2.921-0.876,4.478c0,1.57,0.291,3.062,0.876,4.479s1.434,2.69,2.548,3.826
-			c1.128,1.121,2.395,1.985,3.802,2.588c1.421,0.59,2.903,0.884,4.449,0.884c1.547,0,3.05-0.304,4.499-0.907
-			c1.448-0.604,2.74-1.471,3.883-2.605c1.101-1.078,1.934-2.317,2.49-3.719c0.571-1.415,0.853-2.932,0.853-4.544
-			c0-1.598-0.281-3.112-0.852-4.528c-0.571-1.429-1.407-2.693-2.507-3.801C20.263,4.895,17.469,3.748,14.195,3.748z M14.244,5.867
-			c2.646,0,4.904,0.944,6.784,2.836c0.906,0.912,1.6,1.954,2.073,3.119c0.473,1.164,0.713,2.398,0.713,3.703
-			c0,2.707-0.92,4.952-2.744,6.746c-0.948,0.927-2.012,1.638-3.196,2.128c-1.17,0.489-2.375,0.732-3.63,0.732
-			c-1.268,0-2.481-0.239-3.638-0.717c-1.156-0.489-2.193-1.191-3.113-2.104c-0.92-0.925-1.629-1.97-2.13-3.135
-			c-0.487-1.178-0.738-2.391-0.738-3.653c0-1.276,0.251-2.497,0.738-3.662c0.501-1.178,1.211-2.235,2.13-3.175
-			C9.317,6.809,11.57,5.867,14.244,5.867z"/>
-	</g>
-</g>
-</svg>

File diff suppressed because it is too large
+ 0 - 92
frontend/inigovalentin/public/img/license/CC-BY-NC-ND.svg


File diff suppressed because it is too large
+ 0 - 84
frontend/inigovalentin/public/img/license/CC-BY-NC-SA.svg


File diff suppressed because it is too large
+ 0 - 81
frontend/inigovalentin/public/img/license/CC-BY-NC.svg


File diff suppressed because it is too large
+ 0 - 5
frontend/inigovalentin/public/img/license/CC-BY-SA.svg


File diff suppressed because it is too large
+ 0 - 107
frontend/inigovalentin/public/img/license/CC-BY.svg


File diff suppressed because it is too large
+ 0 - 5
frontend/inigovalentin/public/img/license/GPLV3.svg


File diff suppressed because it is too large
+ 0 - 488
frontend/inigovalentin/public/img/social/app_store.svg


+ 0 - 17
frontend/inigovalentin/public/img/social/email.svg

@@ -1,17 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
-  <defs id="defs3051">
-    <style type="text/css" id="current-color-scheme">
-      .ColorScheme-Text {
-        color:#4d4d4d;
-      }
-      </style>
-  </defs>
-  <g
-     transform="translate(-421.71429,-525.79074)">
-    <path
-       style="opacity:1;fill:currentColor;fill-opacity:1;stroke:none" 
-       d="m 422.71429,528.79074 0,1 0,14 0,0.41406 0,0.58594 1,0 19,0 0,-0.58594 0,-0.41406 0,-1 0,-14 -0.0488,0 -0.95117,0 -17.53711,0 -0.46289,0 -1,0 z m 1,1 0.0488,0 5.97461,5.97656 -6.02344,6.02344 0,-12 z m 1.46289,0 15.07422,0 -7.53711,7.53711 -7.53711,-7.53711 z m 16.48828,0 0.0488,0 0,12 -6.02344,-6.02344 5.97461,-5.97656 z m -11.2207,6.68359 2.26953,2.26758 2.26953,-2.26758 6.26758,6.26758 0.46289,0.46289 0,0.58594 -18,0 0,-0.58594 0.46289,-0.46289 6.26758,-6.26758 z"
-       id="rect4144" 
-        class="ColorScheme-Text"/>
-  </g>
-</svg>

+ 0 - 54
frontend/inigovalentin/public/img/social/facebook.svg

@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="256" height="256" id="svg2" sodipodi:version="0.32" inkscape:version="0.47 r22583" sodipodi:docname="facebook.svg" version="1.0" inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <title id="title2910">facebook web</title>
-  <defs id="defs4">
-    <linearGradient inkscape:collect="always" id="linearGradient2555">
-      <stop style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" offset="0" id="stop2557"/>
-      <stop style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" offset="1" id="stop2559"/>
-    </linearGradient>
-    <linearGradient inkscape:collect="always" xlink:href="#linearGradient2555" id="linearGradient2449" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-0.5914584,0,0,0.5914584,210.02161,142.23241)" x1="-344.15295" y1="274.711" x2="-395.84943" y2="425.39993"/>
-  </defs>
-  <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.98994949" inkscape:cx="204.60201" inkscape:cy="64.459739" inkscape:document-units="px" inkscape:current-layer="layer1" inkscape:window-width="682" inkscape:window-height="762" inkscape:window-x="1" inkscape:window-y="193" showgrid="false" inkscape:window-maximized="0"/>
-  <metadata id="metadata7">
-    <rdf:RDF>
-      <cc:Work rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
-        <dc:title>facebook web</dc:title>
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>User:ZyMOS</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:subject>
-          <rdf:Bag/>
-        </dc:subject>
-        <cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/"/>
-        <dc:description/>
-        <dc:contributor>
-          <cc:Agent>
-            <dc:title/>
-          </cc:Agent>
-        </dc:contributor>
-        <dc:publisher>
-          <cc:Agent>
-            <dc:title>Open Icon Library</dc:title>
-          </cc:Agent>
-        </dc:publisher>
-      </cc:Work>
-      <cc:License rdf:about="http://creativecommons.org/licenses/publicdomain/">
-        <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
-        <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
-        <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/>
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(-373.642,-318.344)">
-    <rect inkscape:export-ydpi="7.7063322" inkscape:export-xdpi="7.7063322" inkscape:export-filename="C:\Documents and Settings\Molumen\Desktop\path3511111.png" transform="scale(-1,1)" ry="35.487503" rx="35.487503" y="328.34399" x="-619.64203" height="236" width="236" id="rect1942" style="fill:#0037c1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.875;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.875, 1.75;stroke-dashoffset:0;stroke-opacity:1"/>
-    <path inkscape:export-ydpi="7.7063322" inkscape:export-xdpi="7.7063322" inkscape:export-filename="C:\Documents and Settings\Molumen\Desktop\path3511111.png" sodipodi:nodetypes="ccccsssc" id="path1950" d="M 557.29062,338.43314 L 445.99327,338.43314 C 416.53255,338.43314 392.81507,362.34527 392.81507,392.04777 L 392.81507,500.64007 C 393.76867,523.8254 397.43678,509.16812 404.41887,483.49194 C 412.53354,453.65102 438.96056,427.56963 471.144,408.02312 C 495.7086,393.10398 523.20395,383.5772 573.25282,382.6709 C 601.63697,382.15694 599.13112,345.83025 557.29062,338.43314 z" style="opacity:0.30042916;fill:url(#linearGradient2449);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.875;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.875, 1.75;stroke-dashoffset:0;stroke-opacity:1"/>
-    <g id="Layer_3" transform="matrix(1.7982054,0,0,1.8129643,376.63343,326.35613)">
-      <path d="M 93.376,117.012 L 72.203,117.012 L 72.203,65.767 L 61.625,65.767 L 61.625,48.107 L 72.203,48.107 L 72.203,37.504 C 72.203,23.097 78.176,14.53 95.146,14.53 L 109.274,14.53 L 109.274,32.192 L 100.443,32.192 C 93.837,32.192 93.4,34.66 93.4,39.266 L 93.376,48.105 L 109.374,48.105 L 107.502,65.765 L 93.376,65.765 L 93.376,117.012 z" id="path3336" style="fill:#ffffff"/>
-    </g>
-  </g>
-</svg>

File diff suppressed because it is too large
+ 0 - 3
frontend/inigovalentin/public/img/social/github.svg


+ 0 - 21
frontend/inigovalentin/public/img/social/google_play.svg

@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1"
-	 id="Layer_2" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg" sodipodi:docname="Google_Play_logo.svg" inkscape:version="0.48.4 r9939"
-	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="30 336.7 120.9 129.2"
-	 style="enable-background:new 30 336.7 120.9 129.2;" xml:space="preserve">
-<style type="text/css">
-	.st0{fill:#FFD400;}
-	.st1{fill:#FF3333;}
-	.st2{fill:#48FF48;}
-	.st3{fill:#3BCCFF;}
-</style>
-<path id="path16" inkscape:connector-curvature="0" class="st0" d="M119.2,421.2c15.3-8.4,27-14.8,28-15.3c3.2-1.7,6.5-6.2,0-9.7
-	c-2.1-1.1-13.4-7.3-28-15.3l-20.1,20.2L119.2,421.2z"/>
-<path id="path23" inkscape:connector-curvature="0" class="st1" d="M99.1,401.1l-64.2,64.7c1.5,0.2,3.2-0.2,5.2-1.3
-	c4.2-2.3,48.8-26.7,79.1-43.3L99.1,401.1L99.1,401.1z"/>
-<path id="path30" inkscape:connector-curvature="0" class="st2" d="M99.1,401.1l20.1-20.2c0,0-74.6-40.7-79.1-43.1
-	c-1.7-1-3.6-1.3-5.3-1L99.1,401.1z"/>
-<path id="path37" inkscape:connector-curvature="0" class="st3" d="M99.1,401.1l-64.3-64.3c-2.6,0.6-4.8,2.9-4.8,7.6
-	c0,7.5,0,107.5,0,113.8c0,4.3,1.7,7.4,4.9,7.7L99.1,401.1z"/>
-</svg>

+ 0 - 209
frontend/inigovalentin/public/img/social/google_plus.svg

@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="300.537px" height="300px" viewBox="0 0 300.537 300" enable-background="new 0 0 300.537 300" xml:space="preserve">
-<g id="Background_2_">
-</g>
-<g id="Circle_1_">
-	<g id="Ellipse_1__x2B__Shape_1_2_" enable-background="new    ">
-		<defs>
-			<circle id="SVGID_1_" enable-background="new    " cx="150.269" cy="150" r="147.47"/>
-		</defs>
-		<clipPath id="SVGID_2_">
-			<use xlink:href="#SVGID_1_"  overflow="visible"/>
-		</clipPath>
-		<g transform="matrix(1 0 0 1 -1.891906e-007 -5.580137e-008)" clip-path="url(#SVGID_2_)">
-			
-				<image overflow="visible" width="560" height="559" id="Ellipse_1__x2B__Shape_1_xA0_影像" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjEAAAIxCAYAAAC8b+n0AAAACXBIWXMAABTqAAAU6gFxlYZXAAAA
-GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAJmlJREFUeNrs3Q1640Z2sG2U1J5x
-9pUFZEdJFpp1uNvdJEJQkq2WpRZ/UMA5de57vrlmvuSNLBVJ1MNCAZgmAICE2v/913/+z+k//9tQ
-AACJ/O+DMQAAMhIxAICIAQAQMQAAIgYAEDEAACIGAEDEAAAiBgBAxAAAiBgAABEDAIgYAAARAwAg
-YgAAEQMAIGIAAEQMACBiAABEDACAiAEAEDEAgIgBABAxAAAiBgAQMQAAIgYAQMQAACIGAEDEAACI
-GAAAEQMAiBgAABEDACBiAAARAwAgYgAARAwAIGIAAEQMAICIAQAQMQCAiAEAEDEAACIGABAxAAAi
-BgBAxAAAIgYAQMQAAIgYAAARAwCIGAAAEQMAIGIAABEDACBiAABEDAAgYgAARAwAgIgBABAxAICI
-AQAQMQAAIgYAEDEAACIGAEDEAACIGABAxAAAiBgAABEDAIgYAAARAwAgYgAAEQMAIGIAAEQMAICI
-AQBEDACAiAEAEDEAgIgBABAxAAAiBgAQMQAAIgYAQMQAAIgYAEDEAACIGAAAEQMAiBgAABEDACBi
-AAARAwAgYgAARAwAgIgBAEQMAICIAQAQMQCAiAEAEDEAACIGABAxAAAiBgBAxAAAiBgAQMQAAIgY
-AAARAwCIGAAAEQMAIGIAABEDACBiAABEDACAiAEARAwAgIgBABAxAICIAQAQMQAAIgYAEDEAACIG
-AEDEAACIGABAxAAAiBgAABEDAIgYAAARAwAgYgAARAwAIGIAAEQMAICIAQBEDACAiAEAEDEAgIgB
-ABAxAAAiBgBAxAAAIgYAQMQAAIgYAEDEAACIGAAAEQMAiBgAABEDACBiAABEDAAgYgAARAwAgIgB
-AEQMAICIAQAQMQCAiAEAEDEAACIGAEDEAAAiBgBAxAAAiBgAQMQAAIgYAAARAwCIGAAAEQMAIGIA
-AEQMACBiAABEDACAiAEARAwAgIgBABAxAICIAQAQMQAAIgYAQMQAACIGAEDEAABc7YshgL7ml3/P
-89//s/nlfzc//+/e/L+dXv0PXv3P5jf//69/1qK1Nj2007eT5T+np//+eP7vT/+75uUARAyIis+i
-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" transform="matrix(0.5295 0 0 0.5295 2.0034 2)">
-			</image>
-		</g>
-	</g>
-</g>
-<g id="Logo_1_">
-	<g id="G_x2B_">
-		<g>
-			<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M173.723,136.102h-25.044h-33.227v24.653h33.227
-				c-4.974,13.099-17.637,22.412-32.48,22.412c-19.186,0-34.74-15.554-34.74-34.739s15.554-34.739,34.74-34.739
-				c8.548,0,16.369,3.096,22.42,8.217l17.394-17.032c-10.496-9.601-24.468-15.466-39.814-15.466
-				c-32.596,0-59.02,26.424-59.02,59.019c0,32.596,26.424,59.02,59.02,59.02c32.595,0,59.019-26.424,59.019-59.02
-				c0-4.228-0.448-8.35-1.293-12.326H173.723z M222.657,137.968v-20.544h-14.941v20.544h-20.545v14.942h20.545v20.544h14.941V152.91
-				h20.545v-14.942H222.657z"/>
-		</g>
-	</g>
-</g>
-</svg>

+ 0 - 37
frontend/inigovalentin/public/img/social/linkedin.svg

@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 15.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1"
-	 id="svg2" sodipodi:version="0.32" inkscape:version="0.47 r22583" sodipodi:docname="linkedin.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"
-	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="256px" height="256px"
-	 viewBox="0 0 256 256" enable-background="new 0 0 256 256" xml:space="preserve">
-<sodipodi:namedview  showgrid="false" inkscape:window-maximized="0" pagecolor="#ffffff" bordercolor="#666666" id="base" borderopacity="1.0" inkscape:cx="138.80354" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.24748737" inkscape:cy="94.798647" inkscape:document-units="px" inkscape:current-layer="layer1" inkscape:window-width="853" inkscape:window-height="674" inkscape:window-x="1" inkscape:window-y="281">
-	</sodipodi:namedview>
-<g id="layer1" transform="translate(-373.642,-318.344)" inkscape:label="Layer 1" inkscape:groupmode="layer">
-	
-		<path id="rect1942" inkscape:export-filename="C:\Documents and Settings\Molumen\Desktop\path3511111.png" inkscape:export-xdpi="7.7063322" inkscape:export-ydpi="7.7063322" fill="#1D8CB5" d="
-		M583.659,328.849H419.625c-19.599,0-35.487,15.888-35.487,35.487v164.015c0,19.599,15.888,35.486,35.487,35.486h164.033
-		c19.599,0,35.487-15.888,35.487-35.486V364.337C619.146,344.738,603.257,328.849,583.659,328.849z"/>
-	
-		<linearGradient id="path1950_1_" gradientUnits="userSpaceOnUse" x1="-808.8727" y1="199.8918" x2="-860.5692" y2="49.2029" gradientTransform="matrix(-0.5915 0 0 -0.5915 -34.5417 412.5453)">
-		<stop  offset="0" style="stop-color:#FFFFFF"/>
-		<stop  offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
-	</linearGradient>
-	
-		<path id="path1950" inkscape:export-filename="C:\Documents and Settings\Molumen\Desktop\path3511111.png" inkscape:export-xdpi="7.7063322" sodipodi:nodetypes="ccccsssc" inkscape:export-ydpi="7.7063322" opacity="0.7811" fill="url(#path1950_1_)" enable-background="new    " d="
-		M557.056,338.895H446.227c-29.337,0-52.955,23.81-52.955,53.385v108.127c0.95,23.087,4.603,8.491,11.555-17.075
-		c8.081-29.713,34.396-55.682,66.445-75.145c24.461-14.855,51.84-24.341,101.679-25.244
-		C601.216,382.432,598.721,346.26,557.056,338.895z"/>
-</g>
-<g id="layer1_1_" transform="translate(-200.55198,-393.96227)" inkscape:label="Layer 1" inkscape:groupmode="layer">
-	<g id="g3019" transform="matrix(1.018827,0,0,-1.018827,170.5996,498.03288)">
-		<path id="path28_1_" inkscape:connector-curvature="0" fill="#FFFFFF" d="M109.495-101.774V2.533H74.828v-104.307H109.495z
-			 M92.168,16.775c12.081,0,19.612,8.01,19.612,18.021c-0.224,10.233-7.531,18.021-19.385,18.021
-			c-11.864,0-19.615-7.788-19.615-18.021c0-10.011,7.521-18.021,19.159-18.021H92.168L92.168,16.775z"/>
-		<path id="path30_1_" inkscape:connector-curvature="0" fill="#FFFFFF" d="M128.681-101.774h34.673v58.249
-			c0,3.119,0.226,6.235,1.143,8.462c2.5,6.232,8.209,12.681,17.784,12.681c12.547,0,17.562-9.568,17.562-23.588v-55.804h34.666
-			v59.81c0,32.039-17.1,46.946-39.913,46.946c-18.701,0-26.915-10.45-31.476-17.571h0.234V2.533h-34.673
-			C129.141-7.253,128.681-101.774,128.681-101.774L128.681-101.774z"/>
-	</g>
-</g>
-</svg>

+ 0 - 17
frontend/inigovalentin/public/img/social/telegram.svg

@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 240 240">
-<defs>
-	<linearGradient id="b" x1="0.6667" y1="0.1667" x2="0.4167" y2="0.75">
-		<stop stop-color="#37aee2" offset="0"/>
-		<stop stop-color="#1e96c8" offset="1"/>
-	</linearGradient>
-	<linearGradient id="w" x1="0.6597" y1="0.4369" x2="0.8512" y2="0.8024">
-		<stop stop-color="#eff7fc" offset="0"/>
-		<stop stop-color="#fff" offset="1"/>
-	</linearGradient>
-</defs>
-<circle cx="120" cy="120" r="120" fill="url(#b)"/>
-<path fill="#c8daea" d="m98 175c-3.8876 0-3.227-1.4679-4.5678-5.1695L82 132.2059 170 80"/>
-<path fill="#a9c9dd" d="m98 175c3 0 4.3255-1.372 6-3l16-15.558-19.958-12.035"/>
-<path fill="url(#w)" d="m100.04 144.41 48.36 35.729c5.5185 3.0449 9.5014 1.4684 10.876-5.1235l19.685-92.763c2.0154-8.0802-3.0801-11.745-8.3594-9.3482l-115.59 44.571c-7.8901 3.1647-7.8441 7.5666-1.4382 9.528l29.663 9.2583 68.673-43.325c3.2419-1.9659 6.2173-0.90899 3.7752 1.2584"/>
-</svg>

+ 0 - 21
frontend/inigovalentin/public/img/social/twitter.svg

@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 20.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 viewBox="0 0 400 400" style="enable-background:new 0 0 400 400;" xml:space="preserve">
-<style type="text/css">
-	.st0{fill:#1DA1F2;}
-	.st1{fill:#FFFFFF;}
-</style>
-<g id="Dark_Blue">
-	<path class="st0" d="M350,400H50c-27.6,0-50-22.4-50-50V50C0,22.4,22.4,0,50,0h300c27.6,0,50,22.4,50,50v300
-		C400,377.6,377.6,400,350,400z"/>
-</g>
-<g id="Logo__x2014__FIXED">
-	<path class="st1" d="M153.6,301.6c94.3,0,145.9-78.2,145.9-145.9c0-2.2,0-4.4-0.1-6.6c10-7.2,18.7-16.3,25.6-26.6
-		c-9.2,4.1-19.1,6.8-29.5,8.1c10.6-6.3,18.7-16.4,22.6-28.4c-9.9,5.9-20.9,10.1-32.6,12.4c-9.4-10-22.7-16.2-37.4-16.2
-		c-28.3,0-51.3,23-51.3,51.3c0,4,0.5,7.9,1.3,11.7c-42.6-2.1-80.4-22.6-105.7-53.6c-4.4,7.6-6.9,16.4-6.9,25.8
-		c0,17.8,9.1,33.5,22.8,42.7c-8.4-0.3-16.3-2.6-23.2-6.4c0,0.2,0,0.4,0,0.7c0,24.8,17.7,45.6,41.1,50.3c-4.3,1.2-8.8,1.8-13.5,1.8
-		c-3.3,0-6.5-0.3-9.6-0.9c6.5,20.4,25.5,35.2,47.9,35.6c-17.6,13.8-39.7,22-63.7,22c-4.1,0-8.2-0.2-12.2-0.7
-		C97.7,293.1,124.7,301.6,153.6,301.6"/>
-</g>
-</svg>

+ 0 - 46
frontend/inigovalentin/public/img/social/web.svg

@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 viewBox="0 0 490 490" style="enable-background:new 0 0 490 490;" xml:space="preserve">
-<g>
-	<path d="M245,490c135.31,0,245-109.689,245-245C490,109.69,380.31,0,245,0S0,109.69,0,245C0,380.311,109.69,490,245,490z
-		 M245,30.625c118.206,0,214.375,96.169,214.375,214.375c0,118.207-96.169,214.375-214.375,214.375S30.625,363.207,30.625,245
-		C30.625,126.794,126.794,30.625,245,30.625z"/>
-	<polygon points="128.297,222.899 146.077,289.622 165.188,289.622 186.871,200.378 168.732,200.378 155.034,262.72 
-		139.378,200.378 117.949,200.378 101.635,261.673 88.177,200.378 69.724,200.378 91.033,289.622 110.577,289.622 	"/>
-	<polygon points="228.262,289.622 245.982,222.899 263.762,289.622 282.873,289.622 304.556,200.378 286.417,200.378 
-		272.719,262.72 257.063,200.378 235.634,200.378 219.32,261.673 205.862,200.378 187.409,200.378 208.718,289.622 	"/>
-	<polygon points="345.947,289.622 363.667,222.899 381.447,289.622 400.558,289.622 422.241,200.378 404.102,200.378 
-		390.404,262.72 374.748,200.378 353.319,200.378 337.005,261.673 323.547,200.378 305.094,200.378 326.403,289.622 	"/>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>

BIN
frontend/inigovalentin/public/img/tag/android.png


BIN
frontend/inigovalentin/public/img/tag/angular.png


BIN
frontend/inigovalentin/public/img/tag/c.png


BIN
frontend/inigovalentin/public/img/tag/cpp.png


BIN
frontend/inigovalentin/public/img/tag/css.png


BIN
frontend/inigovalentin/public/img/tag/html.png


BIN
frontend/inigovalentin/public/img/tag/ios.png


BIN
frontend/inigovalentin/public/img/tag/java.png


BIN
frontend/inigovalentin/public/img/tag/js.png


BIN
frontend/inigovalentin/public/img/tag/lua.png


BIN
frontend/inigovalentin/public/img/tag/mariadb.png


BIN
frontend/inigovalentin/public/img/tag/nodejs.png


BIN
frontend/inigovalentin/public/img/tag/ogre.png


BIN
frontend/inigovalentin/public/img/tag/php.png


BIN
frontend/inigovalentin/public/img/tag/python.png


BIN
frontend/inigovalentin/public/img/tag/sqlite.png


BIN
frontend/inigovalentin/public/img/tag/swift.png


BIN
frontend/inigovalentin/public/img/tag/tag.xcf


BIN
frontend/inigovalentin/public/img/tag/web.png


+ 0 - 17
frontend/inigovalentin/src/app/app.component.ts

@@ -1,17 +0,0 @@
-import { Component } from '@angular/core';
-import { RouterOutlet } from '@angular/router';
-import { NavbarComponent } from './components/navbar/navbar.component';
-import { FooterComponent } from './components/footer/footer.component';
-import { ProjectPreviewComponent } from './components/project-preview/project-preview.component';
-
-@Component({
-  selector: 'app-root',
-  standalone: true,
-  imports: [RouterOutlet, NavbarComponent, FooterComponent],
-  templateUrl: './app.component.html'
-})
-export class AppComponent {
-  title = 'Inigo V';
-  errorMessage!: string;
-  constructor() {}
-}

+ 0 - 13
frontend/inigovalentin/src/app/app.routes.ts

@@ -1,13 +0,0 @@
-import {Routes} from '@angular/router';
-import {HomeComponent} from './pages/home/home.component';
-import {ProfileComponent} from './pages/profile/profile.component';
-import {ProjectsComponent} from './pages/projects/projects.component';
-import {ProjectComponent} from './pages/project/project.component';
-
-export const routes: Routes = [
-  {path: 'profile', component: ProfileComponent},
-  {path: 'projects', component: ProjectsComponent},
-  {path: 'projects/:projectId', component: ProjectComponent},
-  {path: '', component: HomeComponent, pathMatch: 'full',},
-];
-

+ 0 - 31
frontend/inigovalentin/src/app/components/footer/footer.component.html

@@ -1,31 +0,0 @@
-<footer>
-  <hr/>
-  <div id='footer_left'>
-    <span id='footer_follow' class='desktop' i18n>Follow me:</span>
-    <span class='fake_a' onclick='openMessageForm();'>
-      <img src='./img/social/email.svg' i18n-alt alt='Send me a message' i18n-title title='Send me a message'/>
-    </span>
-    @if(user?.urls){
-      <a *ngFor="let url of user?.urls" target='_blank' title='{{url.description}}' href='{{url.url}}'>
-        <img src='./img/social/{{url.logo}}' alt='{{url.name}}' title='{{url.description}}'/>
-      </a>
-    }
-  </div>
-  <div id='footer_center'>
-
-  </div>
-  <div id='footer_right'>
-    <a id='footer_help' href='https://inigovalentin.com/help/' i18n>Help</a>
-    <div id='footer_langs'>
-      <a class='lang' href='https://inigovalentin.com/en/'>
-          <img src='https://inigovalentin.com/img/layout/lang/en.svg' alt='English' title='English'/>
-      </a>
-      <a class='lang' href='https://inigovalentin.com/es/'>
-          <img src='https://inigovalentin.com/img/layout/lang/es.svg' alt='Castellano' title='Castellano'/>
-      </a>
-      <a class='lang' href='https://inigovalentin.com/eu/'>
-          <img src='https://inigovalentin.com/img/layout/lang/eu.svg' alt='Euskara' title='Euskara'/>
-      </a>
-    </div>
-  </div>
-</footer>

+ 0 - 25
frontend/inigovalentin/src/app/components/footer/footer.component.ts

@@ -1,25 +0,0 @@
-import { Component } from '@angular/core';
-import {AsyncPipe, NgFor} from '@angular/common';
-import {UserService} from '../../services/user.service';
-import {User} from '../../models/user';
-import {AppComponent} from '../../app.component';
-
-@Component({
-  selector: 'app-footer',
-  standalone: true,
-  imports: [AsyncPipe, NgFor],
-  templateUrl: './footer.component.html'
-})
-export class FooterComponent {
-  user: User | undefined;
-  errorMessage!: string;
-  constructor(private user_service: UserService){}
-  ngOnInit(){
-    //this.user = this.app.guser;
-    this.user_service.getUser().subscribe({
-      next: (user) => {this.user = user;},
-      error: (error) => {this.errorMessage = error;},
-    });
-
-  }
-}

+ 0 - 51
frontend/inigovalentin/src/app/components/message/message.component.html

@@ -1,51 +0,0 @@
-<div id='message_cover' onClick='closeMessage();'></div>
-<section id='message'>
-  <h3>
-    <span i18n>Contact me</span>
-    <div id='message_close'>
-      <a onClick='closeMessage();'>
-        <img src='./img/control/close.svg'/>
-      </a>
-    </div>
-  </h3>
-  <p i18n>
-    Something on your mind? Use this form to send me a message and I'll get back to you as soon as possible.
-  </p>
-  <form #messageForm='ngForm' (ngSubmit)='onSubmit(messageForm)'>
-    <div>
-      <label for='name' i18n>Your name: </label>
-      <input type='text' name='name' i18n-placeholder placeholder='Your name' ngModel required/>
-    </div>
-    <div>
-      <span id='error_name' class='error' i18n>A name is required.</span>
-    </div>
-    <div>
-      <label for='email' i18n>Your email: </label>
-      <input type='text' name='email' i18n-placeholder placeholder='Your email' ngModel required/>
-    </div>
-    <div>
-      <span id='error_email' class='error' i18n>A valid email address is required.</span>
-    </div>
-    <div>
-      <label for='email' i18n>Subject: </label>
-      <input type='text' name='subject' i18n-placeholder placeholder='Subject' ngModel required/>
-    </div>
-    <div>
-      <span id='error_subject' class='error' i18n>Invalid subject.</span>
-    </div>
-    <div>
-      <label for='message' i18n>Your message: </label>
-      <span id='error_message' class='error' i18n>The message can not be empty.</span>
-      <textarea placeholder='Your message' name='text' i18n-placeholder placeholder='Your message' ngModel required></textarea>
-    </div>
-    <div>
-      <input type='checkbox' name='consent' ngModel required/>
-      <label for='consent' class='long' i18n>I accept the data processing policy</label>
-    </div>
-    <div>
-      <span id='error_consent' class='error' i18n>The message can't be sent unless the policy is accepted.</span>
-    </div>
-    <div><input type='submit' i18n-value value='Send'/></div>
-  </form>
-</section>
-

+ 0 - 10
frontend/inigovalentin/src/app/components/navbar/navbar.component.html

@@ -1,10 +0,0 @@
-<header>
-    <div id='logo'>
-        inigoValentin
-    </div>
-    <nav>
-        <a routerLink="/">Home</a>
-        <a routerLink="/profile">Me</a>
-        <a routerLink="/projects">Projects</a>
-    </nav>
-</header>

+ 0 - 12
frontend/inigovalentin/src/app/components/navbar/navbar.component.ts

@@ -1,12 +0,0 @@
-import { Component } from '@angular/core';
-import { RouterModule } from '@angular/router';
-
-@Component({
-  selector: 'app-navbar',
-  standalone: true,
-  imports: [RouterModule],
-  templateUrl: './navbar.component.html'
-})
-export class NavbarComponent {
-
-}

+ 0 - 12
frontend/inigovalentin/src/app/components/project/project.component.html

@@ -1,12 +0,0 @@
-<article class="project_preview">
-  <a routerLink="/show-project/{{project.id}}">
-    <div >
-      <h2 class="text-ellipsis text-lg font-semibold">
-        {{ project.title }}
-      </h2>
-      <p class="text">
-        {{ project.header }}
-      </p>
-    </div>
-  </a>
-</article>

+ 0 - 23
frontend/inigovalentin/src/app/components/project/project.component.spec.ts

@@ -1,23 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { ProjectComponent } from './project.component';
-
-describe('ProjectComponent', () => {
-  let component: ProjectComponent;
-  let fixture: ComponentFixture<ProjectComponent>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      imports: [ProjectComponent]
-    })
-    .compileComponents();
-
-    fixture = TestBed.createComponent(ProjectComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});

+ 0 - 16
frontend/inigovalentin/src/app/components/project/project.component.ts

@@ -1,16 +0,0 @@
-import { Injectable, inject } from '@angular/core';
-import { Input } from '@angular/core';
-import { Component } from '@angular/core';
-import { Project } from '../../models/project';
-import { DatePipe } from '@angular/common';
-import { RouterModule } from '@angular/router';
-
-@Component({
-  selector: 'app-project',
-  standalone: true,
-  imports: [DatePipe, RouterModule],
-  templateUrl: './project.component.html'
-})
-export class ProjectComponent {
-  @Input() project!: Project;
-}

+ 0 - 42
frontend/inigovalentin/src/app/pages/home/home.component.ts

@@ -1,42 +0,0 @@
-import {Component, inject} from '@angular/core';
-import {AsyncPipe, NgFor} from '@angular/common';
-import {UserService} from '../../services/user.service';
-import {Observable} from 'rxjs';
-import {User} from '../../models/user';
-import {Project} from '../../models/project';
-import {ProjectsService} from '../../services/projects.service';
-import {ProjectPreviewComponent} from '../../components/project-preview/project-preview.component';
-import {MessageComponent} from '../../components/message/message.component';
-declare function openMessage(): any;
-declare function closeMessage(): any;
-
-@Component({
-  selector: 'app-home',
-  standalone: true,
-  imports: [AsyncPipe, NgFor, ProjectPreviewComponent, MessageComponent],
-  templateUrl: './home.component.html'
-})
-
-export class HomeComponent {
-  title = 'home';
-  user: User | undefined;
-  texts: {[key: string]: string} = {};
-  projects: Project[] = [];
-  errorMessage!: string;
-  constructor(private user_service: UserService, private projects_service: ProjectsService){}
-  ngOnInit(){
-    this.user_service.getUser().subscribe({
-      next: (user) => {
-        this.user = user;
-        this.title = this.user.firstName + " " + this.user.lastName;
-        this.user.texts?.forEach((t) => {this.texts[t.key] = t.text;});
-      },
-      error: (error) => {this.errorMessage = error;},
-    });
-    this.projects_service.getTopProjects(3).subscribe({
-      next: (projects) => {this.projects = projects;},
-      error: (error) => {this.errorMessage = error;},
-    });
-
-  }
-}

+ 0 - 31
frontend/inigovalentin/src/app/pages/profile/profile.component.ts

@@ -1,31 +0,0 @@
-import {Component} from '@angular/core';
-import {NgFor} from '@angular/common';
-import {UserService} from '../../services/user.service';
-import {User} from '../../models/user';
-import {MessageComponent} from '../../components/message/message.component';
-declare function openMessage(): any;
-declare function closeMessage(): any;
-
-@Component({
-  selector: 'app-profile',
-  standalone: true,
-  imports: [NgFor, MessageComponent],
-  templateUrl: './profile.component.html'
-})
-export class ProfileComponent {
-  title = 'profile';
-  user: User | undefined;
-  texts: {[key: string]: string} = {};
-  errorMessage!: string;
-  constructor(private user_service: UserService){}
-  ngOnInit(){
-    this.user_service.getUser().subscribe({
-      next: (user) => {
-        this.user = user;
-        this.title = this.user.firstName + " " + this.user.lastName;
-        this.user.texts?.forEach((t) => {this.texts[t.key] = t.text;});
-      },
-      error: (error) => {this.errorMessage = error;},
-    });
-  }
-}

+ 0 - 108
frontend/inigovalentin/src/app/pages/project/project.component.ts

@@ -1,108 +0,0 @@
-import { Component, Input, inject } from '@angular/core';
-import { ProjectsService } from '../../services/projects.service';
-import { AsyncPipe, CurrencyPipe, DatePipe, NgFor, NgIf } from '@angular/common';
-import { ActivatedRoute } from '@angular/router';
-import { map } from 'rxjs/operators';
-import { Observable } from 'rxjs';
-import { Project } from '../../models/project';
-declare function showImage(element: any): any;
-declare function nextImage(): any;
-declare function prevImage(): any;
-declare function closeImage(): any;
-declare var curImage: number;
-declare var totalImages: number;
-
-@Component({
-  selector: 'app-project',
-  standalone: true,
-  imports: [AsyncPipe, DatePipe, CurrencyPipe, NgIf, NgFor],
-  templateUrl: './project.component.html'
-})
-export class ProjectComponent {
-
-  /*@Input() projectId: string = '';
-  private projectsService = inject(ProjectsService);
-  public projectObs$! : Observable<Project>;
-  private activatedRouter = inject(ActivatedRoute);*/
-
-  title = 'project';
-  projectObs$!: Observable<Project>;
-  errorMessage!: string;
-  private activatedRouter = inject(ActivatedRoute);
-
-  constructor(private projects_service: ProjectsService) {}
-
-  /*ngOnInit(){
-    this.activatedRouter.params.pipe(map((p)=> p['projectId'])).subscribe((id)=>{
-      //this.projectObs$ = this.projectsService.fetchProjectById(id);
-
-    })
-  }*/
-  ngOnInit() {
-    this.activatedRouter.params.pipe(map((p)=> p['projectId'])).subscribe((id)=>{
-        this.projectObs$! = this.projects_service.getProject(id);
-    });
-  }
-
-  /**
-   * Current image ID for the image viewer.
-   */
-  //let curImage = 0;
-
-  /**
-   * Shows an image in the image viewer.
-   *
-   * Loads the image and text from the image preview.
-   *
-   * @param element The clicked img element.
-   */
-   /* showImage(element: any): any{
-    var curImage: number = Number(element.id.substring(4));
-    document.getElementById('image_viewer_cover')!.style.display = 'block';
-    document.getElementById('image_viewer_cover')!.style.opacity = '1';
-    //loadImage(element);
-    document.getElementById('image_viewer')!.style.display = 'block';
-  }*/
-
-  /**
-   * Closes the image viewew.
-   */
-  /*function closeImage(){
-    document.getElementById('image_viewer_cover').style.display = 'none';
-    document.getElementById('image_viewer_cover').style.opacity = '0';
-    document.getElementById('image_viewer').style.display = 'none';
-  }*/
-
-  /**
-   * Shows the next image in the image viewer.
-   */
-  /*function nextImage(){
-    curImage = curImage + 1;
-    if (curImage > maxImages) curImage = 0;
-    loadImage(document.getElementById('img_' + curImage));
-  }*/
-
-  /**
-   * Shows the previous image in the image viewer.
-   */
-  /*function prevImage(){
-    curImage = curImage - 1;
-    if (curImage < 0) curImage = maxImages;
-    loadImage(document.getElementById('img_' + curImage));
-  }*/
-
-  /**
-   * Shows an image in the image viewer.
-   *
-   * Dont call manually, use {@see showImage} instead.
-   *
-   * @param element The clicked img element.
-   */
-  /*function loadImage(element){
-    document.getElementById('image_viewer_title').innerHTML = element.title;
-    document.getElementById('image_viewer_image').src = element.src;
-    document.getElementById('image_viewer_image').srcset = element.srcset;
-    document.getElementById('image_viewer_image').alt = element.alt;
-    document.getElementById('image_viewer_image').title = element.title;
-  }*/
-}

+ 0 - 37
frontend/inigovalentin/src/app/pages/projects/projects.component.ts

@@ -1,37 +0,0 @@
-import { Component, DestroyRef, inject, Input } from '@angular/core';
-import { HttpClient } from '@angular/common/http';
-import { CommonModule, AsyncPipe, NgFor } from '@angular/common';
-import { Project } from '../../models/project';
-import { ProjectsService } from '../../services/projects.service';
-import { ProjectComponent } from '../../components/project/project.component';
-import { ProjectPreviewComponent } from '../../components/project-preview/project-preview.component';
-
-declare function showImage(element: any): any
-
-@Component({
-  selector: 'app-projects',
-  standalone: true,
-  imports: [ProjectComponent, NgFor, ProjectPreviewComponent],
-  templateUrl: './projects.component.html'
-})
-
-export class ProjectsComponent {
-  title = 'projects';
-  projects: Project[] = [];
-  errorMessage!: string;
-
-  constructor(private projects_service: ProjectsService) {}
-
-  ngOnInit() {
-    this.projects_service.getAllProjects().subscribe({
-      next: (projects) => {this.projects = projects;},
-      error: (error) => {this.errorMessage = error;},
-    });
-    let node = document.createElement('script');
-    node.src = './js/project.j';
-    node.type = 'text/javascript';
-    node.async = true;
-    node.charset = 'utf-8';
-    document.getElementsByTagName('head')[0].appendChild(node);
-  }
-}

+ 0 - 11
frontend/inigovalentin/src/app/services/user.service.ts

@@ -1,11 +0,0 @@
-import {Injectable} from '@angular/core';
-import {HttpClient} from '@angular/common/http';
-import {Observable} from 'rxjs';
-import {User} from '../models/user';
-
-@Injectable({providedIn: 'root'})
-export class UserService {
-  apiUrl = 'http://localhost:8080/api/user/';
-  constructor(private http: HttpClient) {}
-  getUser(): Observable<User> {return this.http.get<User>(this.apiUrl);}
-}

+ 0 - 1
frontend/inigovalentin/src/environments/environment.development.ts

@@ -1 +0,0 @@
-export const environment = {};

+ 0 - 1
frontend/inigovalentin/src/environments/environment.ts

@@ -1 +0,0 @@
-export const environment = {};

+ 0 - 9
frontend/inigovalentin/tailwind.config.js

@@ -1,9 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-module.exports = {
-  content: ["./src/**/*.{html,ts}",],
-  theme: {
-    extend: {},
-  },
-  plugins: [],
-}
-

+ 309 - 83
frontend/inigovalentin/package-lock.json → frontend/package-lock.json

@@ -1,11 +1,11 @@
 {
-  "name": "inigovalentin",
+  "name": "frontend",
   "version": "0.0.0",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
-      "name": "inigovalentin",
+      "name": "frontend",
       "version": "0.0.0",
       "dependencies": {
         "@angular/animations": "^18.2.0",
@@ -16,6 +16,7 @@
         "@angular/platform-browser": "^18.2.0",
         "@angular/platform-browser-dynamic": "^18.2.0",
         "@angular/router": "^18.2.0",
+        "ng-process-env": "^16.0.6",
         "rxjs": "~7.8.0",
         "tslib": "^2.3.0",
         "zone.js": "~0.14.10"
@@ -3210,8 +3211,7 @@
     "node_modules/@jridgewell/sourcemap-codec": {
       "version": "1.5.0",
       "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
-      "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
-      "dev": true
+      "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
     },
     "node_modules/@jridgewell/trace-mapping": {
       "version": "0.3.25",
@@ -3474,7 +3474,6 @@
       "version": "2.1.5",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
       "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
-      "dev": true,
       "dependencies": {
         "@nodelib/fs.stat": "2.0.5",
         "run-parallel": "^1.1.9"
@@ -3487,7 +3486,6 @@
       "version": "2.0.5",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
       "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
-      "dev": true,
       "engines": {
         "node": ">= 8"
       }
@@ -3496,7 +3494,6 @@
       "version": "1.2.8",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
       "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
-      "dev": true,
       "dependencies": {
         "@nodelib/fs.scandir": "2.1.5",
         "fastq": "^1.6.0"
@@ -4088,6 +4085,38 @@
       "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
       "dev": true
     },
+    "node_modules/@ts-morph/common": {
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.25.0.tgz",
+      "integrity": "sha512-kMnZz+vGGHi4GoHnLmMhGNjm44kGtKUXGnOvrKmMwAuvNjM/PgKVGfUnL7IDvK7Jb2QQ82jq3Zmp04Gy+r3Dkg==",
+      "dependencies": {
+        "minimatch": "^9.0.4",
+        "path-browserify": "^1.0.1",
+        "tinyglobby": "^0.2.9"
+      }
+    },
+    "node_modules/@ts-morph/common/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/@ts-morph/common/node_modules/minimatch": {
+      "version": "9.0.5",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/@tufjs/canonical-json": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz",
@@ -4758,7 +4787,6 @@
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
       "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-      "dev": true,
       "engines": {
         "node": ">=8"
       }
@@ -4785,7 +4813,7 @@
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
       "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "normalize-path": "^3.0.0",
         "picomatch": "^2.0.4"
@@ -4798,7 +4826,7 @@
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
       "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true,
+      "devOptional": true,
       "engines": {
         "node": ">=8.6"
       },
@@ -4929,14 +4957,12 @@
     "node_modules/balanced-match": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "dev": true
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
     },
     "node_modules/base64-js": {
       "version": "1.5.1",
       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
       "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
-      "dev": true,
       "funding": [
         {
           "type": "github",
@@ -4980,7 +5006,7 @@
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
       "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
-      "dev": true,
+      "devOptional": true,
       "engines": {
         "node": ">=8"
       },
@@ -4992,7 +5018,6 @@
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
       "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
-      "dev": true,
       "dependencies": {
         "buffer": "^5.5.0",
         "inherits": "^2.0.4",
@@ -5068,7 +5093,6 @@
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
       "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
-      "dev": true,
       "dependencies": {
         "fill-range": "^7.1.1"
       },
@@ -5112,7 +5136,6 @@
       "version": "5.7.1",
       "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
       "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
-      "dev": true,
       "funding": [
         {
           "type": "github",
@@ -5316,7 +5339,7 @@
       "version": "3.6.0",
       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
       "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "anymatch": "~3.1.2",
         "braces": "~3.0.2",
@@ -5340,7 +5363,7 @@
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
       "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "is-glob": "^4.0.1"
       },
@@ -5394,7 +5417,6 @@
       "version": "2.9.2",
       "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
       "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
-      "dev": true,
       "engines": {
         "node": ">=6"
       },
@@ -5524,7 +5546,6 @@
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
       "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
-      "dev": true,
       "engines": {
         "node": ">=0.8"
       }
@@ -5543,6 +5564,11 @@
         "node": ">=6"
       }
     },
+    "node_modules/code-block-writer": {
+      "version": "12.0.0",
+      "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-12.0.0.tgz",
+      "integrity": "sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w=="
+    },
     "node_modules/color-convert": {
       "version": "1.9.3",
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -6082,7 +6108,6 @@
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
       "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
-      "dev": true,
       "dependencies": {
         "clone": "^1.0.2"
       },
@@ -6784,14 +6809,12 @@
     "node_modules/fast-deep-equal": {
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
     },
     "node_modules/fast-glob": {
       "version": "3.3.2",
       "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
       "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
-      "dev": true,
       "dependencies": {
         "@nodelib/fs.stat": "^2.0.2",
         "@nodelib/fs.walk": "^1.2.3",
@@ -6807,7 +6830,6 @@
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
       "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "dev": true,
       "dependencies": {
         "is-glob": "^4.0.1"
       },
@@ -6831,7 +6853,6 @@
       "version": "1.17.1",
       "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
       "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
-      "dev": true,
       "dependencies": {
         "reusify": "^1.0.4"
       }
@@ -6848,11 +6869,23 @@
         "node": ">=0.8.0"
       }
     },
+    "node_modules/fdir": {
+      "version": "6.4.2",
+      "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz",
+      "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==",
+      "peerDependencies": {
+        "picomatch": "^3 || ^4"
+      },
+      "peerDependenciesMeta": {
+        "picomatch": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/fill-range": {
       "version": "7.1.1",
       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
       "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
-      "dev": true,
       "dependencies": {
         "to-regex-range": "^5.0.1"
       },
@@ -7531,7 +7564,6 @@
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
       "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
-      "dev": true,
       "funding": [
         {
           "type": "github",
@@ -7659,8 +7691,7 @@
     "node_modules/inherits": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-      "dev": true
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
     },
     "node_modules/ini": {
       "version": "4.1.3",
@@ -7703,7 +7734,7 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
       "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "binary-extensions": "^2.0.0"
       },
@@ -7745,7 +7776,6 @@
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
       "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
-      "dev": true,
       "engines": {
         "node": ">=0.10.0"
       }
@@ -7766,7 +7796,6 @@
       "version": "4.0.3",
       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
       "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-      "dev": true,
       "dependencies": {
         "is-extglob": "^2.1.1"
       },
@@ -7796,7 +7825,6 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
       "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
-      "dev": true,
       "engines": {
         "node": ">=8"
       }
@@ -7823,7 +7851,6 @@
       "version": "7.0.0",
       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "dev": true,
       "engines": {
         "node": ">=0.12.0"
       }
@@ -7868,7 +7895,6 @@
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
       "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
-      "dev": true,
       "engines": {
         "node": ">=10"
       },
@@ -8142,8 +8168,7 @@
     "node_modules/json-schema-traverse": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
-      "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
-      "dev": true
+      "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
     },
     "node_modules/json5": {
       "version": "2.2.3",
@@ -8749,7 +8774,6 @@
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
       "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
-      "dev": true,
       "dependencies": {
         "chalk": "^4.1.0",
         "is-unicode-supported": "^0.1.0"
@@ -8765,7 +8789,6 @@
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
       "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dev": true,
       "dependencies": {
         "color-convert": "^2.0.1"
       },
@@ -8780,7 +8803,6 @@
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
       "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dev": true,
       "dependencies": {
         "ansi-styles": "^4.1.0",
         "supports-color": "^7.1.0"
@@ -8796,7 +8818,6 @@
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
       "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dev": true,
       "dependencies": {
         "color-name": "~1.1.4"
       },
@@ -8807,14 +8828,12 @@
     "node_modules/log-symbols/node_modules/color-name": {
       "version": "1.1.4",
       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
     },
     "node_modules/log-symbols/node_modules/has-flag": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
       "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "dev": true,
       "engines": {
         "node": ">=8"
       }
@@ -8823,7 +8842,6 @@
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
       "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "dev": true,
       "dependencies": {
         "has-flag": "^4.0.0"
       },
@@ -9071,7 +9089,6 @@
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
       "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
-      "dev": true,
       "engines": {
         "node": ">= 8"
       }
@@ -9089,7 +9106,6 @@
       "version": "4.0.8",
       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
       "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
-      "dev": true,
       "dependencies": {
         "braces": "^3.0.3",
         "picomatch": "^2.3.1"
@@ -9102,7 +9118,6 @@
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
       "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true,
       "engines": {
         "node": ">=8.6"
       },
@@ -9147,7 +9162,6 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
       "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
-      "dev": true,
       "engines": {
         "node": ">=6"
       }
@@ -9524,6 +9538,171 @@
       "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
       "dev": true
     },
+    "node_modules/ng-process-env": {
+      "version": "16.0.6",
+      "resolved": "https://registry.npmjs.org/ng-process-env/-/ng-process-env-16.0.6.tgz",
+      "integrity": "sha512-fE9h804MqbOzq5ZphAeaIyFJKByyi7YVjYJxOrIJ0+TEeAQpm9R1b1GsWRmX8eQyiNW0rCInFHZa8HZVuvZKmw==",
+      "dependencies": {
+        "@angular-devkit/architect": "^0.1600.0",
+        "@angular-devkit/core": "^16.0.0",
+        "@angular-devkit/schematics": "^16.0.0",
+        "@ts-morph/common": ">= 0.19.0 < 1",
+        "ts-morph": "18.0.0",
+        "typescript": "5.0.4"
+      }
+    },
+    "node_modules/ng-process-env/node_modules/@angular-devkit/architect": {
+      "version": "0.1600.6",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1600.6.tgz",
+      "integrity": "sha512-Mk/pRujuer5qRMrgC7DPwLQ88wTAEKhbs0yJ/1prm4cx+VkxX9MMf6Y4AHKRmduKmFmd2LmX21/ACiU65acH8w==",
+      "dependencies": {
+        "@angular-devkit/core": "16.0.6",
+        "rxjs": "7.8.1"
+      },
+      "engines": {
+        "node": "^16.14.0 || >=18.10.0",
+        "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+        "yarn": ">= 1.13.0"
+      }
+    },
+    "node_modules/ng-process-env/node_modules/@angular-devkit/architect/node_modules/@angular-devkit/core": {
+      "version": "16.0.6",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.0.6.tgz",
+      "integrity": "sha512-pHbDUwXDMTWTnX/vafkFnzvYDQD8lz+w8FvMQE23Q/vN6/Q0BRf0PWTAGla6Wt+E4HaqqrbQS5P0YBwS4te2Pw==",
+      "dependencies": {
+        "ajv": "8.12.0",
+        "ajv-formats": "2.1.1",
+        "jsonc-parser": "3.2.0",
+        "rxjs": "7.8.1",
+        "source-map": "0.7.4"
+      },
+      "engines": {
+        "node": "^16.14.0 || >=18.10.0",
+        "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+        "yarn": ">= 1.13.0"
+      },
+      "peerDependencies": {
+        "chokidar": "^3.5.2"
+      },
+      "peerDependenciesMeta": {
+        "chokidar": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/ng-process-env/node_modules/@angular-devkit/core": {
+      "version": "16.2.16",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.16.tgz",
+      "integrity": "sha512-5xHs9JFmp78sydrOAg0UGErxfMVv5c2f3RXoikS7eBOOXTWEi5pmnOkOvSJ3loQFGVs3Y7i+u02G3VrF5ZxOrA==",
+      "dependencies": {
+        "ajv": "8.12.0",
+        "ajv-formats": "2.1.1",
+        "jsonc-parser": "3.2.0",
+        "picomatch": "2.3.1",
+        "rxjs": "7.8.1",
+        "source-map": "0.7.4"
+      },
+      "engines": {
+        "node": "^16.14.0 || >=18.10.0",
+        "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+        "yarn": ">= 1.13.0"
+      },
+      "peerDependencies": {
+        "chokidar": "^3.5.2"
+      },
+      "peerDependenciesMeta": {
+        "chokidar": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/ng-process-env/node_modules/@angular-devkit/schematics": {
+      "version": "16.2.16",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.16.tgz",
+      "integrity": "sha512-pF6fdtJh6yLmgA7Gs45JIdxPl2MsTAhYcZIMrX1a6ID64dfwtF0MP8fDE6vrWInV1zXbzzf7l7PeKuqVtTSzKg==",
+      "dependencies": {
+        "@angular-devkit/core": "16.2.16",
+        "jsonc-parser": "3.2.0",
+        "magic-string": "0.30.1",
+        "ora": "5.4.1",
+        "rxjs": "7.8.1"
+      },
+      "engines": {
+        "node": "^16.14.0 || >=18.10.0",
+        "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+        "yarn": ">= 1.13.0"
+      }
+    },
+    "node_modules/ng-process-env/node_modules/ajv": {
+      "version": "8.12.0",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+      "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "json-schema-traverse": "^1.0.0",
+        "require-from-string": "^2.0.2",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/ng-process-env/node_modules/ajv-formats": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+      "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+      "dependencies": {
+        "ajv": "^8.0.0"
+      },
+      "peerDependencies": {
+        "ajv": "^8.0.0"
+      },
+      "peerDependenciesMeta": {
+        "ajv": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/ng-process-env/node_modules/jsonc-parser": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+      "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w=="
+    },
+    "node_modules/ng-process-env/node_modules/magic-string": {
+      "version": "0.30.1",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz",
+      "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==",
+      "dependencies": {
+        "@jridgewell/sourcemap-codec": "^1.4.15"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/ng-process-env/node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/ng-process-env/node_modules/typescript": {
+      "version": "5.0.4",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz",
+      "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
+      "bin": {
+        "tsc": "bin/tsc",
+        "tsserver": "bin/tsserver"
+      },
+      "engines": {
+        "node": ">=12.20"
+      }
+    },
     "node_modules/nice-napi": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz",
@@ -9718,7 +9897,7 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
       "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-      "dev": true,
+      "devOptional": true,
       "engines": {
         "node": ">=0.10.0"
       }
@@ -9953,7 +10132,6 @@
       "version": "5.4.1",
       "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
       "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
-      "dev": true,
       "dependencies": {
         "bl": "^4.1.0",
         "chalk": "^4.1.0",
@@ -9976,7 +10154,6 @@
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
       "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dev": true,
       "dependencies": {
         "color-convert": "^2.0.1"
       },
@@ -9991,7 +10168,6 @@
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
       "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "dev": true,
       "dependencies": {
         "ansi-styles": "^4.1.0",
         "supports-color": "^7.1.0"
@@ -10007,7 +10183,6 @@
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
       "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
-      "dev": true,
       "dependencies": {
         "restore-cursor": "^3.1.0"
       },
@@ -10019,7 +10194,6 @@
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
       "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dev": true,
       "dependencies": {
         "color-name": "~1.1.4"
       },
@@ -10030,14 +10204,12 @@
     "node_modules/ora/node_modules/color-name": {
       "version": "1.1.4",
       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
     },
     "node_modules/ora/node_modules/has-flag": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
       "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "dev": true,
       "engines": {
         "node": ">=8"
       }
@@ -10046,7 +10218,6 @@
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
       "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
-      "dev": true,
       "dependencies": {
         "mimic-fn": "^2.1.0"
       },
@@ -10061,7 +10232,6 @@
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
       "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
-      "dev": true,
       "dependencies": {
         "onetime": "^5.1.0",
         "signal-exit": "^3.0.2"
@@ -10073,14 +10243,12 @@
     "node_modules/ora/node_modules/signal-exit": {
       "version": "3.0.7",
       "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
-      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
-      "dev": true
+      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
     },
     "node_modules/ora/node_modules/supports-color": {
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
       "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "dev": true,
       "dependencies": {
         "has-flag": "^4.0.0"
       },
@@ -10303,6 +10471,11 @@
         "node": ">= 0.8"
       }
     },
+    "node_modules/path-browserify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+      "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
+    },
     "node_modules/path-exists": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
@@ -10386,7 +10559,6 @@
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
       "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
-      "dev": true,
       "engines": {
         "node": ">=12"
       },
@@ -10785,7 +10957,6 @@
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
       "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
-      "dev": true,
       "funding": [
         {
           "type": "github",
@@ -10856,7 +11027,6 @@
       "version": "3.6.2",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
       "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
-      "dev": true,
       "dependencies": {
         "inherits": "^2.0.3",
         "string_decoder": "^1.1.1",
@@ -10870,7 +11040,7 @@
       "version": "3.6.0",
       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
       "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-      "dev": true,
+      "devOptional": true,
       "dependencies": {
         "picomatch": "^2.2.1"
       },
@@ -10882,7 +11052,7 @@
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
       "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "dev": true,
+      "devOptional": true,
       "engines": {
         "node": ">=8.6"
       },
@@ -10995,7 +11165,6 @@
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
       "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
-      "dev": true,
       "engines": {
         "node": ">=0.10.0"
       }
@@ -11100,7 +11269,6 @@
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
       "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
-      "dev": true,
       "engines": {
         "iojs": ">=1.0.0",
         "node": ">=0.10.0"
@@ -11179,7 +11347,6 @@
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
       "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
-      "dev": true,
       "funding": [
         {
           "type": "github",
@@ -11210,7 +11377,6 @@
       "version": "5.2.1",
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
       "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-      "dev": true,
       "funding": [
         {
           "type": "github",
@@ -11771,7 +11937,6 @@
       "version": "0.7.4",
       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
       "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
-      "dev": true,
       "engines": {
         "node": ">= 8"
       }
@@ -11943,7 +12108,6 @@
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
       "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
-      "dev": true,
       "dependencies": {
         "safe-buffer": "~5.2.0"
       }
@@ -12026,7 +12190,6 @@
       "version": "6.0.1",
       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
       "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "dev": true,
       "dependencies": {
         "ansi-regex": "^5.0.1"
       },
@@ -12418,6 +12581,18 @@
       "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
       "dev": true
     },
+    "node_modules/tinyglobby": {
+      "version": "0.2.10",
+      "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz",
+      "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==",
+      "dependencies": {
+        "fdir": "^6.4.2",
+        "picomatch": "^4.0.2"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
     "node_modules/tmp": {
       "version": "0.0.33",
       "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@@ -12443,7 +12618,6 @@
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
       "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "dev": true,
       "dependencies": {
         "is-number": "^7.0.0"
       },
@@ -12491,6 +12665,62 @@
       "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
       "dev": true
     },
+    "node_modules/ts-morph": {
+      "version": "18.0.0",
+      "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-18.0.0.tgz",
+      "integrity": "sha512-Kg5u0mk19PIIe4islUI/HWRvm9bC1lHejK4S0oh1zaZ77TMZAEmQC0sHQYiu2RgCQFZKXz1fMVi/7nOOeirznA==",
+      "dependencies": {
+        "@ts-morph/common": "~0.19.0",
+        "code-block-writer": "^12.0.0"
+      }
+    },
+    "node_modules/ts-morph/node_modules/@ts-morph/common": {
+      "version": "0.19.0",
+      "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.19.0.tgz",
+      "integrity": "sha512-Unz/WHmd4pGax91rdIKWi51wnVUW11QttMEPpBiBgIewnc9UQIX7UDLxr5vRlqeByXCwhkF6VabSsI0raWcyAQ==",
+      "dependencies": {
+        "fast-glob": "^3.2.12",
+        "minimatch": "^7.4.3",
+        "mkdirp": "^2.1.6",
+        "path-browserify": "^1.0.1"
+      }
+    },
+    "node_modules/ts-morph/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/ts-morph/node_modules/minimatch": {
+      "version": "7.4.6",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz",
+      "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/ts-morph/node_modules/mkdirp": {
+      "version": "2.1.6",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz",
+      "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==",
+      "bin": {
+        "mkdirp": "dist/cjs/src/bin.js"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/tslib": {
       "version": "2.7.0",
       "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
@@ -12714,7 +12944,6 @@
       "version": "4.4.1",
       "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
       "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "dev": true,
       "dependencies": {
         "punycode": "^2.1.0"
       }
@@ -12723,7 +12952,6 @@
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
       "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
-      "dev": true,
       "engines": {
         "node": ">=6"
       }
@@ -12731,8 +12959,7 @@
     "node_modules/util-deprecate": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
-      "dev": true
+      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
     },
     "node_modules/utils-merge": {
       "version": "1.0.1",
@@ -13280,7 +13507,6 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
       "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
-      "dev": true,
       "dependencies": {
         "defaults": "^1.0.3"
       }

+ 2 - 1
frontend/inigovalentin/package.json → frontend/package.json

@@ -1,5 +1,5 @@
 {
-  "name": "inigovalentin",
+  "name": "frontend",
   "version": "0.0.0",
   "scripts": {
     "ng": "ng",
@@ -18,6 +18,7 @@
     "@angular/platform-browser": "^18.2.0",
     "@angular/platform-browser-dynamic": "^18.2.0",
     "@angular/router": "^18.2.0",
+    "ng-process-env": "^16.0.6",
     "rxjs": "~7.8.0",
     "tslib": "^2.3.0",
     "zone.js": "~0.14.10"

+ 0 - 0
frontend/inigovalentin/public/favicon.ico → frontend/public/favicon.ico


+ 0 - 0
frontend/inigovalentin/public/font/Handwritten.ttf → frontend/public/font/Handwritten.ttf


+ 0 - 0
frontend/inigovalentin/public/font/NotoMono-Regular.ttf → frontend/public/font/NotoMono-Regular.ttf


Some files were not shown because too many files changed in this diff