From 4b2580c2ba7c59f0d8de4aee4183e3fe23aa4ca3 Mon Sep 17 00:00:00 2001 From: Andre Villari Date: Mon, 26 Oct 2026 16:43:02 +0100 Subject: [PATCH] primo commit --- src/components/Hero.jsx | 0 src/components/Projects.jsx | 70 +++++++++++++++++++++++++++++++++++++ src/components/Skills.jsx | 36 +++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 src/components/Hero.jsx create mode 100644 src/components/Projects.jsx create mode 100644 src/components/Skills.jsx diff --git a/src/components/Hero.jsx b/src/components/Hero.jsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/Projects.jsx b/src/components/Projects.jsx new file mode 100644 index 0000000..ef6b039 --- /dev/null +++ b/src/components/Projects.jsx @@ -0,0 +1,70 @@ +import { React } from "react"; + +const projectsData = [ + { + title: "Assist Senza Danni", + description: "Piattaforma web dedicata all'assistenza e alla tutela, sviluppata con un'interfaccia pulita e incentrata sull'esperienza utente.", + link: "https://assistasenzadanni.it", + tags: ["React", "Web App", "UI/UX"] + }, + { + title: "PWSCam", + description: "Applicazione web interattiva ospitata su Vercel, orientata a soluzioni tecnologiche e di streaming/visualizzazione.", + link: "https://pwscam.vercel.app", + tags: ["Vercel", "Frontend", "React"] + }, + { + title: "Magri Cambi Hub", + description: "Gestionale e portale dedicato ai ricambi, integrato con container Docker dedicati e database relazionali sul server.", + link: "https://magricambi.andreavillari.it", + tags: ["Docker", "MySQL", "Full Stack"] + } + ]; + + export default function Projects() { + return ( +
+
+

Progetti in Evidenza

+

Una selezione delle mie realizzazioni web e infrastrutturali.

+
+ +
+ {projectsData.map((project, index) => ( +
+
+

+ {project.title} +

+

+ {project.description} +

+
+ +
+
+ {project.tags.map((tag, i) => ( + + {tag} + + ))} +
+ + Visita il sito + → + +
+
+ ))} +
+
+ ); + } \ No newline at end of file diff --git a/src/components/Skills.jsx b/src/components/Skills.jsx new file mode 100644 index 0000000..45c6ae5 --- /dev/null +++ b/src/components/Skills.jsx @@ -0,0 +1,36 @@ +import { React } from "react"; + +const skills = [ + { category: "Frontend", items: ["React", "Vite", "JavaScript (ES6+)", "Tailwind CSS", "HTML5 / CSS3"] }, + { category: "Backend & Database", items: ["Node.js", "Express", "MySQL", "MongoDB"] }, + { category: "DevOps & SysAdmin", items: ["Docker & Compose", "Nginx (Reverse Proxy)", "Linux (Ubuntu Server)", "Git / Forgejo"] } + ]; + + export default function Skills() { + return ( +
+
+

Competenze & Tecnologie

+

Gli strumenti che utilizzo per trasformare le idee in prodotti reali.

+
+ +
+ {skills.map((group, index) => ( +
+

+ // {group.category} +

+
    + {group.items.map((skill, i) => ( +
  • + + {skill} +
  • + ))} +
+
+ ))} +
+
+ ); + } \ No newline at end of file