From 69fc917b3632dc157e3719649a23aa4cffd84210 Mon Sep 17 00:00:00 2001 From: Gianmarco Pettinato Date: Sat, 27 May 2023 15:34:47 +0200 Subject: [PATCH] new theme done --- keyboard.md | 1 + package-lock.json | 235 +++++++--- package.json | 100 +++-- src/app.html | 2 +- src/lib/elements/AboutMe.svelte | 15 +- src/lib/elements/JobElement.svelte | 5 +- src/lib/elements/Jobs.svelte | 34 +- src/lib/elements/LanguageSelector.svelte | 3 +- src/lib/elements/Training.svelte | 4 +- src/lib/model/{job.d.ts => job.ts} | 2 +- src/lib/model/jobs.json | 69 ++- src/lib/model/logo.ts | 11 + src/lib/model/logos.json | 8 + src/lib/model/portfolio.json | 417 +++++++++++++----- .../model/{schema.json => schemas/job.json} | 0 src/lib/model/schemas/logo.json | 17 + src/routes/+page.svelte | 8 +- static/blogPosts/rust-logo-blk.svg | 1 + static/cplusplus.png | Bin 0 -> 5855 bytes ...o_2023-05-27_14-07-56.webp:Zone.Identifier | 4 + static/profile_pic.webp | Bin 9450 -> 60690 bytes static/profile_pic_old.webp | Bin 0 -> 9450 bytes static/qt_logo.svg | 17 + static/rust-logo.svg | 8 + static/ts-logo-128.svg | 1 + svelte.config.old.js | 37 -- to-be-done/blog/+page.svelte | 6 +- 27 files changed, 686 insertions(+), 319 deletions(-) create mode 100644 keyboard.md rename src/lib/model/{job.d.ts => job.ts} (95%) create mode 100644 src/lib/model/logo.ts create mode 100644 src/lib/model/logos.json rename src/lib/model/{schema.json => schemas/job.json} (100%) create mode 100644 src/lib/model/schemas/logo.json create mode 100644 static/blogPosts/rust-logo-blk.svg create mode 100644 static/cplusplus.png create mode 100644 static/photo_2023-05-27_14-07-56.webp:Zone.Identifier create mode 100644 static/profile_pic_old.webp create mode 100644 static/qt_logo.svg create mode 100644 static/rust-logo.svg create mode 100644 static/ts-logo-128.svg delete mode 100644 svelte.config.old.js diff --git a/keyboard.md b/keyboard.md new file mode 100644 index 0000000..bc8d54b --- /dev/null +++ b/keyboard.md @@ -0,0 +1 @@ + "it":"Io passo molto tempo al PC e spesso non ho una corretta postura. Sperando di mitigare il problema, iniziai a cercare delle tastiere ergonomiche come quelle con il design *split*.\n La prima che trovai fu [Ergodox-EZ](https://ergodox-ez.com), ma il prezzo di più 300 euro mi fece desistere. Successivamente trovai il *subreddit* [r/ErgoMechBoards](https://www.reddit.com/r/ErgoMechKeyboards) e vidi molti modelli diversi, quello che mi piacque di più fu [lily58](https://github.com/kata0510/Lily58).\n Quindi, ordinai i pezzi da diversi negozi online. Presi da [Keyhive](https://keyhive.xyz) le parti base come il PCB e la guida per i tasti e da [CandyKeys](https://candykeys.com) gli switch, per quanto riguarda i keycaps li presi da Amazon ordinando dal meno caro.\n Quando tutti i pezzi arrivarono, con pazienza e dedizione saldai tutti i componenti e assemblai la tastiera. Per aggiungere un tocco personale, stampai con la mia stampante 3d la scocca che trovai su Thingverse.\n Come miglioramenti futuri, mi piacerebbe aggiungere un sistema per angolare la tastiera e risolvere il problema di pronazione dei polsi." diff --git a/package-lock.json b/package-lock.json index 444841e..4d62a71 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "json-schema-to-typescript": "^10.1.5", "markdown-it": "^12.2.0", "punycode": "^2.1.1", + "svelte-sitemap": "^2.6.0", "typesafe-i18n": "^5.20.0" }, "devDependencies": { @@ -549,7 +550,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" @@ -562,7 +562,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" } @@ -571,7 +570,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" @@ -580,6 +578,50 @@ "node": ">= 8" } }, + "node_modules/@oozcitak/dom": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz", + "integrity": "sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==", + "dependencies": { + "@oozcitak/infra": "1.0.8", + "@oozcitak/url": "1.0.4", + "@oozcitak/util": "8.3.8" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@oozcitak/infra": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@oozcitak/infra/-/infra-1.0.8.tgz", + "integrity": "sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==", + "dependencies": { + "@oozcitak/util": "8.3.8" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/@oozcitak/url": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@oozcitak/url/-/url-1.0.4.tgz", + "integrity": "sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==", + "dependencies": { + "@oozcitak/infra": "1.0.8", + "@oozcitak/util": "8.3.8" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@oozcitak/util": { + "version": "8.3.8", + "resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-8.3.8.tgz", + "integrity": "sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==", + "engines": { + "node": ">=8.0" + } + }, "node_modules/@playwright/test": { "version": "1.29.2", "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.29.2.tgz", @@ -1099,7 +1141,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -1660,7 +1701,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1761,7 +1801,6 @@ "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -1777,7 +1816,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" }, @@ -1801,7 +1839,6 @@ "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -1822,7 +1859,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2177,7 +2213,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" } @@ -2440,7 +2475,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" } @@ -2449,7 +2483,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -2491,9 +2524,9 @@ } }, "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2716,7 +2749,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" }, @@ -2805,7 +2837,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", @@ -2875,7 +2906,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" @@ -2916,7 +2946,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", @@ -3117,8 +3146,7 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "node_modules/streamsearch": { "version": "1.1.0", @@ -3403,6 +3431,22 @@ "sourcemap-codec": "^1.4.8" } }, + "node_modules/svelte-sitemap": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/svelte-sitemap/-/svelte-sitemap-2.6.0.tgz", + "integrity": "sha512-WcwsuIeo8iJFG9a5cgvXwXEGoyjk6Zowb6JmL5BbwfnFXMzakGa1+mQjthw5Ni3UV/gGbE0PgJvc7Ygir3LmFg==", + "dependencies": { + "fast-glob": "^3.2.12", + "minimist": "^1.2.8", + "xmlbuilder2": "^3.0.2" + }, + "bin": { + "svelte-sitemap": "index.js" + }, + "engines": { + "node": ">= 14.17.0" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -3475,7 +3519,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" }, @@ -3757,6 +3800,41 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "node_modules/xmlbuilder2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.0.2.tgz", + "integrity": "sha512-h4MUawGY21CTdhV4xm3DG9dgsqyhDkZvVJBx88beqX8wJs3VgyGQgAn5VreHuae6unTQxh115aMK5InCVmOIKw==", + "dependencies": { + "@oozcitak/dom": "1.15.10", + "@oozcitak/infra": "1.0.8", + "@oozcitak/util": "8.3.8", + "@types/node": "*", + "js-yaml": "3.14.0" + }, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/xmlbuilder2/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/xmlbuilder2/node_modules/js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -4048,7 +4126,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, "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -4057,19 +4134,49 @@ "@nodelib/fs.stat": { "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 + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" }, "@nodelib/fs.walk": { "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, "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, + "@oozcitak/dom": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz", + "integrity": "sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==", + "requires": { + "@oozcitak/infra": "1.0.8", + "@oozcitak/url": "1.0.4", + "@oozcitak/util": "8.3.8" + } + }, + "@oozcitak/infra": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@oozcitak/infra/-/infra-1.0.8.tgz", + "integrity": "sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==", + "requires": { + "@oozcitak/util": "8.3.8" + } + }, + "@oozcitak/url": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@oozcitak/url/-/url-1.0.4.tgz", + "integrity": "sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==", + "requires": { + "@oozcitak/infra": "1.0.8", + "@oozcitak/util": "8.3.8" + } + }, + "@oozcitak/util": { + "version": "8.3.8", + "resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-8.3.8.tgz", + "integrity": "sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==" + }, "@playwright/test": { "version": "1.29.2", "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.29.2.tgz", @@ -4435,7 +4542,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -4861,8 +4967,7 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { "version": "1.4.0", @@ -4944,7 +5049,6 @@ "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -4957,7 +5061,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, "requires": { "is-glob": "^4.0.1" } @@ -4980,7 +5083,6 @@ "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, "requires": { "reusify": "^1.0.4" } @@ -4998,7 +5100,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -5262,8 +5363,7 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-path-inside": { "version": "3.0.3", @@ -5469,14 +5569,12 @@ "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "requires": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -5503,9 +5601,9 @@ } }, "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, "mkdirp": { "version": "1.0.4", @@ -5667,8 +5765,7 @@ "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "playwright-core": { "version": "1.29.2", @@ -5713,8 +5810,7 @@ "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "readdirp": { "version": "3.6.0", @@ -5751,8 +5847,7 @@ "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "rimraf": { "version": "3.0.2", @@ -5776,7 +5871,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, "requires": { "queue-microtask": "^1.2.2" } @@ -5920,8 +6014,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "streamsearch": { "version": "1.1.0", @@ -6065,6 +6158,16 @@ "marked": "^1.0.0" } }, + "svelte-sitemap": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/svelte-sitemap/-/svelte-sitemap-2.6.0.tgz", + "integrity": "sha512-WcwsuIeo8iJFG9a5cgvXwXEGoyjk6Zowb6JmL5BbwfnFXMzakGa1+mQjthw5Ni3UV/gGbE0PgJvc7Ygir3LmFg==", + "requires": { + "fast-glob": "^3.2.12", + "minimist": "^1.2.8", + "xmlbuilder2": "^3.0.2" + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -6128,7 +6231,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, "requires": { "is-number": "^7.0.0" } @@ -6284,6 +6386,37 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "xmlbuilder2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.0.2.tgz", + "integrity": "sha512-h4MUawGY21CTdhV4xm3DG9dgsqyhDkZvVJBx88beqX8wJs3VgyGQgAn5VreHuae6unTQxh115aMK5InCVmOIKw==", + "requires": { + "@oozcitak/dom": "1.15.10", + "@oozcitak/infra": "1.0.8", + "@oozcitak/util": "8.3.8", + "@types/node": "*", + "js-yaml": "3.14.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } + } + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", diff --git a/package.json b/package.json index c3b416f..fc9a7de 100644 --- a/package.json +++ b/package.json @@ -1,51 +1,53 @@ { - "name": "mycv", - "version": "0.0.1", - "scripts": { - "update-model": "json2ts ./src/lib/model/schema.json ./src/lib/model/job.d.ts", - "dev": "vite dev", - "build": "vite build", - "preview": "vite preview", - "test": "playwright test", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "test:unit": "vitest", - "lint": "prettier --plugin-search-dir . --check . && eslint .", - "format": "prettier --plugin-search-dir . --write ." - }, - "devDependencies": { - "@playwright/test": "^1.28.1", - "@sveltejs/adapter-auto": "^1.0.0", - "@sveltejs/adapter-static": "^1.0.5", - "@sveltejs/kit": "^1.0.0", - "@types/markdown-it": "^12.2.3", - "@typescript-eslint/eslint-plugin": "^5.45.0", - "@typescript-eslint/parser": "^5.45.0", - "eslint": "^8.28.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-svelte3": "^4.0.0", - "prettier": "^2.8.0", - "prettier-plugin-svelte": "^2.8.1", - "sass": "^1.57.1", - "svelte": "^3.54.0", - "svelte-check": "^3.0.1", - "svelte-meta-tags": "^2.5.5", - "svelte-preprocess": "^4.9.4", - "svelte-preprocess-markdown": "^2.7.3", - "tslib": "^2.4.1", - "typescript": "^4.9.3", - "vite": "^4.0.0", - "vitest": "^0.25.3" - }, - "type": "module", - "dependencies": { - "@fortawesome/fontawesome-svg-core": "^6.2.1", - "@fortawesome/free-brands-svg-icons": "^6.2.1", - "@fortawesome/free-solid-svg-icons": "^6.2.1", - "@fortawesome/svelte-fontawesome": "^0.2.0", - "json-schema-to-typescript": "^10.1.5", - "markdown-it": "^12.2.0", - "punycode": "^2.1.1", - "typesafe-i18n": "^5.20.0" - } + "name": "mycv", + "version": "0.0.1", + "scripts": { + "update-model": "json2ts ./src/lib/model/schemas/job.json ./src/lib/model/job.ts && json2ts ./src/lib/model/schemas/logo.json ./src/lib/model/logo.ts", + "dev": "vite dev", + "build": "vite build", + "postbuild": "npx svelte-sitemap --domain https://pettinato.eu", + "preview": "vite preview", + "test": "playwright test", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "test:unit": "vitest", + "lint": "prettier --plugin-search-dir . --check . && eslint .", + "format": "prettier --plugin-search-dir . --write ." + }, + "devDependencies": { + "@playwright/test": "^1.28.1", + "@sveltejs/adapter-auto": "^1.0.0", + "@sveltejs/adapter-static": "^1.0.5", + "@sveltejs/kit": "^1.0.0", + "@types/markdown-it": "^12.2.3", + "@typescript-eslint/eslint-plugin": "^5.45.0", + "@typescript-eslint/parser": "^5.45.0", + "eslint": "^8.28.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-svelte3": "^4.0.0", + "prettier": "^2.8.0", + "prettier-plugin-svelte": "^2.8.1", + "sass": "^1.57.1", + "svelte": "^3.54.0", + "svelte-check": "^3.0.1", + "svelte-meta-tags": "^2.5.5", + "svelte-preprocess": "^4.9.4", + "svelte-preprocess-markdown": "^2.7.3", + "tslib": "^2.4.1", + "typescript": "^4.9.3", + "vite": "^4.0.0", + "vitest": "^0.25.3" + }, + "type": "module", + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.2.1", + "@fortawesome/free-brands-svg-icons": "^6.2.1", + "@fortawesome/free-solid-svg-icons": "^6.2.1", + "@fortawesome/svelte-fontawesome": "^0.2.0", + "json-schema-to-typescript": "^10.1.5", + "markdown-it": "^12.2.0", + "punycode": "^2.1.1", + "svelte-sitemap": "^2.6.0", + "typesafe-i18n": "^5.20.0" + } } diff --git a/src/app.html b/src/app.html index effe0d0..0bfbf4d 100644 --- a/src/app.html +++ b/src/app.html @@ -1,5 +1,5 @@ - + diff --git a/src/lib/elements/AboutMe.svelte b/src/lib/elements/AboutMe.svelte index b98b95b..60a0ba4 100644 --- a/src/lib/elements/AboutMe.svelte +++ b/src/lib/elements/AboutMe.svelte @@ -8,17 +8,14 @@ const downloadDefinition = findIconDefinition({ prefix: 'fas', iconName: 'download' }); import type { CurrentLanguage, LanguagePair } from '$lib/types'; const whoIt = - "Ciao! Sono Gianmarco Pettinato, mi sono laureato in scienze informatiche e sono uno sviluppatore full-stack.\ + "Ciao! Sono Gianmarco Pettinato, mi sono laureato in scienze informatiche e sono uno sviluppatore.\ Ho famigliarità con diversi linguaggi e framework, sia front-end che back-end.\ - In particolare con C++ con Qt e TypeScript con Express, serverless, Angular, Vue.js e Svelte.\ Tra le mie competenze, oltre allo sviluppo software e alla manutenzione di sistemi linux, spicca la gestione di ambienti CI/CD, con pipeline automatiche e container come Docker.\ Sono interessato in particolar modo all'ambiente dei dispositivi IoT e del wearble tech.\ - Nel tempo libero mi dedico alla gestione del mio home sever e alla costruzione e manutenzione di computer.\ - Per maggiori informazioni non esitate a contattarmi."; + Nel tempo libero mi dedico alla gestione del mio home sever e alla costruzione e manutenzione di computer."; const whoEn = - "Hi! I'm Gianmarco Pettinato. I have a bachelor degree in computer science, and I'm a full-stack developer.\ - I know several languages and frameworks, either front-end or back-end.\ - In particular, I have experience in C++ with Qt and TypeScript with Express, serverless, Angular, Vue.js and Svelte.\ + "Hi! I'm Gianmarco Pettinato. I have a bachelor's degree in computer science, and I'm a developer.\ + I know several languages and frameworks, front-end and back-end.\ Among my skill-set, there is the administration of the CI/CD environment with Docker.\ I'm interested in the IoT world and Wearable tech. In my free time, I like to manage my GNU/Linux home server and build PCs."; @@ -41,13 +38,13 @@ {who[currentLanguage]}

-
+
diff --git a/src/lib/elements/LanguageSelector.svelte b/src/lib/elements/LanguageSelector.svelte index 2ff5d36..50a0813 100644 --- a/src/lib/elements/LanguageSelector.svelte +++ b/src/lib/elements/LanguageSelector.svelte @@ -26,7 +26,6 @@ function setLanguage(value: CurrentLanguage) { currentLanguage = value; - ({ svelteHTML }); } svgCore.library.add(svgIcons.faGlobeEurope); @@ -75,7 +74,7 @@ button { background: none; border: none; - width: 50px; + width: 60px; height: 50px; } .custom-button { diff --git a/src/lib/elements/Training.svelte b/src/lib/elements/Training.svelte index 96d393c..04d7b05 100644 --- a/src/lib/elements/Training.svelte +++ b/src/lib/elements/Training.svelte @@ -1,7 +1,7 @@
diff --git a/src/lib/model/job.d.ts b/src/lib/model/job.ts similarity index 95% rename from src/lib/model/job.d.ts rename to src/lib/model/job.ts index 8ac39ed..c6e2611 100644 --- a/src/lib/model/job.d.ts +++ b/src/lib/model/job.ts @@ -5,7 +5,7 @@ * and run json-schema-to-typescript to regenerate this file. */ -export interface Schema { +export interface Job { id?: string; year: { start: string; diff --git a/src/lib/model/jobs.json b/src/lib/model/jobs.json index d6d1ef3..89a0215 100644 --- a/src/lib/model/jobs.json +++ b/src/lib/model/jobs.json @@ -4,10 +4,13 @@ "start": "2022-01-03", "end": "" }, - "title": {"en":"ALTEN italy","it":"ALTEN italia"}, - "content": { - "en":"At the end of 2021, while I was trying to publicize my activity, I received many jobs offers.\n Alten Italy offered a position as a software developer consultant for their clients.\n So, from the 3rd of January, I'm working for Aten Italy in the Bologna's division.\n In this period, I'm working with Laravel, Vuejs, Nodejs and AWS environments.", - "it":"Alla fine del 2021, mentre stavo cercando di fare pubblicità per la mia attività, ho ricevuto diverse offerte di lavoro, tra cui Alten Italia.\n Quindi, dal 3 gennaio 2022 sono impiegato in Alten Italia, nella sede di Bologna, come consulente informatico.\n Attualmente di occupo di sviluppo software con laravel, vuejs e nodejs in ambienti AWS." + "title": { + "en": "ALTEN italy", + "it": "ALTEN italia" + }, + "content": { + "en": "At the end of 2021, while I was trying to advertise my business, I received several job offers, including one from Alten Italy.\nSo, since January 3, 2022, I have been employed at Alten Italy, in the Bologna office, as an **IT consultant**.\nThere are two aspects to keep in mind when working in consulting: the client and the consulting company, both of which require attention and different tasks.\nFor the client, I perform the duties of a **full stack cloud developer in AWS** and some **Scrum Master** responsibilities.\nRegarding Alten, I have written and conducted courses on **git**, **docker**, and **CI/CD** systems. I have been involved in the personnel selection process.", + "it": "Alla fine del 2021, mentre stavo cercando di fare pubblicità per la mia attività, ho ricevuto diverse offerte di lavoro, tra cui Alten Italia.\nQuindi, dal 3 gennaio 2022 sono impiegato in Alten Italia, nella sede di Bologna, come **consulente informatico**.\nCi sono due lati da tenere a mente quando si lavora in consulenza, il cliente e l’azienda di consulenza, entrambe le realtà richiedono attenzione e mansioni diverse.\nPer il cliente mi svolgo le mansioni da **full stack cloud developer in AWS** e alcune delle mansioni dello **Scrum Master**.\nPer quanto riguarda Alten, ho scritto e tenuto dei corsi per **git**, **docker** e sistemi di **CI/CD**. Ho fatto parte del processo di selezione del personale." }, "collaborators": [], "languages": [ @@ -26,17 +29,22 @@ "Docker", "AWS" ], - "images":["/ALTEN.webp"] + "images": [ + "/ALTEN.webp" + ] }, { "year": { "start": "2021-01-10", "end": "2021-12-31" }, - "title": {"en":"Jatus.tech my start-up","it":"La mia start-up Jatus.tech"}, + "title": { + "en": "Jatus.tech my start-up", + "it": "La mia start-up Jatus.tech" + }, "content": { - "en":"In 2021, I worked to open a start-up with an app idea.\nTo do so, I acquired skills in design and developing a software solution for the problem. I learnt how to set up a **CI/CD** pipeline with **Docker** and **Gitlab** and took confidence in **serverless** technologies like AWS.", - "it":"Nel corso del 2021 ho lavorato per avviare una mia attività indipendente, basata su un’idea per una app che ritenevo, e ritengo, fattibile. In questo periodo ho dovuto ricoprire diversi ruoli per portar avanti quest’iniziativa. Di conseguenza ho imparato a svolgere le mansioni di analista e architetto, **devops** e sviluppo. \n In particolare, ho acquisito dimestichezza con i sistemi di **CI/CD** basati su **Docker** e nell’uso di tecnologie **serverless**." + "en": "During 2021, I worked to launch my own startup based on my app idea. The app focused on smartphone-based shopping within a supermarket, utilizing a network of **Bluetooth** sensors for user tracking and enabling user triangulation. The entire application infrastructure was built on **AWS** cloud services.\nThroughout this period, I took on various roles and performed different tasks. I established a working infrastructure with a **Git** server and **SonarQube** for automated code quality verification. Additionally, I gained experience in managing virtual machines for development and staging environments to test applications in a production-like setting.\nI developed **CI/CD** solutions for the product using custom-built **Docker** images. Lastly, I designed and developed the app using **TypeScript** and **Java**. TypeScript was used for the backend and certain parts of the application, while Java was employed for the app's native components, including transmitting **Bluetooth** signals for tracking purposes.", + "it": "Durante il 2021, ho avviato una mia attività indipendente basata su un'idea di app. L'app si focalizzava sulla spesa all'interno di un supermercato tramite smartphone, utilizzando una rete di sensori **Bluetooth** per il tracciamento degli utenti. L'intera infrastruttura dell'app era basata sui servizi cloud di **AWS**.\nDurante questo periodo, ho svolto diversi ruoli e mansioni. Ho creato un'infrastruttura di lavoro con un server **Git** e **SonarQube** per la verifica automatica della qualità del codice. Inoltre, ho imparato a gestire macchine virtuali per lo sviluppo e la fase di test in un ambiente simile a quello di produzione.\nHo sviluppato soluzioni di **CI/CD** per il prodotto utilizzando immagini **Docker** create appositamente. Infine, ho progettato e sviluppato l'applicazione utilizzando **TypeScript** e **Java**. Ho utilizzato TypeScript per il backend e alcune parti dell'applicazione, mentre Java è stato utilizzato per le funzionalità native dell'app, come l'invio dei segnali **Bluetooth** per il tracciamento." }, "collaborators": [], "languages": [ @@ -54,17 +62,22 @@ "GitLab", "Nativescript" ], - "images":["/logo-jatus-tech.webp"] + "images": [ + "/logo-jatus-tech.webp" + ] }, { "year": { "start": "2020-9-21", "end": "2020-11-21" }, - "title": {"en":"Intership in Athesys","it":"Tirocinio in Athesys"}, + "title": { + "en": "Intership in Athesys", + "it": "Tirocinio in Athesys" + }, "content": { - "en":"I've chosen to work in Athesis to end my bachelor degree course. The project was about developing a middleware to put in communication two applications between **NATed** networks based on **OAuth2.0**. This middleware assures the connection is authorized. This software mainly approved the connection of devices that detected the presence of a face mask and the body temperature in the range", - "it":"Per la tesi di laurea, ho scelto di fare il tirocinio in Athesys. Il progetto prevedeva lo sviluppo di un middleware per mettere in comunicazione, in maniera sicura, due applicazioni tra reti **NAT** basato sui protocolli autorizzativi di **OAuth2.0**.\n Dato il periodo, dove la seconda ondata della pandemia era alle porte, era necessario avere un sistema sicuro per la comuncazione tra dispositivi di controllo dell'ingresso e il \"back-end\", come tablet con termoscanner e software per il riconoscimento della mascherina." + "en": "I've chosen to work in Athesis to end my bachelor degree course. The project was about developing a middleware to put in communication two applications between **NATed** networks based on **OAuth2.0**. This middleware assures the connection is authorized. This software mainly approved the connection of devices that detected the presence of a face mask and the body temperature in the range", + "it": "Per la tesi di laurea, ho scelto di fare il tirocinio in Athesys. Il progetto prevedeva lo sviluppo di un middleware per mettere in comunicazione, in maniera sicura, due applicazioni tra reti **NAT** basato sui protocolli autorizzativi di **OAuth2.0**.\n Dato il periodo, dove la seconda ondata della pandemia era alle porte, era necessario avere un sistema sicuro per la comuncazione tra dispositivi di controllo dell'ingresso e il \"back-end\", come tablet con termoscanner e software per il riconoscimento della mascherina." }, "collaborators": [], "languages": [ @@ -78,17 +91,22 @@ "Nuxt", "Docker" ], - "images":["/logo-athesys.webp"] + "images": [ + "/logo-athesys.webp" + ] }, { "year": { "start": "2016-08-13", "end": "2017-02-13" }, - "title": {"en":"Developer in Alternative Studio","it":"Sviluppatore in Alternative Studio"}, + "title": { + "en": "Developer in Alternative Studio", + "it": "Sviluppatore in Alternative Studio" + }, "content": { - "en":"I've projected and developed a Telegram bot with direct communication to management software for the dog squad Italian civil defence to enable communication between HQ and agent on the ground", - "it":"Progettazione e sviluppo di un Bot Telegram con comunicazione diretta al gestionale per la sezione cinofila della Protezione Civile" + "en": "I've projected and developed a Telegram bot with direct communication to management software for the dog squad Italian civil defence to enable communication between HQ and agent on the ground", + "it": "Progettazione e sviluppo di un Bot Telegram con comunicazione diretta al gestionale per la sezione cinofila della Protezione Civile" }, "collaborators": [], "languages": [ @@ -99,21 +117,28 @@ "Composer", "Docker" ], - "images":["/alternative-studio.webp"] + "images": [ + "/alternative-studio.webp" + ] }, { "year": { "start": "2012-06-05", "end": "2012-07-05" }, - "title": {"en":"ICT office's assistant","it":"Assistente dell'ufficio ICT "}, + "title": { + "en": "ICT office's assistant", + "it": "Assistente dell'ufficio ICT " + }, "content": { - "en":"I applied to this position, in Saxon Hill Academy, through the European project Leonardo which provided accommodation for the stay, an English course and a workplace mainly for practices the language skill. In Saxon Hill Academy, my responsibilities were:\n - Maintenance of administration's computers.\n - Maintenance of students' computers.\n - Make the sensorial room usable.", - "it":"Ho avuto l'opportunità di lavorare in questo ambiente grazie al progetto europeo Leonardo. Questo progetto di 4 settimane si occupava di fornire agli studenti tutto il necessario tra vitto e alloggio, prevedeva, inoltre, un corso di inglese e un luogo di lavoro dove fare principalmente pratica con la lingua. In questo contesto sono stato assegnato a Saxon Hill Academy dove ho svolto le seguenti mansioni:\n - Manutenzione dei computer della segreteria\n - Manutenzione dei computer degli studenti \n - Rendere operativa la \"sensiorial room\"" + "en": "I applied to this position, in Saxon Hill Academy, through the European project Leonardo which provided accommodation for the stay, an English course and a workplace mainly for practices the language skill. In Saxon Hill Academy, my responsibilities were:\n - Maintenance of administration's computers.\n - Maintenance of students' computers.\n - Make the sensorial room usable.", + "it": "Ho avuto l'opportunità di lavorare in questo ambiente grazie al progetto europeo Leonardo. Questo progetto di 4 settimane si occupava di fornire agli studenti tutto il necessario tra vitto e alloggio, prevedeva, inoltre, un corso di inglese e un luogo di lavoro dove fare principalmente pratica con la lingua. In questo contesto sono stato assegnato a Saxon Hill Academy dove ho svolto le seguenti mansioni:\n - Manutenzione dei computer della segreteria\n - Manutenzione dei computer degli studenti \n - Rendere operativa la \"sensiorial room\"" }, "collaborators": [], "languages": [], "tecnologies": [], - "images":["/saxonhilllogo.webp"] + "images": [ + "/saxonhilllogo.webp" + ] } -] +] \ No newline at end of file diff --git a/src/lib/model/logo.ts b/src/lib/model/logo.ts new file mode 100644 index 0000000..2345621 --- /dev/null +++ b/src/lib/model/logo.ts @@ -0,0 +1,11 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +export interface Logo { + img: string; + name: string; +} diff --git a/src/lib/model/logos.json b/src/lib/model/logos.json new file mode 100644 index 0000000..73878a4 --- /dev/null +++ b/src/lib/model/logos.json @@ -0,0 +1,8 @@ +[ + { + "img": "ts-logo-128.svg", + "name": "TypeScript" + }, + { "img": "cplusplus", "name": "C++" }, + { "img": "rust-logo.svg", "name": "Rust" } +] diff --git a/src/lib/model/portfolio.json b/src/lib/model/portfolio.json index 654b809..8a760c9 100644 --- a/src/lib/model/portfolio.json +++ b/src/lib/model/portfolio.json @@ -4,10 +4,13 @@ "start": "2021-10-01", "end": "2021-10-19" }, - "title": {"en":"This web site","it":"Questo sito web"}, + "title": { + "en": "This web site", + "it": "Questo sito web" + }, "content": { - "en":"I created this web page to collect and present all my experiences. I'm not a web designer. However, I can build web pages because I have good knowledge of HTML and CSS. I made this page using TypeScript and Svelte. To manage the content, I've created a simple system to load content from a couple of JSON files that define where to put the information.", - "it":"Ho creato questo sito web per raccogliere e raccontare le mie esperienze. Come si può facilmente intuire non sono un web designer, ma ho comunque buone conoscenze nell'uso di HTML e CSS. Ho realizzato questa pagina web in TypeScript e Svelte, per la gestione dei contenuti ho ideato un semplice sistema che controlla i dati presenti in un paio di file JSON che definiscono i contenuti della pagina e delle sezioni." + "en": "I created this web page to collect and present all my experiences. I'm not a web designer. However, I can build web pages because I have good knowledge of HTML and CSS. I made this page using TypeScript and Svelte. To manage the content, I've created a simple system to load content from a couple of JSON files that define where to put the information.", + "it": "Ho creato questo sito web per raccogliere e raccontare le mie esperienze. Come si può facilmente intuire non sono un web designer, ma ho comunque buone conoscenze nell'uso di HTML e CSS. Ho realizzato questa pagina web in TypeScript e Svelte, per la gestione dei contenuti ho ideato un semplice sistema che controlla i dati presenti in un paio di file JSON che definiscono i contenuti della pagina e delle sezioni." }, "collaborators": [], "languages": [ @@ -18,30 +21,46 @@ "Svelte", "Node.js" ], - "images":["/webpage.webp"] + "images": [ + "/webpage.webp" + ] }, { - "year":{ - "start":"2021-09-15", - "end":"2021-09-28"}, - "title":{"en":"Greenpass server validator","it":"Greenpass server validatore"}, - "content":{ - "en":"I've created a server in TypeScript with Express.js endpoints that can read the raw data from a Green pass Qrcode and establish if it is valid with the Italian regulations. I [released the software](https://git.jatus.tech/Jatus/dgcserververifier) under AGPLv3 as requested from the DCC utils library.", - "it":"Ho creato un server in TypeScript e express che leggendo i dati *raw* del Qr code del green pass può determinarne la sua validità, ho [rilasciato il software](https://git.jatus.tech/Jatus/dgcserververifier) in licenza AGPLv3 come previsto dalla librearia DCC utils del Ministero della Salute italiano."}, - "collaborators":[], - "languages":["TypeScript"], - "tecnologies":["Node.js"], - "images":["./DGCServerVerifier.webp"] + "year": { + "start": "2021-09-15", + "end": "2021-09-28" + }, + "title": { + "en": "Greenpass server validator", + "it": "Greenpass server validatore" + }, + "content": { + "en": "I've created a server in TypeScript with Express.js endpoints that can read the raw data from a Green pass Qrcode and establish if it is valid with the Italian regulations. I [released the software](https://git.jatus.tech/Jatus/dgcserververifier) under AGPLv3 as requested from the DCC utils library.", + "it": "Ho creato un server in TypeScript e express che leggendo i dati *raw* del Qr code del green pass può determinarne la sua validità, ho [rilasciato il software](https://git.jatus.tech/Jatus/dgcserververifier) in licenza AGPLv3 come previsto dalla librearia DCC utils del Ministero della Salute italiano." + }, + "collaborators": [], + "languages": [ + "TypeScript" + ], + "tecnologies": [ + "Node.js" + ], + "images": [ + "./DGCServerVerifier.webp" + ] }, { "year": { "start": "2021-04-01", "end": "2021-05-02" }, - "title": {"en":"Keyboard","it":"Tastiera"}, + "title": { + "en": "Keyboard", + "it": "Tastiera" + }, "content": { - "en":"I spend a lot of time at my desk writing on the PC with not the best posture. This kind of behaviour was going to take a toll on my well-being, so I decided to start looking for a split design keyboard.\n The first keyboard that I found was the [Ergodox-EZ](https://ergodox-ez.com), but the steep price of more than 300 euros put me off. Then I found the subreddit [r/ErgoMechBoards](https://www.reddit.com/r/ErgoMechKeyboards) and saw a lot of different concepts, the one that stuck with me was the [lily58](https://github.com/kata0510/Lily58).\n So, I ordered all the pieces from various online stores. I took the kit from the [Keyhive](https://keyhive.xyz) shop for the base parts, like PCB and guide for the switches, bought the switches from [CandyKeys](https://candykeys.com) and a cheap keycap set from amazon.\n When all the pieces showed up at my place, I soldered all the components and assembled the keyboard. To add some flare, I printed with my 3d printer a custom case that I found on Thingiverse.\n In the future, I'd like to add a system to tilt the keyboard to fix the pronation issue.", - "it":"Io passo molto tempo al PC e spesso non ho una corretta postura. Sperando di mitigare il problema, iniziai a cercare delle tastiere ergonomiche come quelle con il design *split*.\n La prima che trovai fu [Ergodox-EZ](https://ergodox-ez.com), ma il prezzo di più 300 euro mi fece desistere. Successivamente trovai il *subreddit* [r/ErgoMechBoards](https://www.reddit.com/r/ErgoMechKeyboards) e vidi molti modelli diversi, quello che mi piacque di più fu [lily58](https://github.com/kata0510/Lily58).\n Quindi, ordinai i pezzi da diversi negozi online. Presi da [Keyhive](https://keyhive.xyz) le parti base come il PCB e la guida per i tasti e da [CandyKeys](https://candykeys.com) gli switch, per quanto riguarda i keycaps li presi da Amazon ordinando dal meno caro.\n Quando tutti i pezzi arrivarono, con pazienza e dedizione saldai tutti i componenti e assemblai la tastiera. Per aggiungere un tocco personale, stampai con la mia stampante 3d la scocca che trovai su Thingverse.\n Come miglioramenti futuri, mi piacerebbe aggiungere un sistema per angolare la tastiera e risolvere il problema di pronazione dei polsi." + "en": "I spend a lot of time at my desk writing on the PC with not the best posture. This kind of behaviour was going to take a toll on my well-being, so I decided to start looking for a split design keyboard.\n The first keyboard that I found was the [Ergodox-EZ](https://ergodox-ez.com), but the steep price of more than 300 euros put me off. Then I found the subreddit [r/ErgoMechBoards](https://www.reddit.com/r/ErgoMechKeyboards) and saw a lot of different concepts, the one that stuck with me was the [lily58](https://github.com/kata0510/Lily58).\n So, I ordered all the pieces from various online stores. I took the kit from the [Keyhive](https://keyhive.xyz) shop for the base parts, like PCB and guide for the switches, bought the switches from [CandyKeys](https://candykeys.com) and a cheap keycap set from amazon.\n When all the pieces showed up at my place, I soldered all the components and assembled the keyboard. To add some flare, I printed with my 3d printer a custom case that I found on Thingiverse.\n In the future, I'd like to add a system to tilt the keyboard to fix the pronation issue.", + "it": "Io passo molto tempo al PC e spesso non ho una corretta postura. Sperando di mitigare il problema, ho cercato delle tastiere ergonomiche come quelle con il design *split*.\n Il primo risultato su google era [Ergodox-EZ](https://ergodox-ez.com), ma il prezzo di più 300 euro ha fatto desistere. Successivamente, tramite il *subreddit* [r/ErgoMechBoards](https://www.reddit.com/r/ErgoMechKeyboards), ho visto diversi modelli DIY, quello che ha stuzicato il mio interesse è stato [lily58](https://github.com/kata0510/Lily58).\n Quindi, ho ordinato il PCB e le parti base della tastiera da [Keyhive](https://keyhive.xyz) e da [CandyKeys](https://candykeys.com) gli switch, per quanto riguarda i keycaps ho scelto un set da poco su da Amazon.\n Arrivati tutti i pezzi, con pazienza e dedizione ho saldato tutti i componenti e assemblato la tastiera. Per aggiungere un tocco personale, ho stampato con la mia stampante 3d la scocca trovata su Thingverse.\n Come miglioramenti futuri, mi piacerebbe aggiungere un sistema per angolare la tastiera e risolvere il problema di pronazione dei polsi." }, "collaborators": [], "languages": [ @@ -50,130 +69,288 @@ "tecnologies": [ "QMK" ], - "images":["/custom-keyboard.webp"] + "images": [ + "/custom-keyboard.webp" + ] }, { - "year":{ - "start":"2021-09-15", - "end":"2021-09-30"}, - "title":{"en":"3D printer, to print all my ideas","it":"Stampante 3D per stampare le mie idee."}, - "content":{ - "en":"I'm a tech enthusiast and, I like to overcome challenges made for the maker type of people. To organize the 3d printer area, I followed a few of the many bits of advice from the 3d printing *community*. Like, build the furniture to hold the printer from two IKEA's Lack stack one upon the other and joined with some 3d printed parts. Another upgrade was to add a Raspberry pi 4 with a camera module and OctoPrint software to remote manage the printer whenever.", - "it":"Sono un appassionato di tecnologia e mi piace anche affrontare sfide tipiche dei *maker*. Per organizzare meglio gli spazi ho seguito gli innumerovili consigli della *community* sul costruire un mobile a partire da due mobili ikea \"Lack\" e di unirli con due pezzi stampati. Un'altra miglioria che ho effettuato è sul sistema di controllo della stampante stessa aggiungendo un raspberry pi 4 con webcam e munito del software octoprint che mi permette di controllarne lo stato da remoto." + "year": { + "start": "2021-09-15", + "end": "2021-09-30" }, - "collaborators":[], - "languages":["bash","python"], - "tecnologies":["raspberry"], - "images":["/3dprinter.webp"] - },{ - "year":{ - "start":"2021-09-15", - "end":"2021-09-30"}, - "title":{"en":"Unraid Server","it":"Unraid Server"}, - "content":{ - "en":"To manage all my software and data, I built a home server with Unraid server. I based the system on the Ryzen platform with an R9 3900X CPU, two 2TB disks for work data and software and, 4 disks 4TB for family storage.", - "it":"Per gestire il mio software e i miei dati, ho costruito un server usando la distrubuzione Unraid. Il server è basato su una piattaforma ryzen con R9 3900X, due dischi da 2TB per i dati di lavoro e 4 dischi da 4TB, in configurazione RAID10, per lo spazio della mia famiglia." + "title": { + "en": "3D printer, to print all my ideas", + "it": "Stampante 3D per stampare le mie idee." }, - "collaborators":[], - "languages":["YAML"], - "tecnologies":["Docker","Unraid","GNU/Linux"], - "images":["./unraid.webp"] + "content": { + "en": "I'm a tech enthusiast and, I like to overcome challenges made for the maker type of people. To organize the 3d printer area, I followed a few of the many bits of advice from the 3d printing *community*. Like, build the furniture to hold the printer from two IKEA's Lack stack one upon the other and joined with some 3d printed parts. Another upgrade was to add a Raspberry pi 4 with a camera module and OctoPrint software to remote manage the printer whenever.", + "it": "Sono un appassionato di tecnologia e mi piace anche affrontare sfide tipiche dei *maker*. Per organizzare meglio gli spazi ho seguito gli innumerovili consigli della *community* sul costruire un mobile a partire da due mobili ikea \"Lack\" e di unirli con due pezzi stampati. Un'altra miglioria che ho effettuato è sul sistema di controllo della stampante stessa aggiungendo un raspberry pi 4 con webcam e munito del software octoprint che mi permette di controllarne lo stato da remoto." + }, + "collaborators": [], + "languages": [ + "bash", + "python" + ], + "tecnologies": [ + "raspberry" + ], + "images": [ + "/3dprinter.webp" + ] }, { - "year":{ - "start":"2019-04-15", - "end":""}, - "title":{"en":"Workstation","it":"Postazione di lavoro"}, - "content":{ - "en":"My workstation is build upon my custom desk made on request and can accommodate my PC and laptop, I use both of them to work and develop my projects. The monitors are an 34\" 21:9 with a resoluztion of 3440x1440 and a 27\" 16:9 with a resolution of 2560x1440. ", - "it":"La mia postazione di lavoro parte dalla scrivania che è stata fatta su misura e può accomodare il mio computer fisso e il mio portatile, entrambe macchine che uso per lavorare e dedicarmi ai miei progetti. I monitor sono un 21:9 da 34\" con risoluzione 3440x1440 e un 16:9 da 27\" in verticale da 2560x1440." + "year": { + "start": "2021-09-15", + "end": "2021-09-30" }, - "collaborators":[], - "languages":[], - "tecnologies":[], - "images":["/workstation.webp"] + "title": { + "en": "Unraid Server", + "it": "Unraid Server" + }, + "content": { + "en": "To manage all my software and data, I built a home server with Unraid server. I based the system on the Ryzen platform with an R9 3900X CPU, two 2TB disks for work data and software and, 4 disks 4TB for family storage.", + "it": "Per gestire il mio software e i miei dati, ho costruito un server usando la distrubuzione Unraid. Il server è basato su una piattaforma ryzen con R9 3900X, due dischi da 2TB per i dati di lavoro e 4 dischi da 4TB, in configurazione RAID10, per lo spazio della mia famiglia." + }, + "collaborators": [], + "languages": [ + "YAML" + ], + "tecnologies": [ + "Docker", + "Unraid", + "GNU/Linux" + ], + "images": [ + "./unraid.webp" + ] }, { - "year":{ - "start":"2019-11-17", - "end":"2020-05-18"}, - "title":{"en":"Software Engineering Project","it":"Progetto di Ingegneria del Software"}, - "content":{ - "en":"While in university, I worked on a project for the software engineering course. The group decided to develop the project Etherless, a FAAS based on Etherium and AWS lambda. The system worked like this, a user writes a function and uploads it to the service that assigns a cost of execution. Then, when a user wants to execute the function, must issue the request and pay the execution through the Ethereum network. We released all the software in MIT licence here [Tenners Unipd](https://github.com/TennersUnipd).", - "it":"Per il corso di ingegneria del software sono stato assegnato ad un gruppo di colleghi di corso universitario per sviluppare uno dei progetti proposti. Scegliemmo Etherless ovvero un **FAAS** usando la piattaforma AWS lambda per l'esecuzione delle funzioni. Gli utenti possono scrivere e pubblicare funzioni sul servizio, determinandone il costo di esecuzione. Quindi, altri utenti possono richiedere l'esecuzione, pagando il corrispettivo compenso, attraverso la rete Ethereum. Abbiamo rilasciato il software in licenza MIT [Tenners Unipd](https://github.com/TennersUnipd)" + "year": { + "start": "2019-04-15", + "end": "" }, - "collaborators":[{"name":"Gezim","surname":"Cikaqi","ref":"https://www.linkedin.com/in/gezimcikaqi/"},{"name":"Gabriel","surname":"Ciulei","ref":"https://www.linkedin.com/in/gabriel-ciulei/"},{"name":"Simone","surname":"Franconetti","ref":"https://www.linkedin.com/in/simone-franconetti-2b48b4147/"},{"name":"Giovanni","surname":"Incalza","ref":"https://www.linkedin.com/in/giovanni-incalza/"},{"name":"Nicola","surname":"Salvadore","ref":"https://www.linkedin.com/in/nicola-salvadore-02b015210/"},{"name":"Paola","surname":"Trevisan","ref":"https://www.linkedin.com/in/paola-trevisan-166891113/"}], - "languages":["TypeScript","Solidity","YAML"], - "tecnologies":["Node.js","AWS Lambda","Docker","GitHub Action","Ethereum"], - "images":["./tenners.webp"] + "title": { + "en": "Workstation", + "it": "Postazione di lavoro" + }, + "content": { + "en": "My workstation is build upon my custom desk made on request and can accommodate my PC and laptop, I use both of them to work and develop my projects. The monitors are an 34\" 21:9 with a resoluztion of 3440x1440 and a 27\" 16:9 with a resolution of 2560x1440. ", + "it": "La mia postazione di lavoro parte dalla scrivania che è stata fatta su misura e può accomodare il mio computer fisso e il mio portatile, entrambe macchine che uso per lavorare e dedicarmi ai miei progetti. I monitor sono un 21:9 da 34\" con risoluzione 3440x1440 e un 16:9 da 27\" in verticale da 2560x1440." + }, + "collaborators": [], + "languages": [], + "tecnologies": [], + "images": [ + "/workstation.webp" + ] }, { - "year":{ - "start":"2019-11-27", - "end":"2019-12-15"}, - "title":{"en":"Latex-multicompiler","it":"Latex-multicompiler"}, - "content":{ - "en":"I developed a GitHub Action to compile Latex documents from a git repository. I did this to produce the PDFs as artefacts and to practice the **CI/CD** practices. I released the project with an MIT license [here](https://github.com/Jatus93/Latex-multicompiler).", - "it":"Ho sviluppato una GitHub Action per compilare i documenti Latex contenuti in un repository specifico. Questa GitHub Action crea come artefatti dei PDF partendo dal sorgente Latex.\n Questo progetto mi ha permesso di esercitarmi nelle pratiche di **CI/CD**. Ho rilasciato il tutto con licenza MIT [qui](https://github.com/Jatus93/Latex-multicompiler)." + "year": { + "start": "2019-11-17", + "end": "2020-05-18" }, - "collaborators":[], - "languages":["bash"], - "tecnologies":["Docker","GitHub Action"], - "images":["./LatexMulticompiler.webp"] + "title": { + "en": "Software Engineering Project", + "it": "Progetto di Ingegneria del Software" + }, + "content": { + "en": "While in university, I worked on a project for the software engineering course. The group decided to develop the project Etherless, a FAAS based on Etherium and AWS lambda. The system worked like this, a user writes a function and uploads it to the service that assigns a cost of execution. Then, when a user wants to execute the function, must issue the request and pay the execution through the Ethereum network. We released all the software in MIT licence here [Tenners Unipd](https://github.com/TennersUnipd).", + "it": "Per il corso di ingegneria del software sono stato assegnato ad un gruppo di colleghi di corso universitario per sviluppare uno dei progetti proposti. Scegliemmo Etherless ovvero un **FAAS** usando la piattaforma AWS lambda per l'esecuzione delle funzioni. Gli utenti possono scrivere e pubblicare funzioni sul servizio, determinandone il costo di esecuzione. Quindi, altri utenti possono richiedere l'esecuzione, pagando il corrispettivo compenso, attraverso la rete Ethereum. Abbiamo rilasciato il software in licenza MIT [Tenners Unipd](https://github.com/TennersUnipd)" + }, + "collaborators": [ + { + "name": "Gezim", + "surname": "Cikaqi", + "ref": "https://www.linkedin.com/in/gezimcikaqi/" + }, + { + "name": "Gabriel", + "surname": "Ciulei", + "ref": "https://www.linkedin.com/in/gabriel-ciulei/" + }, + { + "name": "Simone", + "surname": "Franconetti", + "ref": "https://www.linkedin.com/in/simone-franconetti-2b48b4147/" + }, + { + "name": "Giovanni", + "surname": "Incalza", + "ref": "https://www.linkedin.com/in/giovanni-incalza/" + }, + { + "name": "Nicola", + "surname": "Salvadore", + "ref": "https://www.linkedin.com/in/nicola-salvadore-02b015210/" + }, + { + "name": "Paola", + "surname": "Trevisan", + "ref": "https://www.linkedin.com/in/paola-trevisan-166891113/" + } + ], + "languages": [ + "TypeScript", + "Solidity", + "YAML" + ], + "tecnologies": [ + "Node.js", + "AWS Lambda", + "Docker", + "GitHub Action", + "Ethereum" + ], + "images": [ + "./tenners.webp" + ] }, { - "year":{ - "start":"2019-12-18", - "end":"2020-05-08"}, - "title":{"en":"Spell checker, aspell GitHub Action","it":"Controllo ortografico, aspell GitHub Action"}, - "content":{ - "en":"I developed a GitHub Action to perform a spell check on PDF documents from a git repository, the software transform the PDF file to a plain txt and checks the spelling of words using aspell. I released the project with an LGPL-2.1 license [here](https://github.com/Jatus93/spellCheck).", - "it":"Ho sviluppato una GitHub Action per effettuare il controllo ortografico. Il software trasforma i PDF in file di testo e verifica che le parole siano scritte correttamente usando Aspell. Ho rilasciato il software su licenza LGPL-2.1 [qui](https://github.com/Jatus93/spellCheck)" + "year": { + "start": "2019-11-27", + "end": "2019-12-15" }, - "collaborators":[], - "languages":["bash"], - "tecnologies":["Docker","GitHub Action"], - "images":["/spellCheck.webp"] + "title": { + "en": "Latex-multicompiler", + "it": "Latex-multicompiler" + }, + "content": { + "en": "I developed a GitHub Action to compile Latex documents from a git repository. I did this to produce the PDFs as artefacts and to practice the **CI/CD** practices. I released the project with an MIT license [here](https://github.com/Jatus93/Latex-multicompiler).", + "it": "Ho sviluppato una GitHub Action per compilare i documenti Latex contenuti in un repository specifico. Questa GitHub Action crea come artefatti dei PDF partendo dal sorgente Latex.\n Questo progetto mi ha permesso di esercitarmi nelle pratiche di **CI/CD**. Ho rilasciato il tutto con licenza MIT [qui](https://github.com/Jatus93/Latex-multicompiler)." + }, + "collaborators": [], + "languages": [ + "bash" + ], + "tecnologies": [ + "Docker", + "GitHub Action" + ], + "images": [ + "./LatexMulticompiler.webp" + ] }, { - "year":{ - "start":"2019-04-14", - "end":"2019-06-10"}, - "title":{"en":"Project for object oriented programming course","it":"Progetto per il corso di programmazione ad oggetti"}, - "content":{ - "en":"I delevoped a IoT object container for the object oriented programming course with the possiblity to edit the devices' configuration. I wrote a report about it (italian) and [released the software](https://github.com/Jatus93/QONTAINER) in LGPL-3.0 License ", - "it":"Per il corso di programmazione ad oggetti ho fatto un container di dispositivi iot con la possibilità di configurare i dispositivi. Per maggiori infomrmazioni ho scritto una relazione al riguardo e [rilasciato il software](https://github.com/Jatus93/QONTAINER) sotto licenza LGPL-3.0" + "year": { + "start": "2019-12-18", + "end": "2020-05-08" }, - "collaborators":[], - "languages":["C++"], - "tecnologies":["Qt"], - "images":["/QContainer.webp"] + "title": { + "en": "Spell checker, aspell GitHub Action", + "it": "Controllo ortografico, aspell GitHub Action" + }, + "content": { + "en": "I developed a GitHub Action to perform a spell check on PDF documents from a git repository, the software transform the PDF file to a plain txt and checks the spelling of words using aspell. I released the project with an LGPL-2.1 license [here](https://github.com/Jatus93/spellCheck).", + "it": "Ho sviluppato una GitHub Action per effettuare il controllo ortografico. Il software trasforma i PDF in file di testo e verifica che le parole siano scritte correttamente usando Aspell. Ho rilasciato il software su licenza LGPL-2.1 [qui](https://github.com/Jatus93/spellCheck)" + }, + "collaborators": [], + "languages": [ + "bash" + ], + "tecnologies": [ + "Docker", + "GitHub Action" + ], + "images": [ + "/spellCheck.webp" + ] }, { - "year":{ - "start":"2018-12-03", - "end":"2019-02-13"}, - "title":{"en":"Tech web","it":"Tecnologie Web"}, - "content":{ - "en":"For the tech web course, my colleagues and I develop a portfolio website for an artist where the user could upload and manage all their images and also included a blog with a comments section.", - "it":"Per il corso di tecnologie web io e i miei colleghi abbiamo sviluppato un sito web vetrina per artisti con un sistema per la gestione dei contenuti."}, - "collaborators":[{"name":"Giuseppe Vito","surname":"Bitetti","ref":"https://www.linkedin.com/in/giuseppe-vito-bitetti-587751200"}, {"name":"Enrico","surname":"Buratto","ref":"https://www.linkedin.com/in/enrico-buratto-04104b151"},{"name":"Mariano","surname":"Sciacco","ref":"https://www.linkedin.com/in/marianosciacco/"}], - "languages":["PHP","SQL"], - "tecnologies":["Apache","MariaDB"], - "images":["/techweb.webp"] + "year": { + "start": "2019-04-14", + "end": "2019-06-10" + }, + "title": { + "en": "Project for object oriented programming course", + "it": "Progetto per il corso di programmazione ad oggetti" + }, + "content": { + "en": "I delevoped a IoT object container for the object oriented programming course with the possiblity to edit the devices' configuration. I wrote a report about it (italian) and [released the software](https://github.com/Jatus93/QONTAINER) in LGPL-3.0 License ", + "it": "Per il corso di programmazione ad oggetti ho fatto un container di dispositivi iot con la possibilità di configurare i dispositivi. Per maggiori infomrmazioni ho scritto una relazione al riguardo e [rilasciato il software](https://github.com/Jatus93/QONTAINER) sotto licenza LGPL-3.0" + }, + "collaborators": [], + "languages": [ + "C++" + ], + "tecnologies": [ + "Qt" + ], + "images": [ + "/QContainer.webp" + ] }, { - "year":{ - "start":"2018-05-16", - "end":"2018-05-22"}, - "title":{"en":"ANTRL parser Swl","it":"ANTRL parser Swl"}, - "content":{ - "en":"For the course about Automata and Formal, my colleague and I developed a translator from a made-up language SWL to a more common C++. For this project, the professors required the use of \"antlr\" a framework used to recognise a regular expression and apply logic for every rule. For more information https://swl.debug.ovh/ (italian)", - "it":"Per il corso di Automi e linguaggi formali, il mio collega ed io sviluppammo un traduttore da un linguaggio inventato, SWL, a uno più comune C++. Per questo compito i professori richiesero l'uso di un framework chiamato \"ANTRL\" che è in grado di riconoscere le epressioni regolari che gli vengono proposte e di applicare delle logiche al riguardo. Per maggiori info https://swl.debug.ovh/" + "year": { + "start": "2018-12-03", + "end": "2019-02-13" }, - "collaborators":[{"name":"Mariano","surname":"Sciacco","ref":"https://www.linkedin.com/in/marianosciacco/"}], - "languages":["C++","SWL","ANTLR grammar"], - "tecnologies":["ANTLR"], - "images":["./SWL.webp"] + "title": { + "en": "Tech web", + "it": "Tecnologie Web" + }, + "content": { + "en": "For the tech web course, my colleagues and I develop a portfolio website for an artist where the user could upload and manage all their images and also included a blog with a comments section.", + "it": "Per il corso di tecnologie web io e i miei colleghi abbiamo sviluppato un sito web vetrina per artisti con un sistema per la gestione dei contenuti." + }, + "collaborators": [ + { + "name": "Giuseppe Vito", + "surname": "Bitetti", + "ref": "https://www.linkedin.com/in/giuseppe-vito-bitetti-587751200" + }, + { + "name": "Enrico", + "surname": "Buratto", + "ref": "https://www.linkedin.com/in/enrico-buratto-04104b151" + }, + { + "name": "Mariano", + "surname": "Sciacco", + "ref": "https://www.linkedin.com/in/marianosciacco/" + } + ], + "languages": [ + "PHP", + "SQL" + ], + "tecnologies": [ + "Apache", + "MariaDB" + ], + "images": [ + "/techweb.webp" + ] + }, + { + "year": { + "start": "2018-05-16", + "end": "2018-05-22" + }, + "title": { + "en": "ANTRL parser Swl", + "it": "ANTRL parser Swl" + }, + "content": { + "en": "For the course about Automata and Formal, my colleague and I developed a translator from a made-up language SWL to a more common C++. For this project, the professors required the use of \"antlr\" a framework used to recognise a regular expression and apply logic for every rule. For more information https://swl.debug.ovh/ (italian)", + "it": "Per il corso di Automi e linguaggi formali, il mio collega ed io sviluppammo un traduttore da un linguaggio inventato, SWL, a uno più comune C++. Per questo compito i professori richiesero l'uso di un framework chiamato \"ANTRL\" che è in grado di riconoscere le epressioni regolari che gli vengono proposte e di applicare delle logiche al riguardo. Per maggiori info https://swl.debug.ovh/" + }, + "collaborators": [ + { + "name": "Mariano", + "surname": "Sciacco", + "ref": "https://www.linkedin.com/in/marianosciacco/" + } + ], + "languages": [ + "C++", + "SWL", + "ANTLR grammar" + ], + "tecnologies": [ + "ANTLR" + ], + "images": [ + "./SWL.webp" + ] } -] +] \ No newline at end of file diff --git a/src/lib/model/schema.json b/src/lib/model/schemas/job.json similarity index 100% rename from src/lib/model/schema.json rename to src/lib/model/schemas/job.json diff --git a/src/lib/model/schemas/logo.json b/src/lib/model/schemas/logo.json new file mode 100644 index 0000000..9a9f269 --- /dev/null +++ b/src/lib/model/schemas/logo.json @@ -0,0 +1,17 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "img": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "img", + "name" + ], + "additionalProperties": false +} \ No newline at end of file diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 3e5fca9..b0d8204 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -9,10 +9,10 @@ import Data_jobs from '$lib/model/jobs.json'; import Data_portfolio from '$lib/model/portfolio.json'; import LanguageSelector from '$lib/elements/LanguageSelector.svelte'; - import type { Schema } from '$lib/model/job'; + import type { Job } from '$lib/model/job'; - let jobs: Schema[] = Data_jobs as Schema[]; - let portfolio: Schema[] = Data_portfolio as Schema[]; + let jobs: Job[] = Data_jobs as Job[]; + let portfolio: Job[] = Data_portfolio as Job[]; let currentLanguage: CurrentLanguage = 'it'; let titles = { home: { @@ -48,7 +48,7 @@ }} /> -
+
diff --git a/static/blogPosts/rust-logo-blk.svg b/static/blogPosts/rust-logo-blk.svg new file mode 100644 index 0000000..1a6c762 --- /dev/null +++ b/static/blogPosts/rust-logo-blk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/cplusplus.png b/static/cplusplus.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c05a5640c9635d02986be91c450944fe94fbe9 GIT binary patch literal 5855 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 literal 0 HcmV?d00001 diff --git a/static/photo_2023-05-27_14-07-56.webp:Zone.Identifier b/static/photo_2023-05-27_14-07-56.webp:Zone.Identifier new file mode 100644 index 0000000..aa83027 --- /dev/null +++ b/static/photo_2023-05-27_14-07-56.webp:Zone.Identifier @@ -0,0 +1,4 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=https://cloudconvert.com/ +HostUrl=https://storage.cloudconvert.com/tasks/d2e68ca0-c4ea-4d5c-a821-99cb9bc0e2a1/photo_2023-05-27_14-07-56.webp?AWSAccessKeyId=cloudconvert-production&Expires=1685275786&Signature=e0WAf7JckXFaWlpmjR2VoxHuGsQ%3D&response-content-disposition=attachment%3B%20filename%3D%22photo_2023-05-27_14-07-56.webp%22&response-content-type=image%2Fwebp diff --git a/static/profile_pic.webp b/static/profile_pic.webp index f0470773ccf1ff3b2e5e088750b44a95bb7acd21..3fd7f8296c70b033017f588a0bc274c69bbf5d81 100644 GIT binary patch literal 60690 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 literal 9450 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 z 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 z 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 + + + + + + \ No newline at end of file diff --git a/static/rust-logo.svg b/static/rust-logo.svg new file mode 100644 index 0000000..ea0dfa0 --- /dev/null +++ b/static/rust-logo.svg @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/static/ts-logo-128.svg b/static/ts-logo-128.svg new file mode 100644 index 0000000..b65a93a --- /dev/null +++ b/static/ts-logo-128.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svelte.config.old.js b/svelte.config.old.js deleted file mode 100644 index 39e37c7..0000000 --- a/svelte.config.old.js +++ /dev/null @@ -1,37 +0,0 @@ -import preprocess from 'svelte-preprocess'; -import adapter from '@sveltejs/adapter-static'; -import {markdown} from 'svelte-preprocess-markdown'; -import path from 'path'; - -/** @type {import('@sveltejs/kit').Config} */ -const config = { - // Consult https://github.com/sveltejs/svelte-preprocess - // for more information about preprocessors - preprocess: [preprocess({ - sass: true, - typescript: true, - - }), markdown()], - - kit: { - // hydrate the
element in src/app.html - target: '#svelte', - vite:{ - resolve:{ - alias:{ - $elem: path.resolve('src/elements'), - // $model: path.resolve('src/model') - } - } - }, - hostHeader: 'X-Forwarded-Host', - adapter: adapter({ - // default options are shown - pages: 'build', - assets: 'build', - fallback: null - }), - } -}; - -export default config; diff --git a/to-be-done/blog/+page.svelte b/to-be-done/blog/+page.svelte index a1bc2e8..e16970b 100644 --- a/to-be-done/blog/+page.svelte +++ b/to-be-done/blog/+page.svelte @@ -1,15 +1,15 @@