Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 126 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>William Levy - Portfolio</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<nav class="navbar">
<div class="container">
<div class="logo">WL</div>
<ul class="nav-links">
<li><a href="#home">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#skills">Skills</a></li>
<li><a href="#projects">Projects</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div>
</nav>

<section id="home" class="hero">
<div class="container">
<div class="hero-content">
<h1 class="hero-title">
Hi, I'm <span class="highlight">William Levy</span>
</h1>
<p class="hero-subtitle">Full Stack Developer & Creative Problem Solver</p>
<a href="#contact" class="cta-button">Get In Touch</a>
</div>
</div>
</section>

<section id="about" class="section">
<div class="container">
<h2 class="section-title">About Me</h2>
<div class="about-content">
<p>I'm a passionate developer who loves creating elegant solutions to complex problems. With a focus on clean code and user-centered design, I build applications that make a difference.</p>
<p>When I'm not coding, you can find me exploring new technologies, contributing to open source, or enjoying the outdoors.</p>
</div>
</div>
</section>

<section id="skills" class="section section-alt">
<div class="container">
<h2 class="section-title">Skills & Technologies</h2>
<div class="skills-grid">
<div class="skill-card">
<h3>Frontend</h3>
<p>HTML, CSS, JavaScript, React, Vue.js</p>
</div>
<div class="skill-card">
<h3>Backend</h3>
<p>Node.js, Python, Java, REST APIs</p>
</div>
<div class="skill-card">
<h3>Database</h3>
<p>MongoDB, PostgreSQL, MySQL</p>
</div>
<div class="skill-card">
<h3>Tools</h3>
<p>Git, Docker, AWS, CI/CD</p>
</div>
</div>
</div>
</section>

<section id="projects" class="section">
<div class="container">
<h2 class="section-title">Featured Projects</h2>
<div class="projects-grid">
<div class="project-card">
<h3>Project One</h3>
<p>A modern web application built with React and Node.js that solves real-world problems.</p>
<div class="project-tags">
<span class="tag">React</span>
<span class="tag">Node.js</span>
<span class="tag">MongoDB</span>
</div>
</div>
<div class="project-card">
<h3>Project Two</h3>
<p>An innovative solution using cutting-edge technologies to improve user experience.</p>
<div class="project-tags">
<span class="tag">Vue.js</span>
<span class="tag">Python</span>
<span class="tag">PostgreSQL</span>
</div>
</div>
<div class="project-card">
<h3>Project Three</h3>
<p>A scalable platform designed with best practices and modern architecture.</p>
<div class="project-tags">
<span class="tag">JavaScript</span>
<span class="tag">AWS</span>
<span class="tag">Docker</span>
</div>
</div>
</div>
</div>
</section>

<section id="contact" class="section section-alt">
<div class="container">
<h2 class="section-title">Let's Connect</h2>
<div class="contact-content">
<p>Interested in working together? Feel free to reach out!</p>
<div class="contact-links">
<a href="mailto:hello@williamlevy.com" class="contact-link">Email</a>
<a href="https://github.com/wllevy" class="contact-link">GitHub</a>
<a href="https://linkedin.com/in/williamlevy" class="contact-link">LinkedIn</a>
</div>
</div>
</div>
</section>

<footer class="footer">
<div class="container">
<p>&copy; 2026 William Levy. All rights reserved.</p>
</div>
</footer>

<script src="script.js"></script>
</body>
</html>
69 changes: 69 additions & 0 deletions script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
// Smooth scrolling for navigation links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
});

// Navbar scroll effect and active link highlighting
const navbar = document.querySelector('.navbar');
const sections = document.querySelectorAll('section[id]');
const navLinks = document.querySelectorAll('.nav-links a');

window.addEventListener('scroll', () => {
const currentScroll = window.pageYOffset;

// Update navbar shadow
if (currentScroll > 100) {
navbar.style.boxShadow = '0 2px 20px rgba(0, 0, 0, 0.1)';
} else {
navbar.style.boxShadow = '0 2px 10px rgba(0, 0, 0, 0.05)';
}

// Update active navigation links
let current = '';
sections.forEach(section => {
const sectionTop = section.offsetTop;
if (currentScroll >= sectionTop - 100) {
current = section.getAttribute('id');
}
});

navLinks.forEach(link => {
link.classList.remove('active');
if (link.getAttribute('href').slice(1) === current) {
link.classList.add('active');
}
});
});

// Intersection Observer for fade-in animations
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};

const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.style.opacity = '1';
entry.target.style.transform = 'translateY(0)';
}
});
}, observerOptions);

// Observe all cards
document.querySelectorAll('.skill-card, .project-card').forEach(card => {
card.style.opacity = '0';
card.style.transform = 'translateY(20px)';
card.style.transition = 'opacity 0.6s ease, transform 0.6s ease';
observer.observe(card);
});

Loading