Portfolio Website Instructions
Follow these step-by-step instructions to build Build a Portfolio Website from scratch.
Get Started with GitHub Classroom
Accept the GitHub Classroom assignment to get your personal repository with starter code and automated testing setup.
What you'll get: Personal repository, starter files, automated tests, and issue tracking.
Project Assets
Download starter files, design assets, and reference materials for this project.
Starter Files.zip
Complete starter code with project structure and initial files
2.1 MB
Design File.fig
Figma design file with layouts, components, and style guide
890 KB
Preview Images.zip
High-quality preview images for reference
5.2 MB
Project Brief.pdf
Detailed project requirements and specifications
1.4 MB
Getting Started Tip
Download the starter files first, then use the design file as reference while working through the instructions. The preview images show what your final project should look like.
Finished building?
Check out the complete solution with detailed explanations and best practices.
Quick Actions
Your Progress
Portfolio Website - Instructions
Follow this step-by-step guide to build your professional portfolio website. Take your time with each step and don't hesitate to experiment!
📋 Before You Start
Required Tools
- Code Editor: VS Code (recommended) or your preferred editor
- Web Browser: Chrome or Firefox for development
- Terminal: Built-in terminal or VS Code integrated terminal
- Git: For version control and deployment
Development Setup
- Install VS Code extensions:
- Live Server (for live reload)
- HTML CSS Support
- Auto Rename Tag
- Prettier (for code formatting)
🚀 Getting Started
Step 1: Get Your Starter Code
- Accept the GitHub Classroom assignment
- Click the GitHub Classroom link provided
- This creates a personal repository with starter files
- Clone the repository to your local machine
git clone https://github.com/YOUR-GITHUB-USERNAME/portfolio-starter.gitcd portfolio-starter
Step 2: Project Structure
Your starter repository includes:
portfolio-starter/├── index.html # Home page├── about.html # About page├── projects.html # Projects showcase├── contact.html # Contact form├── css/│ ├── styles.css # Main stylesheet│ └── reset.css # CSS reset├── images/ # Your photos and project images├── assets/ # Icons, fonts, etc.└── README.md
📝 Development Guide
Phase 1: Home Page (index.html)
1.1 HTML Structure
Start by creating the basic structure in index.html
:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Your Name - Web Developer</title> <link rel="stylesheet" href="css/reset.css"> <link rel="stylesheet" href="css/styles.css"></head><body> <header> <nav> <!-- Navigation will go here --> </nav> </header>
<main> <section class="hero"> <!-- Hero content --> </section>
<section class="intro"> <!-- Introduction section --> </section>
<section class="featured-projects"> <!-- Featured projects preview --> </section> </main>
<footer> <!-- Footer content --> </footer></body></html>
1.2 Create the Navigation
Add a responsive navigation menu:
<header> <nav class="navbar"> <div class="nav-brand"> <a href="index.html">Your Name</a> </div> <ul class="nav-menu"> <li><a href="index.html" class="nav-link active">Home</a></li> <li><a href="about.html" class="nav-link">About</a></li> <li><a href="projects.html" class="nav-link">Projects</a></li> <li><a href="contact.html" class="nav-link">Contact</a></li> </ul> <div class="hamburger"> <span class="bar"></span> <span class="bar"></span> <span class="bar"></span> </div> </nav></header>
1.3 Hero Section
Create an impactful hero section:
<section class="hero"> <div class="hero-content"> <h1>Hi, I'm <span class="highlight">Your Name</span></h1> <p class="hero-subtitle">Aspiring Web Developer</p> <p class="hero-description"> I'm passionate about creating beautiful, functional websites and learning new technologies. </p> <div class="hero-buttons"> <a href="projects.html" class="btn btn-primary">View My Work</a> <a href="contact.html" class="btn btn-secondary">Get In Touch</a> </div> </div></section>
Phase 2: Styling with CSS
2.1 CSS Custom Properties
Set up your design system in css/styles.css
:
:root { /* Colors */ --primary-color: #3b82f6; --secondary-color: #1e40af; --accent-color: #f59e0b; --text-color: #1f2937; --text-light: #6b7280; --bg-color: #ffffff; --bg-light: #f9fafb; --border-color: #e5e7eb;
/* Typography */ --font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; --font-size-sm: 0.875rem; --font-size-base: 1rem; --font-size-lg: 1.125rem; --font-size-xl: 1.25rem; --font-size-2xl: 1.5rem; --font-size-3xl: 1.875rem; --font-size-4xl: 2.25rem;
/* Spacing */ --space-xs: 0.5rem; --space-sm: 1rem; --space-md: 1.5rem; --space-lg: 2rem; --space-xl: 3rem; --space-2xl: 4rem;
/* Layout */ --max-width: 1200px; --border-radius: 0.5rem; --shadow: 0 1px 3px rgba(0, 0, 0, 0.1);}
2.2 Base Styles
body { font-family: var(--font-family); color: var(--text-color); line-height: 1.6;}
.container { max-width: var(--max-width); margin: 0 auto; padding: 0 var(--space-sm);}
/* Button styles */.btn { display: inline-block; padding: var(--space-xs) var(--space-md); border-radius: var(--border-radius); text-decoration: none; font-weight: 500; transition: all 0.3s ease;}
.btn-primary { background-color: var(--primary-color); color: white;}
.btn-primary:hover { background-color: var(--secondary-color);}
2.3 Navigation Styles
.navbar { display: flex; justify-content: space-between; align-items: center; padding: var(--space-sm) var(--space-md); background-color: var(--bg-color); box-shadow: var(--shadow);}
.nav-brand a { font-size: var(--font-size-xl); font-weight: bold; text-decoration: none; color: var(--primary-color);}
.nav-menu { display: flex; list-style: none; margin: 0; padding: 0; gap: var(--space-md);}
.nav-link { text-decoration: none; color: var(--text-color); transition: color 0.3s ease;}
.nav-link:hover,.nav-link.active { color: var(--primary-color);}
/* Mobile hamburger menu (we'll add JavaScript later) */.hamburger { display: none; flex-direction: column; cursor: pointer;}
.bar { width: 25px; height: 3px; background-color: var(--text-color); margin: 3px 0; transition: 0.3s;}
Phase 3: Responsive Design
3.1 Mobile-First Approach
Add responsive breakpoints:
/* Mobile styles (default) */.hero { padding: var(--space-2xl) var(--space-sm); text-align: center;}
.hero h1 { font-size: var(--font-size-3xl); margin-bottom: var(--space-sm);}
/* Tablet styles */@media (min-width: 768px) { .hero h1 { font-size: var(--font-size-4xl); }
.hero-buttons { display: flex; gap: var(--space-sm); justify-content: center; }}
/* Desktop styles */@media (min-width: 1024px) { .hamburger { display: none; }
.nav-menu { display: flex; }}
/* Mobile menu toggle */@media (max-width: 1023px) { .nav-menu { position: fixed; left: -100%; top: 70px; flex-direction: column; background-color: var(--bg-color); width: 100%; text-align: center; transition: 0.3s; box-shadow: var(--shadow); }
.nav-menu.active { left: 0; }
.hamburger { display: flex; }}
🔧 Implementation Checkpoints
Complete each phase before moving to the next:
✅ Phase 1 Checklist
- [ ] HTML structure is semantic and valid
- [ ] Navigation menu is implemented
- [ ] Hero section displays correctly
- [ ] All internal links work properly
✅ Phase 2 Checklist
- [ ] CSS custom properties are defined
- [ ] Typography is consistent and readable
- [ ] Color scheme is applied throughout
- [ ] Hover effects work smoothly
✅ Phase 3 Checklist
- [ ] Website is responsive on mobile devices
- [ ] Tablet layout looks good (768px+)
- [ ] Desktop layout utilizes space well (1024px+)
- [ ] Navigation works on all screen sizes
🚨 Common Issues & Solutions
Problem: Styles not loading
Solution: Check file paths in your HTML <link>
tags and ensure CSS files exist.
Problem: Images not displaying
Solution: Verify image paths and file extensions match exactly (case-sensitive).
Problem: Mobile menu not working
Solution: We'll add JavaScript functionality in a later step.
Problem: Layout breaking on different screen sizes
Solution: Test with browser dev tools and adjust media query breakpoints.
📱 Testing Your Website
- Responsive Design: Use browser dev tools to test different screen sizes
- Cross-browser: Test in Chrome, Firefox, and Safari
- Validation: Use W3C HTML and CSS validators
- Performance: Check loading speed with browser dev tools
🚀 Deployment
When you're ready to deploy:
- Push to GitHub:
git add .git commit -m "Complete portfolio website"git push origin main
- Enable GitHub Pages:
- Go to repository settings
- Scroll to "Pages" section
- Select "Deploy from a branch" → "main"
- Your site will be live at:
https://username.github.io/repository-name
🎯 Next Steps
Once you complete the basic portfolio:
- Add JavaScript interactivity (hamburger menu, smooth scrolling)
- Implement the About page with your story and skills
- Create the Projects page to showcase your work
- Build the Contact page with a functional form
- Add animations and micro-interactions
- Optimize for performance and SEO
📚 Additional Resources
- MDN Web Docs - Comprehensive web development reference
- CSS Tricks - Helpful CSS tutorials and examples
- Can I Use - Browser compatibility checker
- Google Fonts - Free web fonts
💡 Pro Tips
- Start simple: Get the basic structure working before adding complexity
- Test frequently: Check your work in the browser after each major change
- Use semantic HTML: Screen readers and search engines will thank you
- Mobile first: Design for mobile, then enhance for larger screens
- Commit often: Save your progress with meaningful Git commit messages
Ready to build something amazing? Let's code! 🚀
Need help? Check the solution page for complete code examples and explanations, or reach out in the community Discord for support from fellow learners.