F

SEO

Structured Data & JSON-LD Guide

The live schema system behind fazlerabbie.me, explained route by route with the actual builder output.

Today's priority

Build the entity graph before anything decorative

The homepage now acts as the root node for the whole site. Everything else points back to the same canonical ids instead of introducing disconnected people, websites, or page entities on every route.

PersonWebSiteProfilePageFAQPageBlogPosting + TechArticle

Canonical ids

Person
https://fazlerabbie.me/#person
WebSite
https://fazlerabbie.me/#website
ProfilePage
https://fazlerabbie.me/#profilepage

Entity Graph

These ids are the backbone of the rollout. Every secondary route points back to them instead of re-describing the same site identity from scratch.

Foundation first

Root site

Used for site-name signaling and shared page membership.

https://fazlerabbie.me/#website

Primary profile

Anchors the homepage as the canonical profile/about page.

https://fazlerabbie.me/#profilepage

Canonical person

Referenced by articles, services, collections, and profile pages.

https://fazlerabbie.me/#person

Live Schema Output

Each tab below renders the current builder output for a real route shape. The code blocks are generated from the same helpers used by the production pages, with representative samples for the heavier collection routes.

Live examples

Homepage

Foundation graph: Person, WebSite, ProfilePage, FAQPage, and breadcrumb all connected through stable homepage ids.

/
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Person",
      "@id": "https://fazlerabbie.me/#person",
      "name": "Fazle Rabbie",
      "url": "https://fazlerabbie.me",
      "image": "https://fazlerabbie.me/fazlerabbie.JPG",
      "jobTitle": "App & Web Developer",
      "description": "Bangladesh-based developer building modern web interfaces, mobile products, and practical business software.",
      "email": "hi@fazlerabbie.me",
      "address": {
        "@type": "PostalAddress",
        "addressLocality": "Bogura",
        "addressCountry": "Bangladesh"
      },
      "sameAs": [
        "https://fazlerabbie.me",
        "https://github.com/fazlerabbie",
        "https://www.linkedin.com/in/fazlerabbie",
        "https://play.google.com/store/apps/developer?id=Fazle+Rabbie",
        "https://x.com/ifazlerabbie",
        "https://www.facebook.com/fazlerabbie.me",
        "https://www.youtube.com/@fazlerabbie",
        "https://wa.me/8801992342436"
      ],
      "knowsAbout": [
        "Next.js",
        "React",
        "TypeScript",
        "React Native",
        "Kotlin",
        "Supabase",
        "Tailwind CSS",
        "Google Play Publishing"
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://fazlerabbie.me/#website",
      "url": "https://fazlerabbie.me",
      "name": "Fazle Rabbie",
      "alternateName": "fazlerabbie.me",
      "description": "Bangladesh-based developer building modern web interfaces, mobile products, and practical business software.",
      "inLanguage": "en",
      "publisher": {
        "@id": "https://fazlerabbie.me/#person"
      },
      "about": {
        "@id": "https://fazlerabbie.me/#person"
      }
    },
    {
      "@type": "ProfilePage",
      "@id": "https://fazlerabbie.me/#profilepage",
      "url": "https://fazlerabbie.me/",
      "name": "About | Fazle Rabbie",
      "description": "Learn about Fazle Rabbie, a Bangladesh-based app and web developer focused on modern frontend work, mobile apps, and product delivery.",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://fazlerabbie.me/#website"
      },
      "about": {
        "@id": "https://fazlerabbie.me/#person"
      },
      "mainEntity": {
        "@id": "https://fazlerabbie.me/#person"
      }
    },
    {
      "@type": "FAQPage",
      "@id": "https://fazlerabbie.me/#faq",
      "url": "https://fazlerabbie.me/",
      "name": "FAQ | Fazle Rabbie",
      "description": "Learn about Fazle Rabbie, a Bangladesh-based app and web developer focused on modern frontend work, mobile apps, and product delivery.",
      "isPartOf": {
        "@id": "https://fazlerabbie.me/#website"
      },
      "about": {
        "@id": "https://fazlerabbie.me/#person"
      },
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Who is Fazle Rabbie?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Fazle Rabbie is a Bangladesh-based app and web developer who builds modern product interfaces, mobile apps, and practical business software for startups and growing teams."
          }
        },
        {
          "@type": "Question",
          "name": "What services and technologies does Fazle Rabbie work with?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Fazle Rabbie works across web development, mobile app delivery, Google Play publishing support, and technical consulting with tools such as Next.js, React, TypeScript, React Native, Kotlin, Supabase, and Tailwind CSS."
          }
        },
        {
          "@type": "Question",
          "name": "How can I hire or contact Fazle Rabbie?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "You can contact Fazle Rabbie through hi@fazlerabbie.me or the linked professional profiles on this site to discuss web apps, mobile products, consulting, or launch support."
          }
        }
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://fazlerabbie.me/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "About",
          "item": "https://fazlerabbie.me/"
        }
      ]
    }
  ]
}

Implementation Notes

The page structure is intentionally narrow: homepage graph first, then route builders, then validation. That keeps the system maintainable as content changes.

Validation Checklist

Ship the graph, validate the rendered output, then watch Search Console for crawl pickup and schema stability.

  1. 1Validate the homepage and one blog post in Google Rich Results Test after deployment.
  2. 2Inspect rendered HTML and confirm that routes reuse the same #person and #website ids instead of embedding fresh person objects.
  3. 3Check that datePublished and dateModified on blog posts match the MDX frontmatter values exactly.
  4. 4Re-submit the sitemap in Search Console after the structured-data rollout lands.