diff --git a/.eslintrc.json b/.eslintrc.json index 56543d6..f57aa10 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,8 +1,11 @@ { "extends": ["next/core-web-vitals", "next/typescript"], "rules": { - "@typescript-eslint/no-unused-vars": "error", + "@typescript-eslint/no-unused-vars": "warn", "@typescript-eslint/no-explicit-any": "warn", - "react-hooks/exhaustive-deps": "warn" + "react-hooks/exhaustive-deps": "warn", + "react/no-unescaped-entities": "off", + "@next/next/no-img-element": "warn", + "jsx-a11y/alt-text": "warn" } -} \ No newline at end of file +} diff --git a/app/page.tsx b/app/page.tsx index 47adac5..cd8c797 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,6 +1,6 @@ "use client" import React, { useState, useEffect } from 'react'; -import { Github, Linkedin, Mail, ExternalLink, ChevronDown, Code, Database, BarChart3, Globe, Award, GraduationCap, Image, ExternalLink as LinkIcon } from 'lucide-react'; +import { Github, Linkedin, Mail, ChevronDown, Code, Database, BarChart3, Globe, Award, GraduationCap, Image, ExternalLink as LinkIcon } from 'lucide-react'; const Portfolio = () => { const [activeSection, setActiveSection] = useState('home'); diff --git a/components/Portfolio.tsx b/components/Portfolio.tsx deleted file mode 100644 index 7d55c1e..0000000 --- a/components/Portfolio.tsx +++ /dev/null @@ -1,721 +0,0 @@ -'use client'; - -import React, { useState, useEffect } from 'react'; -import { Github, Linkedin, Mail, ExternalLink, ChevronDown, Code, Database, BarChart3, Globe, Award, GraduationCap, Image, ExternalLink as LinkIcon } from 'lucide-react'; - -// Types -interface NordColors { - bg: string; - bgLight: string; - bgLighter: string; - bgLightest: string; - text: string; - textMuted: string; - accent: string; - blue: string; - darkBlue: string; - cyan: string; - green: string; - yellow: string; - orange: string; - red: string; - purple: string; -} - -interface Project { - title: string; - period: string; - description: string; - tech: string[]; - icon: React.ReactNode; - status: string; - images: string[]; - features: string[]; - github?: string; - demo?: string; -} - -interface Education { - institution: string; - degree: string; - period: string; - status: string; -} - -interface ProjectGalleryProps { - project: Project; - onClose: () => void; -} - -const Portfolio: React.FC = () => { - const [activeSection, setActiveSection] = useState('home'); - const [scrolled, setScrolled] = useState(false); - const [showProjectGallery, setShowProjectGallery] = useState(false); - - // Nord Color Palette - const nordColors: NordColors = { - bg: '#2E3440', - bgLight: '#3B4252', - bgLighter: '#434C5E', - bgLightest: '#4C566A', - text: '#D8DEE9', - textMuted: 'rgba(216, 222, 233, 0.6)', - accent: '#88C0D0', - blue: '#81A1C1', - darkBlue: '#5E81AC', - cyan: '#8FBCBB', - green: '#A3BE8C', - yellow: '#EBCB8B', - orange: '#D08770', - red: '#BF616A', - purple: '#B48EAD' - }; - - useEffect(() => { - const handleScroll = (): void => { - setScrolled(window.scrollY > 50); - }; - window.addEventListener('scroll', handleScroll); - return () => window.removeEventListener('scroll', handleScroll); - }, []); - - const skills: Record = { - 'Data & Analytics': ['Python', 'R', 'SQL', 'Statistical Analysis', 'Data Visualization', 'Business Intelligence'], - 'Web Development': ['JavaScript', 'TypeScript', 'React', 'Next.js', 'HTML5', 'CSS3', 'Tailwind CSS'], - 'Backend & Tools': ['Flask', 'Express', 'MongoDB', 'SQLite', 'Git', 'Linux'], - 'Other': ['Java', 'LaTeX', 'Project Planning', 'Financial Analysis'] - }; - - const projects: Project[] = [ - { - title: 'Valgo - Algorithm Visualizer', - period: 'Jun 2024 - Present', - description: 'Interactive web application designed to help users understand and visualize various sorting algorithms. Built with Next.js and React to make learning algorithms more engaging and intuitive.', - tech: ['Next.js', 'React', 'JavaScript', 'Algorithm Visualization'], - icon: , - status: 'Live', - images: [ - 'https://via.placeholder.com/600x400/81A1C1/2E3440?text=Algorithm+Visualizer', - 'https://via.placeholder.com/600x400/88C0D0/2E3440?text=Sorting+Demo', - 'https://via.placeholder.com/600x400/5E81AC/2E3440?text=Interactive+UI' - ], - features: ['Real-time algorithm visualization', 'Multiple sorting algorithms', 'Step-by-step breakdown', 'Performance comparison'], - github: 'https://github.com/Quinta0/valgo', - demo: 'https://valgo-demo.vercel.app' - }, - { - title: 'Boston Housing Price Prediction', - period: 'May 2024 - Present', - description: 'Machine learning model to predict housing prices in the Boston area based on various features such as crime rate, average number of rooms per dwelling, and accessibility to radial highways.', - tech: ['Python', 'Machine Learning', 'Data Analysis', 'Statistical Modeling'], - icon: , - status: 'In Progress', - images: [ - 'https://via.placeholder.com/600x400/A3BE8C/2E3440?text=Data+Visualization', - 'https://via.placeholder.com/600x400/EBCB8B/2E3440?text=ML+Model', - 'https://via.placeholder.com/600x400/D08770/2E3440?text=Results+Analysis' - ], - features: ['Predictive modeling', 'Feature engineering', 'Data visualization', 'Statistical analysis'], - github: 'https://github.com/Quinta0/boston-housing' - }, - { - title: 'Forest Fire Simulation', - period: 'Mar 2024 - Present', - description: 'Probability & Statistics course project modeling the spread of forest fires over a grid. Accounts for vegetation types, terrain elevation, wind patterns, humidity levels, and spontaneous ignition.', - tech: ['Python', 'Statistical Modeling', 'Simulation', 'Data Science'], - icon: , - status: 'Academic Project', - images: [ - 'https://via.placeholder.com/600x400/BF616A/2E3440?text=Fire+Simulation', - 'https://via.placeholder.com/600x400/B48EAD/2E3440?text=Statistical+Model', - 'https://via.placeholder.com/600x400/8FBCBB/2E3440?text=Data+Analysis' - ], - features: ['Monte Carlo simulation', 'Environmental factors modeling', 'Statistical analysis', 'Visualization tools'], - github: 'https://github.com/Quinta0/forest-fire-sim' - } - ]; - - const education: Education[] = [ - { - institution: 'USI Università della Svizzera italiana', - degree: "Bachelor's degree Economics", - period: 'Sep 2024 - Jun 2027', - status: 'Current' - }, - { - institution: 'USI Università della Svizzera italiana', - degree: 'Bachelor of Science - BS Informatics', - period: 'Jan 2022 - Jan 2024', - status: 'Completed' - }, - { - institution: 'Scuola cantonale di commercio', - degree: 'Maturità Cantonale e AFC Economics', - period: 'Sep 2017 - Jun 2021', - status: 'GPA: 4.5/5' - } - ]; - - const certificates: string[] = [ - 'Google Data Analytics Professional Certificate', - 'Google IT Support Professional Certificate', - 'IT Security: Defense against the digital dark arts', - 'Python for Data Science, AI & Development' - ]; - - const scrollToSection = (sectionId: string): void => { - document.getElementById(sectionId)?.scrollIntoView({ behavior: 'smooth' }); - setActiveSection(sectionId); - }; - - const ProjectGallery: React.FC = ({ project, onClose }) => ( -
-
e.stopPropagation()} - > -
-
-
-

