A personal portfolio website showcasing work and thoughts on design and development.
- Responsive design
- Fast loading and optimized performance
- Project showcase with filtering capabilities
- Blog/thoughts section
- Contact form integration
- Dark/light mode support
- Hugo Extended (v0.110.0 or later)
- Node.js (v16 or later)
- npm (v8 or later)
-
Clone the repository:
git clone https://github.com/yourusername/folio.git cd folio
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
View the site at
http://localhost:1313
npm run build
The built files will be in the public/
directory.
folio/
├── archetypes/ # Content templates
├── assets/ # Source files (SCSS, JS)
│ ├── scss/ # Styling files
│ └── js/ # JavaScript files
├── content/ # Markdown content
│ ├── work/ # Project posts
│ └── blog/ # Blog posts
├── data/ # Site data files
├── layouts/ # Hugo templates
├── static/ # Static files
│ ├── assets/ # Images and other assets
│ └── admin/ # CMS admin panel
└── config.toml # Site configuration
hugo new work/your-project-name/index.md
Project front matter template:
---
title: "Project Title"
date: 2024-03-21
draft: false
description: "Brief project description"
tags: ["web", "design", "development"]
technologies: ["React", "Node.js"]
thumbnail: "/assets/images/projects/thumbnail.jpg"
---
hugo new blog/post-name.md
- Place images in the page bundle directory alongside your content
- Reference in markdown using the image shortcode:
{{< image src="filename.jpg" alt="Alt text" >}}
- Images will be automatically converted to WebP with JPEG fallback
- Original images should be high quality (they will be automatically optimized)
- Width: 600px
- Aspect Ratio: 16:9
- File Format: WebP (with JPEG fallback)
- Quality: 80%
- File Size: Aim for under 50KB after optimization
For work/project pages, use these specifications for hero images:
- Width: 3840px (minimum 2400px)
- Height: 1920px (minimum 1200px)
- Aspect Ratio: 2:1 or 16:9
- File Format: WebP (with JPEG fallback)
- Quality: 85%
- File Size: Aim for under 1MB after optimization
The hero images will be automatically resized to:
- 3840px (4K displays)
- 2880px (Retina 5K)
- 1920px (Full HD)
- 1200px (Mobile/Tablet)
Create a .env
file in the root directory:
HUGO_ENVIRONMENT="development"
CONTACT_FORM_ENDPOINT="your-endpoint"
GA_TRACKING_ID="UA-XXXXXXXXX-X"
- Modify variables in
assets/scss/_variables.scss
- Add custom styles in
assets/scss/custom.scss
- Connect your GitHub repository
- Build command:
npm run build
- Publish directory:
public
- Set environment variables in Netlify dashboard
- Update
config.toml
baseURL - Enable GitHub Actions workflow
- Configure GitHub Pages settings
- Fork the repository
- Create a feature branch
- Commit changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE.md file for details
For support, email [email protected] or create an issue in the GitHub repository.
The portfolio supports both light and dark themes with CSS custom properties. Theme colors are defined in:
startLine: 1
endLine: 13
- Service Worker
- Implements offline functionality
- Caches critical assets
- Handles failed network requests Reference implementation in:
startLine: 1
endLine: 50
- Image Optimization
- Automatic WebP conversion
- Responsive image sizing
- Lazy loading implementation
- Image optimization settings defined in
hugo.toml
:
startLine: 37
endLine: 41
The portfolio uses a sophisticated typography system with:
- Responsive font scaling
- Optimized line lengths
- Dark mode adjustments
- Proper heading hierarchy
Reference implementation in:
startLine: 134
endLine: 265
Smooth page transitions are implemented using:
- CSS transitions
- History API
- Fixed element handling Reference implementation in:
startLine: 1
endLine: 37
- Color Contrast Testing
- Automated contrast ratio checking
- WCAG 2.1 compliance testing Reference implementation in:
startLine: 1
endLine: 71
- Keyboard Navigation
- Skip links
- Focus management
- ARIA attributes
Additional npm scripts available:
startLine: 5
endLine: 11
Security headers are configured in the Netlify configuration:
startLine: 16
endLine: 23
The portfolio includes several image-related components:
- Basic Images
- Standard image with lightbox support
- Caption support
- Lazy loading
- Image Grids
- 2-column grid
- 4-column grid
- Responsive breakpoints
Reference implementation in:
startLine: 1
endLine: 22
Content follows a structured layout system:
- Maximum width constraints
- Responsive padding
- Proper content hierarchy
Reference implementation in:
startLine: 1
endLine: 12
[Previous contributing section remains]
- Run contrast tests:
npm run test:contrast
- Validate HTML:
npm run test:html
- Check performance:
npm run lighthouse
- Chrome (last 2 versions)
- Firefox (last 2 versions)
- Safari (last 2 versions)
- Edge (last 2 versions)
- iOS Safari (last 2 versions)
- Android Chrome (last 2 versions)