Modern, responsive portfolio website with advanced features and clean architecture.
- 🎨 Clean, minimal design with dark/light theme
- 📱 Fully responsive across all devices
- 🚀 Smooth animations and transitions
- 🎯 Custom cursor with interactive effects
- � Animated statistics and skill bars
- �📧 Working contact form with validation
- 🌓 Dark/Light theme toggle with localStorage
- ⚡ Fast loading with optimized assets
- 🎪 Loading screen with progress animation
porto/
├── index.html # Main HTML file
├── css/ # Modular CSS files
│ ├── base.css # Variables, reset, base styles
│ ├── components.css # UI components (cursor, loading)
│ ├── navigation.css # Navigation styles
│ ├── hero.css # Hero section styles
│ ├── sections.css # About, skills, work sections
│ ├── contact.css # Contact and footer styles
│ ├── animations.css # Keyframes and animations
│ └── responsive.css # Media queries
├── js/ # Modular JavaScript files
│ ├── main.js # Main app initialization
│ ├── loading.js # Loading screen functionality
│ ├── cursor.js # Custom cursor
│ ├── theme.js # Theme switching
│ ├── navigation.js # Navigation functionality
│ ├── animations.js # Animation controls
│ └── contact.js # Contact form handling
├── server.py # Development server
├── README.md # This file
└── STRUCTURE.md # Detailed file structure docs
- Open
index.htmlin your web browser - Or run the development server:
python3 server.py - Visit
http://localhost:8000
# Start development server
python3 server.py
# Server will automatically open browser
# Hot reload: Refresh browser after changes- Name & Branding: Update in
index.htmland CSS files - Contact Info: Change email and social links in HTML
- About Section: Edit your story and experience
- Skills: Update technical skills and percentages
- Project Images: Replace placeholder images with your work
- Project Info: Update titles, descriptions, and tech stacks
- Project Links: Add links to live demos and repositories
- Colors: Modify CSS custom properties in
css/base.css - Fonts: Change font families in base styles
- Layout: Adjust grid systems and spacing
- Animations: Customize timing and effects
<!-- Update these sections in index.html -->
<section id="about"> <!-- Your story and stats -->
<section id="skills"> <!-- Technical skills -->
<section id="work"> <!-- Portfolio projects -->
<section id="contact"> <!-- Contact form -->- Modular Architecture: Separated CSS and JS files
- Lazy Loading: Images load on demand
- CSS Custom Properties: Efficient theme switching
- Intersection Observer: Optimized scroll animations
- Mobile-First: Responsive design approach
- Modern Browsers: Chrome 60+, Firefox 60+, Safari 12+, Edge 79+
- Mobile: iOS Safari, Chrome Mobile, Samsung Internet
- Features: CSS Grid, Flexbox, CSS Custom Properties, ES6+
- Mobile: 480px and below
- Tablet: 768px and below
- Desktop: 1024px and above
- Large Desktop: 1200px and above
- HTML5: Semantic markup, accessibility
- CSS3: Grid, Flexbox, Custom Properties, Animations
- JavaScript ES6+: Classes, Modules, Async/Await
- External Libraries: AOS (Animate On Scroll), Font Awesome
- Development: Python HTTP Server
- GitHub Pages: Push to
gh-pagesbranch - Netlify: Drag and drop deployment
- Vercel: Git integration deployment
- Purchase domain from registrar
- Configure DNS settings
- Update meta tags with your domain
# For production, consider:
# 1. Minify CSS and JavaScript
# 2. Optimize and compress images
# 3. Enable gzip compression
# 4. Set up proper caching headers- File Organization: Each feature has its own CSS/JS file
- CSS Variables: Easy theme customization
- Mobile-First: Design for mobile, enhance for desktop
- Progressive Enhancement: Core functionality works without JS
- Accessibility: Semantic HTML, proper contrast ratios
Add your analytics tracking code to the <head> section:
<!-- Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=GA_TRACKING_ID"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'GA_TRACKING_ID');
</script>