Docs

Page Builder Blocks

Reference for all 11 modular page builder blocks in Retrail.

Retrail renders components sequentially from the blocks array in settings.json. You can arrange blocks in any order, duplicate blocks, or disable blocks with "enabled": false.

Hero Block

The introductory profile card featuring avatar, name, tagline, status indicator, and call-to-action buttons.

{
  "type": "hero",
  "enabled": true,
  "name": "Example Name",
  "headline": "Example Title & Profession",
  "bio": "Short personal bio or mission statement.",
  "avatar": "https://example.com/avatar.jpg",
  "avatarPosition": "left",
  "avatarSize": 56,
  "statusText": "Available for projects",
  "statusColor": "neon-green",
  "statusEnabled": true,
  "align": "left",
  "actions": [
    {
      "label": "Get in touch",
      "url": "mailto:example@example.com",
      "variant": "filled",
      "icon": "mail",
      "enabled": true
    }
  ]
}
FieldTypeDescription
avatarPositionstringPosition of profile image: "left", "right", or "top" (default).
avatarSizenumberSize in pixels (defaults to 56 when inline, 84 when top).
statusColorstringColor for the status badge dot (e.g. "neon-green", "teal").
statusEnabledbooleanSet to false to hide the status indicator.
alignstringAlignment: "left", "center", or "right".

Projects Block

A responsive showcase for projects, applications, and tools.

{
  "type": "projects",
  "enabled": true,
  "title": "Projects",
  "description": "Featured applications and tools.",
  "layout": "grid",
  "columns": 2,
  "items": [
    {
      "id": "project-1",
      "title": "Example Project",
      "description": "High-performance service with status tracking.",
      "image": "",
      "tags": ["Next.js", "Mantine", "TypeScript"],
      "featured": true,
      "enabled": true,
      "stats": [
        { "label": "Status", "value": "Online", "enabled": true }
      ],
      "links": [
        { "label": "Live Demo", "url": "https://example.com", "icon": "external", "enabled": true }
      ]
    }
  ]
}
FieldTypeDescription
layoutstring"grid" for responsive cards or "list" for single-column cards.
columnsnumberGrid column count: 1, 2, or 3.
featuredbooleanDisplays a prominent "Featured" badge on the project card.

Skills Block

Categorized skill badges with proficiency tags and icons.

{
  "type": "skills",
  "enabled": true,
  "title": "Technical Skills",
  "description": "Core competencies and tools.",
  "categories": [
    {
      "name": "Frontend",
      "enabled": true,
      "skills": [
        { "name": "React", "level": "Advanced", "icon": "code", "enabled": true },
        { "name": "TypeScript", "level": "Advanced", "icon": "terminal", "enabled": true }
      ]
    }
  ]
}

Experience Block

A career and education timeline with roles, company links, dates, and technology tags.

{
  "type": "experience",
  "enabled": true,
  "title": "Work Experience",
  "description": "Previous engineering roles.",
  "items": [
    {
      "role": "Senior Software Engineer",
      "company": "Example Company",
      "period": "2023 - Present",
      "location": "Remote",
      "description": "Architected low-latency monitoring platforms.",
      "tags": ["TypeScript", "Docker"],
      "url": "https://example.com",
      "enabled": true
    }
  ]
}

Stats Block

Highlights and metric counters displayed in equalized cards.

{
  "type": "stats",
  "enabled": true,
  "items": [
    { "label": "Experience", "value": "5+", "description": "Years active", "icon": "briefcase", "enabled": true },
    { "label": "Projects", "value": "25+", "description": "Shipped applications", "icon": "code", "enabled": true }
  ]
}

Section Block

Clean headers with titles, subtitles, and badges to organize page sections.

{
  "type": "section",
  "enabled": true,
  "title": "Section Title",
  "description": "Optional lead paragraph.",
  "badge": "Category",
  "align": "left"
}

Separator Block

Visual horizontal divider line.

{
  "type": "separator",
  "enabled": true,
  "variant": "solid",
  "label": ""
}
FieldTypeDescription
variantstringLine style: "solid", "dashed", or "dotted".
labelstringOptional text rendered at the center of the divider.

Testimonials Block

Client quotes, endorsements, and recommendations.

{
  "type": "testimonials",
  "enabled": true,
  "title": "Client Endorsements",
  "description": "What partners say.",
  "items": [
    {
      "quote": "Consistently delivers clean, performant software.",
      "author": "Example Client",
      "role": "Product Director",
      "company": "Example Inc",
      "avatar": "",
      "enabled": true
    }
  ]
}

Contact Block

High-impact call-to-action card with a direct mail action button.

{
  "type": "contact",
  "enabled": true,
  "title": "Let's build something together",
  "description": "Feel free to reach out for project inquiries.",
  "email": "example@example.com",
  "buttonText": "Send an email",
  "badge": "Connect"
}

Socials Block

Pill buttons linking to social platforms with official brand icons.

{
  "type": "socials",
  "enabled": true,
  "align": "center",
  "items": [
    { "platform": "discord", "label": "Discord", "url": "https://example.com/discord", "enabled": true },
    { "platform": "github", "label": "GitHub", "url": "https://example.com/github", "enabled": true },
    { "platform": "x", "label": "X", "url": "https://example.com/x", "enabled": true }
  ]
}

Supported Brand Platforms

  • Font Awesome: discord, github, x, twitter, linkedin, youtube, twitch, bluesky, reddit, steam, spotify, instagram, tiktok.
  • General Lucide: globe, mail, share, user.

Image and Text Blocks

  • image: Displays an image banner or screenshot with optional caption, height, and border radius.
  • text: Custom text paragraph with customizable size ("sm", "md", "lg") and alignment ("left", "center", "right").

On this page