A modern, responsive portfolio template designed for web developers, designers, and creative professionals. Built with clean HTML, Tailwind CSS, and vanilla JavaScript - no framework dependencies required.
- Responsive Design: Fully responsive layout that works beautifully on all devices
- Modern UI/UX: Clean, professional design with smooth animations and transitions
- SEO Optimized: Complete meta tags, Open Graph, Twitter Cards, and structured data (JSON-LD)
- Performance Focused: Lightweight, fast-loading with optimized assets
- Accessibility: Semantic HTML and ARIA labels for screen readers
- Analytics Ready: Integrated PostHog analytics for tracking page views and interactions
-
Hero Section
- Oversized name with fit-to-width text effect
- Hero image with overlay text
- Customizable location and availability text
- Social handle display
-
Skills Section
- Grid of skill icons with hover effects
- Brand-specific colors on hover
- 10+ pre-configured technology icons (HTML5, CSS, JavaScript, Mailchimp, SendGrid, HubSpot, etc.)
-
Projects Section
- Grid layout with project cards (2:3 aspect ratio images)
- Category tags (Design System, Marketing, E-commerce, etc.)
- Project titles and descriptions
- Action links (Case Study, Visit Site, Live Demo, etc.)
- Click tracking for analytics
-
About Section
- Personal introduction
- Experience summary
- Philosophy and approach
-
Case Studies Section
- Detailed case study showcases
- Side-by-side layout with images
- Key metrics and highlights
- Links to full case study pages
-
Contact/Footer Section
- Contact information
- Social media links
- Navigation links
- Email CTA button
-
Exit Intent Modal: Displays when users try to leave the page
- Customizable introduction video (YouTube embed)
- Uppercase title with centered text
- Smooth fade-in animation
- Close button and "Continue Browsing" button
-
Mobile Navigation:
- Hamburger menu for mobile devices
- Smooth transitions
- Accessible navigation controls
-
Smooth Scrolling: Anchor link navigation with header offset compensation
Portfolio1/
βββ index.html # Main portfolio page
βββ case-study/
β βββ email-campaign/
β βββ email.html # Sample case study page
βββ css/
β βββ main.css # Custom styles (fit-to-width, skill icons, modal)
βββ img/
β βββ hero.jpg # Hero section image
βββ readme.md # This file
-
Download/Clone the template
git clone <repository-url> cd Portfolio1
-
Open in browser
- Simply open
index.htmlin your browser - No build process required!
- Simply open
-
Customize your content
- Replace placeholder text in
index.html - Add your own images to the
img/folder - Update meta tags and structured data
- Replace placeholder text in
<title>Your Name β Portfolio | Your Title</title>
<meta name="description" content="Your description...">
<meta name="keywords" content="your, keywords, here">- Change
name,url,email,jobTitle - Update social media links in
sameAsarray - Modify skills in
knowsAboutarray - Update location information
<nav class="hidden md:flex items-center gap-6 text-sm font-medium text-zinc-700">
<a href="#work">Explore</a>
<a href="#projects">Portfolio</a>
<a href="#about">My Story</a>
<!-- Add/remove navigation items -->
</nav>- Email (Line 172): Change
hello@jamesjackson.comto your email - Social Handle (Line 229): Update
@jamesjackson.studioto your handle
<span><span>Your Name</span></span>
<span aria-hidden="true">Your Name</span>- Replace
img/hero.jpgwith your own hero image - Recommended: 1200x800px or larger
- Format: JPG, PNG, or WebP
<p class="...">
Your custom hero text here
</p>- Currently set to: "Based in New York But Available Worldwide"
- Add
uppercaseclass to make text uppercase
<span>@your-handle</span>Each skill uses this structure:
<a class="skill-icon skill-icon-[name] group ...">
<img src="https://cdn.simpleicons.org/[icon-name]/0a0a0a" alt="[Name]">
</a>Available icons (using Simple Icons CDN):
- Any icon from Simple Icons
- Format:
https://cdn.simpleicons.org/[icon-name]/0a0a0a
Add custom hover colors in css/main.css:
.skill-icon-[name]:hover img {
filter: brightness(0) saturate(100%) invert(X%) sepia(X%) saturate(X%) hue-rotate(Xdeg) brightness(X);
}Each project card structure:
<article class="group rounded-md border border-zinc-200 bg-white overflow-hidden">
<!-- Image -->
<a href="#" class="relative overflow-hidden aspect-[2/3] block">
<img src="your-image-url" alt="Project name" class="...">
</a>
<div class="p-5">
<!-- Category Tags -->
<div class="flex items-center gap-2">
<span class="...">Category 1</span>
<span class="...">Category 2</span>
</div>
<!-- Title -->
<a href="#" class="mt-3 ...">
<h3>Project Name</h3>
</a>
<!-- Description -->
<p class="mt-2 text-sm text-zinc-600">Project description...</p>
<!-- Action Link -->
<div class="mt-4 flex items-center justify-between">
<a href="#" class="...">
<i data-lucide="external-link"></i>
<span>Action Text</span>
</a>
</div>
</div>
</article>Project Image Requirements:
- Aspect ratio: 2:3 (portrait)
- Recommended size: 800x1200px
- Formats: JPG, PNG, or WebP
<h2 class="...">Your Title</h2>
<p class="...">Your introduction paragraph...</p>
<p class="...">Your second paragraph...</p>Each case study includes:
- Category tags
- Title and description
- Metrics/highlights
- Link to full case study page
- Featured image (4:3 aspect ratio)
- Logo/name (Line 586)
- Description (Line 587)
- Social links (Lines 589-597)
- Navigation links (Lines 602-608)
- Contact information (Lines 612-618)
<h2 class="...">
Your Custom Modal Title
</h2>Replace the YouTube video ID:
<iframe src="https://www.youtube.com/embed/YOUR_VIDEO_ID"></iframe>- Edit exit intent detection sensitivity
- Modify when modal appears
- Customize close behavior
-
Get Your PostHog API Key
- Sign up at PostHog
- Create a project
- Copy your Project API Key
-
Update API Key in both files:
index.html(Line 138)case-study/email-campaign/email.html(Line 31)
Replace
'YOUR_PROJECT_API_KEY'with your actual API key:posthog.init('phc_your_actual_api_key_here', { api_host: 'https://us.i.posthog.com', // ... });
-
Custom Instance
- If using self-hosted PostHog, update
api_host:
api_host: 'https://your-instance.posthog.com' - If using self-hosted PostHog, update
The template automatically tracks:
-
Page Views (
$pageview)- Home page:
page_type: 'home' - Case study pages:
page_type: 'case_study'
- Home page:
-
Project Clicks (
project_clicked)- Properties:
project_name,project_type('image' or 'title')
- Properties:
-
Case Study Clicks (
case_study_clicked)- Properties:
case_study_name,click_type('image' or 'button')
- Properties:
Add custom tracking:
posthog.capture('event_name', {
property1: 'value1',
property2: 'value2'
});-
Create directory structure:
case-study/ βββ your-project-name/ βββ index.html -
Copy template from
case-study/email-campaign/email.html -
Customize the page:
- Update title and meta tags
- Replace YouTube video embed
- Update project explanation paragraphs
- Modify highlights list
- Add your project images
-
Link from main page:
- Update project card links to point to your case study
- Update case study section links
- Title Section: Project name, category tags, description
- Project Overview: Left column with paragraphs
- Highlights: Right column with key points
- Video Section: Full-width YouTube embed
- Image Gallery: 3 images in a grid
- Back Button: Link back to portfolio
The template uses Tailwind's default zinc color palette. To customize:
-
Use Tailwind CDN custom config (if needed):
<script> tailwind.config = { theme: { extend: { colors: { primary: '#your-color', } } } } </script>
-
Or edit CSS directly in
css/main.css
- Primary Font: Inter (loaded from Google Fonts)
- Font Size Scale: Uses Tailwind's default scale
- To change font, update the font-family in:
css/main.css(Line 7)- Case study pages (Line 30 in email.html)
- Uses Tailwind's spacing scale
- Max width:
max-w-7xl(1280px) - Padding: Responsive with
px-6andpy-16 sm:py-24
- HTML5: Semantic markup
- Tailwind CSS: Utility-first CSS framework (via CDN)
- JavaScript: Vanilla JS (no dependencies)
- Lucide Icons: Icon library (via CDN)
- PostHog: Analytics (optional)
- Modern browsers (Chrome, Firefox, Safari, Edge)
- Mobile browsers (iOS Safari, Chrome Mobile)
- IE11+ (with graceful degradation)
- No build process required
- Optimized for fast loading
- Lazy loading for images (where applicable)
- Minimal JavaScript
- Mobile: Default (< 640px)
- Tablet:
sm:(β₯ 640px) - Desktop:
md:(β₯ 768px) - Large Desktop:
lg:(β₯ 1024px) - XL Desktop:
xl:(β₯ 1280px)
- Title, description, keywords
- Open Graph tags (Facebook)
- Twitter Card tags
- Geo-location tags
- Canonical URL
- Person schema (JSON-LD)
- WebSite schema
- Proper semantic HTML
- Semantic HTML5 elements
- Proper heading hierarchy (h1, h2, h3)
- Alt text for images
- ARIA labels where needed
-
Images
- Use WebP format for better compression
- Optimize images before uploading
- Use appropriate aspect ratios (2:3 for projects, 4:3 for case studies)
-
Content
- Keep project descriptions concise
- Use clear, action-oriented CTAs
- Highlight metrics and achievements
-
Performance
- Minimize custom JavaScript
- Use CDN-hosted assets where possible
- Consider lazy loading for below-fold images
-
Accessibility
- Maintain proper heading hierarchy
- Ensure sufficient color contrast
- Test with keyboard navigation
- Use descriptive alt text
- Check that Lucide Icons CDN is loading
- Ensure
lucide.createIcons()is called after DOM loads
- Verify PostHog API key is correct
- Check browser console for errors
- Ensure no ad blockers are interfering
- Check file paths are correct
- Ensure images are in the
img/folder - Verify image URLs are accessible
- Check that exit intent detection JavaScript is loaded
- Test by moving mouse to top of page quickly
- Verify modal HTML structure is intact
This template is provided as-is for portfolio use. Customize freely for your personal or professional portfolio.
- Design: Modern portfolio template
- Icons: Lucide Icons
- Technology Icons: Simple Icons
- Fonts: Inter
- CSS Framework: Tailwind CSS
- Analytics: PostHog
For customization help or questions:
- Review the code comments in HTML files
- Check Tailwind CSS documentation
- Refer to this README
Happy Building! π
Build something amazing with this template!