Compare commits
3 Commits
bbdb1d4453
...
521797dd12
Author | SHA1 | Date | |
---|---|---|---|
|
521797dd12 | ||
9dd9940e55 | |||
297521efdc |
26
.gitea/workflows/develop-deploy.yml
Normal file
26
.gitea/workflows/develop-deploy.yml
Normal file
@ -0,0 +1,26 @@
|
||||
name: Build Site Develop
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- develop
|
||||
|
||||
jobs:
|
||||
Build-Site:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '18.18.2'
|
||||
- run: npm install
|
||||
- run: npm run build
|
||||
- name: Publish
|
||||
uses: nogsantos/scp-deploy@master
|
||||
with:
|
||||
src: ./build/*
|
||||
host: ${{ secrets.SSH_HOST }}
|
||||
remote: /mnt/user/appdata/binhex-nginx/nginx/html/
|
||||
port: 69
|
||||
user: ${{ secrets.SSH_USER }}
|
||||
key: ${{ secrets.SSH_KEY }}
|
17
.gitea/workflows/main-deploy.yml
Normal file
17
.gitea/workflows/main-deploy.yml
Normal file
@ -0,0 +1,17 @@
|
||||
name: Build Site Main
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
Build-Site:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '16.x'
|
||||
- run: npm install
|
||||
- run: npm run build
|
18
.gitea/workflows/pr-build.yml
Normal file
18
.gitea/workflows/pr-build.yml
Normal file
@ -0,0 +1,18 @@
|
||||
name: Build Site PR
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- 'feat/**'
|
||||
- 'develop'
|
||||
|
||||
jobs:
|
||||
Build-Site:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '16.x'
|
||||
- run: npm install
|
||||
- run: npm run build
|
@ -11,13 +11,45 @@
|
||||
import type { CurrentLanguage } from '$lib/types';
|
||||
export let job: Job;
|
||||
export let currentLanguage: CurrentLanguage = 'it';
|
||||
const dialogs: { [k: string]: HTMLDialogElement } = {};
|
||||
export let modalOpen: boolean;
|
||||
</script>
|
||||
|
||||
{#each job.images as image}
|
||||
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
||||
<dialog
|
||||
bind:this={dialogs[window.btoa(image)]}
|
||||
on:scroll|preventDefault
|
||||
on:click={() => {
|
||||
dialogs[window.btoa(image)].close();
|
||||
modalOpen = false;
|
||||
}}
|
||||
>
|
||||
<img
|
||||
src={image}
|
||||
alt={image}
|
||||
loading="lazy"
|
||||
on:scroll={(e) => {
|
||||
console.log(e);
|
||||
}}
|
||||
/>
|
||||
</dialog>
|
||||
{/each}
|
||||
|
||||
<div class="job-container">
|
||||
<h3>{job.title[currentLanguage]}</h3>
|
||||
<div class="image-container">
|
||||
{#each job.images as image}
|
||||
<img src={image} alt={image} loading="lazy" />
|
||||
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
||||
<img
|
||||
src={image}
|
||||
alt={image}
|
||||
loading="lazy"
|
||||
on:click={() => {
|
||||
dialogs[window.btoa(image)].showModal();
|
||||
modalOpen = true;
|
||||
}}
|
||||
/>
|
||||
{/each}
|
||||
</div>
|
||||
<div class="text-content">
|
||||
@ -47,11 +79,11 @@
|
||||
{/each}
|
||||
</div>
|
||||
<div>
|
||||
{#if job.tecnologies.length != 0}
|
||||
{#if job.technologies.length != 0}
|
||||
Tech:
|
||||
{/if}
|
||||
{#each job.tecnologies as tecnology, index}
|
||||
{tecnology}{index != job.tecnologies.length - 1 ? ', ' : ''}
|
||||
{#each job.technologies as tecnology, index}
|
||||
{tecnology}{index != job.technologies.length - 1 ? ', ' : ''}
|
||||
{/each}
|
||||
</div>
|
||||
</div>
|
||||
@ -71,9 +103,66 @@
|
||||
width: 100%;
|
||||
img {
|
||||
background-color: $text-color;
|
||||
cursor: zoom-in;
|
||||
}
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
}
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
.modal {
|
||||
display: flex;
|
||||
position: fixed;
|
||||
position: -webkit-sticky;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 999;
|
||||
background-color: rgba($color: #000000, $alpha: 0.4);
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
justify-content: center;
|
||||
}
|
||||
.modal-open {
|
||||
overflow-y: hidden;
|
||||
}
|
||||
.modal-closed {
|
||||
overflow-y: unset;
|
||||
}
|
||||
dialog {
|
||||
img {
|
||||
max-width: 80vw;
|
||||
max-height: 80vh;
|
||||
height: auto;
|
||||
margin: auto;
|
||||
background-color: $text-color;
|
||||
}
|
||||
}
|
||||
dialog::backdrop {
|
||||
background: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
dialog[open] {
|
||||
animation: zoom 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
|
||||
}
|
||||
@keyframes zoom {
|
||||
from {
|
||||
transform: scale(0.95);
|
||||
}
|
||||
to {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
dialog[open]::backdrop {
|
||||
animation: fade 0.2s ease-out;
|
||||
}
|
||||
@keyframes fade {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -4,11 +4,12 @@
|
||||
import JobElement from './JobElement.svelte';
|
||||
export let currentLanguage: CurrentLanguage = 'it';
|
||||
export let jobs: Job[] = [];
|
||||
export let modalOpen: boolean;
|
||||
</script>
|
||||
|
||||
<div class="jobs-container">
|
||||
{#each jobs as job}
|
||||
<div class="job-card"><JobElement {job} {currentLanguage} /></div>
|
||||
<div class="job-card"><JobElement {job} {currentLanguage} bind:modalOpen /></div>
|
||||
{/each}
|
||||
{#if jobs.length % 2 !== 0}
|
||||
<div class="job-card hide" />
|
||||
|
@ -20,7 +20,7 @@
|
||||
<div>
|
||||
<h3>{school.title[currentLanguage]}</h3>
|
||||
<p>{school.content[currentLanguage]}</p>
|
||||
<p>{school.year.start} - {school.year.end}</p>
|
||||
<p>{school.year.start} {#if school.year.end} - {school.year.end}{/if}</p>
|
||||
</div>
|
||||
</div>
|
||||
{/each}
|
||||
|
@ -25,6 +25,6 @@ export interface Job {
|
||||
ref: string;
|
||||
}[];
|
||||
languages: string[];
|
||||
tecnologies: string[];
|
||||
technologies: string[];
|
||||
images: string[];
|
||||
}
|
||||
|
@ -1,9 +1,44 @@
|
||||
[
|
||||
{
|
||||
"year": {
|
||||
"start": "2022-01-03",
|
||||
"start": "2024-09-23",
|
||||
"end": ""
|
||||
},
|
||||
"title": {
|
||||
"en": "Corley Cloud",
|
||||
"it": "Corley Cloud"
|
||||
},
|
||||
"content": {
|
||||
"en": "In September 2024, I joined Corley Cloud, a company focused on building scalable and resilient cloud-native solutions.\nMy role involves designing and developing **serverless architectures** and **event-driven applications** using **AWS** services such as Lambda, API Gateway, DynamoDB, and Step Functions.\nThe main technologies I use are **Node.js** and **Python**.\nI contribute to the definition of **DevOps pipelines**, infrastructure as code with **Terraform** and **AWS SAM**, and best practices for CI/CD in cloud environments.",
|
||||
"it": "Nel settembre 2024 ho iniziato a lavorare in Corley Cloud, un'azienda specializzata nella creazione di soluzioni cloud-native scalabili e resilienti.\nIl mio ruolo prevede la progettazione e lo sviluppo di **architetture serverless** e **applicazioni event-driven** utilizzando servizi **AWS** come Lambda, API Gateway, DynamoDB e Step Functions.\nLe tecnologie principali che utilizzo sono **Node.js** e **Python**.\nContribuisco alla definizione delle **pipeline DevOps**, dell’infrastruttura come codice con **Terraform** e **AWS SAM**, e delle best practice per CI/CD in ambienti cloud."
|
||||
},
|
||||
"collaborators": [],
|
||||
"languages": [
|
||||
"TypeScript",
|
||||
"Python",
|
||||
"Node.js",
|
||||
"yaml",
|
||||
"json",
|
||||
"bash"
|
||||
],
|
||||
"technologies": [
|
||||
"AWS Lambda",
|
||||
"API Gateway",
|
||||
"DynamoDB",
|
||||
"Step Functions",
|
||||
"Terraform",
|
||||
"AWS SAM",
|
||||
"GitHub Actions"
|
||||
],
|
||||
"images": [
|
||||
"corley.png"
|
||||
]
|
||||
},
|
||||
{
|
||||
"year": {
|
||||
"start": "2022-01-03",
|
||||
"end": "2024-09-06"
|
||||
},
|
||||
"title": {
|
||||
"en": "ALTEN italy",
|
||||
"it": "ALTEN italia"
|
||||
@ -22,7 +57,7 @@
|
||||
"TypeScript",
|
||||
"Python"
|
||||
],
|
||||
"tecnologies": [
|
||||
"technologies": [
|
||||
"Vue.js",
|
||||
"Node.js",
|
||||
"Laravel",
|
||||
@ -54,7 +89,7 @@
|
||||
"yaml",
|
||||
"json"
|
||||
],
|
||||
"tecnologies": [
|
||||
"technologies": [
|
||||
"Vue.js",
|
||||
"Node.js",
|
||||
"Nuxt",
|
||||
@ -85,7 +120,7 @@
|
||||
"HTML",
|
||||
"CSS"
|
||||
],
|
||||
"tecnologies": [
|
||||
"technologies": [
|
||||
"Vue.js",
|
||||
"Node.js",
|
||||
"Nuxt",
|
||||
@ -112,7 +147,7 @@
|
||||
"languages": [
|
||||
"PHP"
|
||||
],
|
||||
"tecnologies": [
|
||||
"technologies": [
|
||||
"Telegram",
|
||||
"Composer",
|
||||
"Docker"
|
||||
@ -136,7 +171,7 @@
|
||||
},
|
||||
"collaborators": [],
|
||||
"languages": [],
|
||||
"tecnologies": [],
|
||||
"technologies": [],
|
||||
"images": [
|
||||
"/saxonhilllogo.webp"
|
||||
]
|
||||
|
@ -17,7 +17,7 @@
|
||||
"TypeScript",
|
||||
"JSON-schema"
|
||||
],
|
||||
"tecnologies": [
|
||||
"technologies": [
|
||||
"Svelte",
|
||||
"Node.js"
|
||||
],
|
||||
@ -42,7 +42,7 @@
|
||||
"languages": [
|
||||
"TypeScript"
|
||||
],
|
||||
"tecnologies": [
|
||||
"technologies": [
|
||||
"Node.js"
|
||||
],
|
||||
"images": [
|
||||
@ -66,7 +66,7 @@
|
||||
"languages": [
|
||||
"C"
|
||||
],
|
||||
"tecnologies": [
|
||||
"technologies": [
|
||||
"QMK"
|
||||
],
|
||||
"images": [
|
||||
@ -91,7 +91,7 @@
|
||||
"bash",
|
||||
"python"
|
||||
],
|
||||
"tecnologies": [
|
||||
"technologies": [
|
||||
"raspberry"
|
||||
],
|
||||
"images": [
|
||||
@ -115,7 +115,7 @@
|
||||
"languages": [
|
||||
"YAML"
|
||||
],
|
||||
"tecnologies": [
|
||||
"technologies": [
|
||||
"Docker",
|
||||
"Unraid",
|
||||
"GNU/Linux"
|
||||
@ -139,7 +139,7 @@
|
||||
},
|
||||
"collaborators": [],
|
||||
"languages": [],
|
||||
"tecnologies": [],
|
||||
"technologies": [],
|
||||
"images": [
|
||||
"/workstation.webp"
|
||||
]
|
||||
@ -194,7 +194,7 @@
|
||||
"Solidity",
|
||||
"YAML"
|
||||
],
|
||||
"tecnologies": [
|
||||
"technologies": [
|
||||
"Node.js",
|
||||
"AWS Lambda",
|
||||
"Docker",
|
||||
@ -222,7 +222,7 @@
|
||||
"languages": [
|
||||
"bash"
|
||||
],
|
||||
"tecnologies": [
|
||||
"technologies": [
|
||||
"Docker",
|
||||
"GitHub Action"
|
||||
],
|
||||
@ -247,7 +247,7 @@
|
||||
"languages": [
|
||||
"bash"
|
||||
],
|
||||
"tecnologies": [
|
||||
"technologies": [
|
||||
"Docker",
|
||||
"GitHub Action"
|
||||
],
|
||||
@ -272,7 +272,7 @@
|
||||
"languages": [
|
||||
"C++"
|
||||
],
|
||||
"tecnologies": [
|
||||
"technologies": [
|
||||
"Qt"
|
||||
],
|
||||
"images": [
|
||||
@ -313,7 +313,7 @@
|
||||
"PHP",
|
||||
"SQL"
|
||||
],
|
||||
"tecnologies": [
|
||||
"technologies": [
|
||||
"Apache",
|
||||
"MariaDB"
|
||||
],
|
||||
@ -346,7 +346,7 @@
|
||||
"SWL",
|
||||
"ANTLR grammar"
|
||||
],
|
||||
"tecnologies": [
|
||||
"technologies": [
|
||||
"ANTLR"
|
||||
],
|
||||
"images": [
|
||||
|
@ -82,7 +82,7 @@
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"tecnologies": {
|
||||
"technologies": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
@ -101,7 +101,7 @@
|
||||
"content",
|
||||
"collaborators",
|
||||
"languages",
|
||||
"tecnologies",
|
||||
"technologies",
|
||||
"images"
|
||||
],
|
||||
"additionalProperties": false
|
||||
|
@ -1,29 +1,62 @@
|
||||
[
|
||||
{
|
||||
"year": {
|
||||
"start": "2024"
|
||||
},
|
||||
"title": {
|
||||
"en": "AWS Certified Developer – Associate",
|
||||
"it": "AWS Certified Developer – Associate"
|
||||
},
|
||||
"content": {
|
||||
"en": " AWS Certified Developer – Associate – Skills in developing and managing applications on AWS.",
|
||||
"it": " AWS Certified Developer – Associate – Competenze nello sviluppo e nella gestione di applicazioni su AWS."
|
||||
},
|
||||
"collaborators": [],
|
||||
"technologies": [
|
||||
"AWS"
|
||||
],
|
||||
"images": [
|
||||
"AWS_DEV.png"
|
||||
]
|
||||
},
|
||||
{
|
||||
"year": {
|
||||
"start": "2016",
|
||||
"end": "2020"
|
||||
},
|
||||
"title": {"en":"Bachelor's degree in Computer Science (EQF 6): ","it":"Laurea triennale in Scienze Informatiche (EQF 6)"},
|
||||
"title": {
|
||||
"en": "Bachelor's degree in Computer Science (EQF 6): ",
|
||||
"it": "Laurea triennale in Scienze Informatiche (EQF 6)"
|
||||
},
|
||||
"content": {
|
||||
"en":"Computer Science, Università degli Studi di Padova","it":"Corso triennale in Informatica all'Università degli Studi di Padova"},
|
||||
"en": "Computer Science, Università degli Studi di Padova",
|
||||
"it": "Corso triennale in Informatica all'Università degli Studi di Padova"
|
||||
},
|
||||
"collaborators": [],
|
||||
"languages": [],
|
||||
"tecnologies": [],
|
||||
"images":["unipd-universita-di-padova.webp"]
|
||||
"technologies": [],
|
||||
"images": [
|
||||
"unipd-universita-di-padova.webp"
|
||||
]
|
||||
},
|
||||
{
|
||||
"year": {
|
||||
"start": "2007",
|
||||
"end": "2013"
|
||||
},
|
||||
"title": {"en":"High School diploma, Liceo Scientifico Tecnologico (EQF 4): ","it":"Diploma di maturità di Liceo Scientifico Tecnologico (EQF 4)"},
|
||||
"title": {
|
||||
"en": "High School diploma, Liceo Scientifico Tecnologico (EQF 4): ",
|
||||
"it": "Diploma di maturità di Liceo Scientifico Tecnologico (EQF 4)"
|
||||
},
|
||||
"content": {
|
||||
"en":"The scientific and technological high school I.T.I.S. Severi di Padova where instead of Latin, there were more physics, chemistry and basic programming lessons.",
|
||||
"it":"Corso di Liceo Scientifico Tecnologico all'istituto I.T.I.S. Severi di Padova, dove al posto del Latino i corsi puntavano di più su fisica, chimica e dei corsi introduttivi alla programmazione"},
|
||||
"en": "The scientific and technological high school I.T.I.S. Severi di Padova where instead of Latin, there were more physics, chemistry and basic programming lessons.",
|
||||
"it": "Corso di Liceo Scientifico Tecnologico all'istituto I.T.I.S. Severi di Padova, dove al posto del Latino i corsi puntavano di più su fisica, chimica e dei corsi introduttivi alla programmazione"
|
||||
},
|
||||
"collaborators": [],
|
||||
"languages": [],
|
||||
"tecnologies": [],
|
||||
"images":["logoSeveri.webp"]
|
||||
"technologies": [],
|
||||
"images": [
|
||||
"logoSeveri.webp"
|
||||
]
|
||||
}
|
||||
]
|
||||
]
|
@ -1,10 +1,10 @@
|
||||
<script lang="ts">
|
||||
import {} from 'svelte';
|
||||
import { MetaTags } from 'svelte-meta-tags';
|
||||
import type { CurrentLanguage } from '$lib/types';
|
||||
import AboutMe from '$lib/elements/AboutMe.svelte';
|
||||
import Jobs from '$lib/elements/Jobs.svelte';
|
||||
import Menu from '$lib/elements/Menu.svelte';
|
||||
import MenuMobile from '$lib/elements/MenuMobile.svelte';
|
||||
import Training from '$lib/elements/Training.svelte';
|
||||
import Data_jobs from '$lib/model/jobs.json';
|
||||
import Data_portfolio from '$lib/model/portfolio.json';
|
||||
@ -24,6 +24,7 @@
|
||||
contacts: { it: 'Contatti', en: 'Contacts' },
|
||||
portfolio: { it: 'Portfolio', en: 'Portfolio' }
|
||||
};
|
||||
let modalOpen: boolean = false;
|
||||
</script>
|
||||
|
||||
<MetaTags
|
||||
@ -52,14 +53,22 @@
|
||||
<!-- svelte-ignore a11y-invalid-attribute -->
|
||||
<LanguageSelector bind:currentLanguage />
|
||||
<Menu {currentLanguage} />
|
||||
<div class="default">
|
||||
<div
|
||||
class="default"
|
||||
on:scroll={(event) => {
|
||||
if (modalOpen) {
|
||||
event.preventDefault();
|
||||
}
|
||||
console.log(event);
|
||||
}}
|
||||
>
|
||||
<span id="home" class="anchor" />
|
||||
<AboutMe {currentLanguage} />
|
||||
</div>
|
||||
<div class="default">
|
||||
<span id="jobs" class="anchor" />
|
||||
<h2>{titles.job[currentLanguage]}</h2>
|
||||
<Jobs {jobs} {currentLanguage} />
|
||||
<Jobs {jobs} {currentLanguage} bind:modalOpen />
|
||||
</div>
|
||||
<div class="default">
|
||||
<span id="training" class="anchor" />
|
||||
@ -69,7 +78,7 @@
|
||||
<div class="default">
|
||||
<span id="portfolio" class="anchor" />
|
||||
<h2>{titles.portfolio[currentLanguage]}</h2>
|
||||
<Jobs jobs={portfolio} {currentLanguage} />
|
||||
<Jobs jobs={portfolio} {currentLanguage} bind:modalOpen />
|
||||
</div>
|
||||
</main>
|
||||
|
||||
|
BIN
static/AWS_DEV.png
Normal file
BIN
static/AWS_DEV.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 56 KiB |
BIN
static/corley.png
Normal file
BIN
static/corley.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 88 KiB |
@ -5,6 +5,6 @@ const config: UserConfig = {
|
||||
plugins: [sveltekit()]
|
||||
};
|
||||
|
||||
config.server = { port: 80, origin: 'pettinato.eu' };
|
||||
// config.server = { port: 80, origin: 'pettinato.eu' };
|
||||
|
||||
export default config;
|
||||
|
11
vite.config.ts.js
Normal file
11
vite.config.ts.js
Normal file
@ -0,0 +1,11 @@
|
||||
// vite.config.ts
|
||||
import { sveltekit } from "@sveltejs/kit/vite";
|
||||
var config = {
|
||||
plugins: [sveltekit()]
|
||||
};
|
||||
// config.server = { port: 8800, origin: "pettinato.eu" };
|
||||
var vite_config_default = config;
|
||||
export {
|
||||
vite_config_default as default
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHN2ZWx0ZWtpdCB9IGZyb20gJ0BzdmVsdGVqcy9raXQvdml0ZSc7XG5pbXBvcnQgdHlwZSB7IFVzZXJDb25maWcsIGRlZmluZUNvbmZpZyB9IGZyb20gJ3ZpdGUnO1xuXG5jb25zdCBjb25maWc6IFVzZXJDb25maWcgPSB7XG5cdHBsdWdpbnM6IFtzdmVsdGVraXQoKV1cbn07XG5cbmNvbmZpZy5zZXJ2ZXIgPSB7IHBvcnQ6IDgwLCBvcmlnaW46ICdwZXR0aW5hdG8uZXUnIH07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbmZpZztcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBQTtBQUdBLElBQU0sU0FBcUI7QUFBQSxFQUMxQixTQUFTLENBQUM7QUFBQTtBQUdYLE9BQU8sU0FBUyxFQUFFLE1BQU0sSUFBSSxRQUFRO0FBRXBDLElBQU8sc0JBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
Loading…
x
Reference in New Issue
Block a user