- {project.title} -

-
- - {project.period} - - - {project.status} - -
-
- -
- - {/* Project Images */} -
- {project.images.map((image: string, idx: number) => ( -
- {`${project.title} -
- ))} -
- - {/* Description */} -
-

- About This Project -

-

- {project.description} -

-
- - {/* Features */} -
-

- Key Features -

-
- {project.features.map((feature: string, idx: number) => ( -
-
- {feature} -
- ))} -
-
- - {/* Tech Stack */} -
-

- Technology Stack -

-
- {project.tech.map((tech: string) => ( - - {tech} - - ))} -
-
- - {/* Links */} -
- {project.github && ( - - - View Code - - )} - {project.demo && ( - - - Live Demo - - )} -
-
-
-
- ); - - return ( -
- {/* Navigation */} - - - {/* Hero Section */} -
-
-
-

- Pietro - Quintavalle -

-
- Economics Student • Data Analytics • Web Development -
-

- Passionate about the intersection of economics and technology, exploring how data and code can solve real-world problems. -

-
- - -
- -
- -
-
- - {/* About Section */} -
-
-

- About Me -

- -
-
-

- I'm an Economics student at USI with extensive experience in data analytics and web development. - My journey combines analytical thinking with technical skills to create meaningful solutions. -

-

- Google-certified in Data Analytics and IT Support, I bring proven expertise in Python, R, SQL, - and modern web technologies like Next.js and React. -

-
- - Italian (Native) - - - English (C2) - - - Switzerland 🇨🇭 - -
-
- -
- {Object.entries(skills).map(([category, skillList]: [string, string[]]) => ( -
-

- {category} -

-
- {skillList.map((skill: string) => ( - - {skill} - - ))} -
-
- ))} -
-
-
-
- - {/* Projects Section */} -
-
-

- Featured Projects -

- -
- {projects.map((project: Project, index: number) => ( -
setShowProjectGallery(project)} - > -
-
- {project.icon} -
-
-

- {project.title} -

-

- {project.period} -

-
-
- -

- {project.description} -

- -
- {project.tech.map((tech: string) => ( - - {tech} - - ))} -
- -
- - - View Gallery - - - {project.status} - -
-
- ))} -
-
-
- - {/* Education & Certificates Section */} -
-
-

- Education & Certifications -

- -
- {/* Education */} -
-

- - Education -

- -
- {education.map((edu: Education, index: number) => ( -
-

- {edu.degree} -

-

- {edu.institution} -

-
- - {edu.period} - - - {edu.status} - -
-
- ))} -
-
- - {/* Certificates */} -
-

- - Certifications -

- -
- {certificates.map((cert: string, index: number) => ( -
-
- {cert} -
- ))} -
- -
-

- Interests -

-
- {['Computer Hardware', 'Web Development', 'Finance', 'Economics', 'Literature'].map((interest: string) => ( - - {interest} - - ))} -
-
-
-
-
-
- - {/* Contact Section */} -
-
-

- Let's Connect -

-

- I'm always interested in discussing new opportunities, collaborations, or just having a chat about technology and economics. -

- - -
-
- - {/* Footer */} -
-
-

- Built with ❄️ using Next.js & Nord theme • Pietro Quintavalle © 2025 -

-
-
- - {/* Project Gallery Modal */} - {showProjectGallery && ( - setShowProjectGallery(false)} - /> - )} -
- ); -}; - -export default Portfolio; \ No newline at end of file