Complete guide to all section types and their configuration options. Each section can be customized through config.json.
The hero section is typically the first thing visitors see. It features your name, tagline, and optional avatar.
Hero comes with 6 variants, each with a different layout and style:
| Variant | Description |
|---|
centered | Classic centered layout with avatar and text |
split | Side-by-side layout with avatar on one side |
minimal | Text-only, ultra-minimal design |
bold | Large, attention-grabbing typography |
card | Content in a card with subtle shadow |
links | Includes social links directly in the hero |
{
"type": "hero",
"enabled": true,
"variant": "centered",
"name": "Your Name",
"tagline": "Your professional tagline",
"avatar": "/img/avatar.png",
"showAvatar": true,
"links": []
}
| Field | Type | Required | Description |
|---|
variant | string | Yes | One of: centered, split, minimal, bold, card, links |
name | string | Yes | Your name or headline |
tagline | string | Yes | Subtitle or professional tagline |
avatar | string | No | Path to avatar image (e.g., "/img/avatar.png") |
showAvatar | boolean | No | Display avatar (default: true) |
links | array | No | Social links (required for "links" variant) |
{
"links": [
{
"name": "GitHub",
"url": "https://github.com/username",
"icon": "github"
},
{
"name": "LinkedIn",
"url": "https://linkedin.com/in/username",
"icon": "linkedin"
}
]
}
{
"type": "hero",
"enabled": true,
"variant": "centered",
"name": "Alex Smith",
"tagline": "Full-stack Developer & Designer",
"avatar": "/img/avatar.png",
"showAvatar": true
}
Share your bio, background, and skills.
| Variant | Description |
|---|
centered | Centered text with skill badges |
split | Two-column layout with content and skills |
card | Content in a card container |
minimal | Simple, text-focused design |
{
"type": "about",
"enabled": true,
"variant": "centered",
"title": "About Me",
"content": "Your bio text here...",
"skills": ["Skill 1", "Skill 2", "Skill 3"]
}
| Field | Type | Required | Description |
|---|
variant | string | Yes | One of: centered, split, card, minimal |
title | string | Yes | Section heading |
content | string | Yes | Your biography or description |
skills | array | No | Array of skill names to display as badges |
{
"type": "about",
"enabled": true,
"variant": "split",
"title": "About Me",
"content": "I'm a passionate developer who loves creating elegant solutions to complex problems. With expertise in modern web technologies, I help bring ideas to life through clean code and thoughtful design.",
"skills": [
"JavaScript",
"TypeScript",
"Svelte",
"React",
"Node.js",
"PostgreSQL"
]
}
Display social media links and other important URLs.
| Variant | Description |
|---|
default | Vertical list of link buttons |
grid | Grid layout for links |
card | Links as cards with icons |
minimal | Simple text links |
{
"type": "links",
"enabled": true,
"variant": "default",
"title": "Connect With Me",
"items": [
{ "name": "GitHub", "url": "https://github.com/username", "icon": "github" }
]
}
| Field | Type | Required | Description |
|---|
variant | string | Yes | One of: default, grid, card, minimal |
title | string | Yes | Section heading |
items | array | Yes | Array of link objects |
{
"name": "GitHub",
"url": "https://github.com/username",
"icon": "github"
}
| Field | Type | Required | Description |
|---|
name | string | Yes | Display name for the link |
url | string | Yes | Full URL (including https://) |
icon | string | Yes | Icon identifier |
github — GitHub
linkedin — LinkedIn
twitter — Twitter/X
discord — Discord
email — Email
blog — Blog/Website
- Custom icons can be added by editing the component
{
"type": "links",
"enabled": true,
"variant": "card",
"title": "Find Me Online",
"items": [
{
"name": "GitHub",
"url": "https://github.com/alexsmith",
"icon": "github"
},
{
"name": "LinkedIn",
"url": "https://linkedin.com/in/alexsmith",
"icon": "linkedin"
},
{ "name": "Email", "url": "mailto:[email protected]", "icon": "email" }
]
}
Add a contact button and/or form.
{
"type": "contact",
"enabled": true,
"title": "Get In Touch",
"description": "Have a project in mind? Let's talk!",
"button": {
"enabled": true,
"type": "email",
"value": "[email protected]",
"text": "Send Email"
},
"form": {
"enabled": false
}
}
| Field | Type | Required | Description |
|---|
title | string | Yes | Section heading |
description | string | No | Introductory text |
button | object | No | Contact button configuration |
form | object | No | Contact form configuration |
{
"enabled": true,
"type": "email",
"value": "[email protected]",
"text": "Send Email"
}
| Field | Type | Description |
|---|
enabled | boolean | Show the button |
type | string | Button type: "email" or "link" |
value | string | Email address or URL |
text | string | Button text |
{
"enabled": true,
"email": "[email protected]",
"subject": "Contact Form Submission",
"successMessage": "Thanks! I'll get back to you soon.",
"namePlaceholder": "Your Name",
"emailPlaceholder": "[email protected]",
"messagePlaceholder": "Your message...",
"submitText": "Send Message"
}
Note: The form uses mailto: links. For a true backend form, you'll need to integrate a service like Formspree, Netlify Forms, or similar.
Showcase services or offerings you provide.
{
"type": "services",
"enabled": true,
"title": "What I Do",
"items": [
{
"name": "Web Development",
"description": "Building modern web applications...",
"icon": "code"
}
]
}
| Field | Type | Required | Description |
|---|
title | string | Yes | Section heading |
items | array | Yes | Array of service objects |
{
"name": "Service Name",
"description": "Description of the service",
"icon": "code"
}
| Field | Type | Required | Description |
|---|
name | string | Yes | Service name |
description | string | Yes | Service description |
icon | string | Yes | Icon identifier (code, design, api, consulting, etc.) |
{
"type": "services",
"enabled": true,
"title": "What I Do",
"items": [
{
"name": "Web Development",
"description": "Building responsive, performant web applications with modern frameworks",
"icon": "code"
},
{
"name": "UI/UX Design",
"description": "Creating intuitive and beautiful user interfaces",
"icon": "design"
}
]
}
Display portfolio projects with descriptions and tags.
{
"type": "projects",
"enabled": true,
"title": "Featured Projects",
"items": [
{
"name": "Project Name",
"description": "Brief project description",
"url": "https://github.com/username/project",
"tags": ["Svelte", "TypeScript", "PostgreSQL"]
}
]
}
| Field | Type | Required | Description |
|---|
title | string | Yes | Section heading |
items | array | Yes | Array of project objects |
{
"name": "Project Name",
"description": "Brief description",
"url": "https://github.com/username/project",
"tags": ["Tag1", "Tag2"]
}
| Field | Type | Required | Description |
|---|
name | string | Yes | Project name |
description | string | Yes | Brief description |
url | string | No | Link to project (GitHub, live demo, etc.) |
tags | array | Yes | Technology/category tags |
Show your work experience, education, or career milestones.
{
"type": "timeline",
"enabled": true,
"title": "Experience",
"items": [
{
"date": "2023 - Present",
"title": "Senior Software Engineer",
"subtitle": "Company Name",
"description": "Brief description of role and achievements"
}
]
}
| Field | Type | Required | Description |
|---|
title | string | Yes | Section heading |
items | array | Yes | Array of timeline items |
{
"date": "2023 - Present",
"title": "Job Title",
"subtitle": "Company Name",
"description": "Role description"
}
| Field | Type | Required | Description |
|---|
date | string | Yes | Date range or time period |
title | string | Yes | Position or event title |
subtitle | string | No | Company, school, or location |
description | string | Yes | Details about the role/event |
Display images in various layouts.
| Variant | Description |
|---|
grid | Uniform grid layout |
masonry | Pinterest-style masonry grid |
lightbox | Grid with lightbox modal on click |
carousel | Sliding carousel |
{
"type": "gallery",
"enabled": true,
"variant": "grid",
"title": "Gallery",
"items": [
{
"image": "/img/photo1.jpg",
"caption": "Image caption",
"url": ""
}
]
}
| Field | Type | Required | Description |
|---|
variant | string | Yes | One of: grid, masonry, lightbox, carousel |
title | string | Yes | Section heading |
items | array | Yes | Array of image objects |
{
"image": "/img/photo.jpg",
"caption": "Photo caption",
"url": "https://example.com"
}
| Field | Type | Required | Description |
|---|
image | string | Yes | Path to image file |
caption | string | No | Image caption/description |
url | string | No | Link when image is clicked (optional) |
Display client testimonials or reviews.
{
"type": "testimonials",
"enabled": true,
"title": "What People Say",
"items": [
{
"quote": "Great developer to work with!",
"name": "John Doe",
"role": "CEO, Example Inc.",
"avatar": ""
}
]
}
| Field | Type | Required | Description |
|---|
title | string | Yes | Section heading |
items | array | Yes | Array of testimonial objects |
{
"quote": "The testimonial text goes here",
"name": "Client Name",
"role": "Title, Company",
"avatar": "/img/client-avatar.jpg"
}
| Field | Type | Required | Description |
|---|
quote | string | Yes | Testimonial text |
name | string | Yes | Client name |
role | string | Yes | Client title and company |
avatar | string | No | Path to client photo |
Frequently asked questions with expandable answers.
{
"type": "faq",
"enabled": true,
"title": "Frequently Asked Questions",
"items": [
{
"question": "Your question here?",
"answer": "Your answer here."
}
]
}
| Field | Type | Required | Description |
|---|
title | string | Yes | Section heading |
items | array | Yes | Array of Q&A objects |
{
"question": "What is your question?",
"answer": "This is the answer to the question."
}
Display key numbers or achievements.
{
"type": "stats",
"enabled": true,
"title": "By the Numbers",
"items": [
{
"label": "Projects",
"value": "50+",
"description": "Completed"
}
]
}
| Field | Type | Required | Description |
|---|
title | string | Yes | Section heading |
items | array | Yes | Array of stat objects |
{
"label": "Projects",
"value": "50+",
"description": "Completed"
}
| Field | Type | Required | Description |
|---|
label | string | Yes | Stat category |
value | string | Yes | Numeric value (can include +, ∞, etc.) |
description | string | Yes | Additional context |
Sections render in the order they appear in your config. A common pattern:
- Hero (first impression)
- About (introduce yourself)
- Services or Projects (showcase work)
- Timeline (experience)
- Testimonials (social proof)
- Links (social media)
- Contact (call to action)
You can use the same section type multiple times:
{
"sections": [
{ "type": "gallery", "variant": "grid", "title": "Photos" },
{ "type": "gallery", "variant": "carousel", "title": "Featured" }
]
}
- Set
"enabled": false to temporarily hide a section while keeping the configuration
- Delete the section object entirely if you're sure you won't need it