Setup Identity · Nuxt Schema.org · Nuxt SEO

[NuxtSEO](https://nuxtseo.com/ "Home")

- [Modules](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [Tools](https://nuxtseo.com/tools)
- [Pro](https://nuxtseo.com/pro)
- [Learn SEO](https://nuxtseo.com/learn-seo/nuxt) [Releases](https://nuxtseo.com/releases)

[1.4K](https://github.com/harlan-zw/nuxt-seo)

[Nuxt SEO on GitHub](https://github.com/harlan-zw/nuxt-seo)

[User Guides](https://nuxtseo.com/docs/schema-org/getting-started/introduction)

[API](https://nuxtseo.com/docs/schema-org/api/use-schema-org)

[Releases](https://nuxtseo.com/docs/schema-org/releases/v6)

Schema.org

- [Switch to Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Switch to Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [Switch to Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)
- [Switch to Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [Switch to OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)
- [Switch to Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [Switch to SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
- [Switch to Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Switch to Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)
- [Switch to AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)

Search…```k`` /`

v6.0.4

- Playgrounds
- [Discord Support](https://discord.com/invite/275MBUBvgP)

### Getting Started

- [Introduction](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Installation](https://nuxtseo.com/docs/schema-org/getting-started/installation)
- [Troubleshooting](https://nuxtseo.com/docs/schema-org/getting-started/troubleshooting)

### Core Concepts

- [How It Works](https://nuxtseo.com/docs/schema-org/guides/how-it-works)
- [Nuxt Content](https://nuxtseo.com/docs/schema-org/guides/content)
- [Default Schema.org](https://nuxtseo.com/docs/schema-org/guides/default-schema-org)
- [Setup Identity](https://nuxtseo.com/docs/schema-org/guides/setup-identity)
- [Nuxt I18n](https://nuxtseo.com/docs/schema-org/guides/i18n)
- [Supported Nodes](https://nuxtseo.com/docs/schema-org/guides/nodes)
- [Full Documentation](https://nuxtseo.com/docs/schema-org/guides/full-documentation)

Core Concepts

# Setup Identity

[Copy for LLMs](https://nuxtseo.com/docs/schema-org/guides/setup-identity.md)

Setting up your site identity connects your Schema.org to Google's Knowledge Graph, enabling your logo and social links to appear in search results.

Providing an identity links [Default Schema.org](https://nuxtseo.com/docs/schema-org/guides/default-schema-org) to your site author. `Organization` or `LocalBusiness` nodes can trigger [Rich Results](https://developers.google.com/search/docs/appearance/structured-data/organization).

![Schema.org Identity](https://nuxtseo.com/schema-org/identity.png) ## [Which identity type should I use?](#which-identity-type-should-i-use)

Choose based on your site type:

- [`Person`](#person)
- [`Organization`](#organization)
- [`LocalBusiness`](#localbusiness)
- [OnlineStore (and other sub-types)](#when-should-i-use-onlinestore)

Only `'Person'`, `'Organization'`, and `'LocalBusiness'` are valid string values for the `identity` config option. Sub-types like `OnlineStore` must be specified using the composable syntax with `'@type'` (see below).

### [When should I use Person?](#when-should-i-use-person)

Use `Person` when your website is about a person, personal brand, or personal blog.

Example: [harlanzw.com](https://harlanzw.com), [antfu.me](https://antfu.me/)

Minimal

Expanded

```
import { definePerson } from 'nuxt-schema-org/schema'

export default defineNuxtConfig({
  schemaOrg: {
    identity: definePerson({
      name: 'Harlan Wilton',

      // Profile Information, if applicable
      image: '/profile-photo.jpg',
      description: 'Software engineer and open-source contributor',

      url: 'harlanzw.com',
      sameAs: [
        'https://twitter.com/harlan_zw',
        'https://github.com/harlan-zw'
      ],
    })
  }
})
```

```
import { definePerson } from 'nuxt-schema-org/schema'

export default defineNuxtConfig({
  schemaOrg: {
    identity: definePerson({
      // Basic Information, if applicable
      name: 'Dr. Sarah Chen',
      givenName: 'Sarah',
      familyName: 'Chen',
      additionalName: 'J.', // middle name or other additional names
      alternateName: 'Sarah J. Chen',

      // Profile Information, if applicable
      image: '/profile-photo.jpg',
      description: 'AI researcher and technical author specializing in machine learning and neural networks',
      jobTitle: 'Principal AI Researcher',

      // Contact & Social, if applicable
      email: 'sarah.chen@example.com',
      url: 'https://sarahchen.dev',
      sameAs: [
        'https://twitter.com/sarahchen',
        'https://github.com/sarahchen',
        'https://linkedin.com/in/sarahchen',
        'https://scholar.google.com/citations?user=sarahchen'
      ],

      // Professional Details, if applicable
      worksFor: {
        '@type': 'Organization',
        'name': 'Tech Research Labs',
        'url': 'https://techresearchlabs.com'
      },
    })
  }
})
```

### [When should I use Organization?](#when-should-i-use-organization)

Use `Organization` for companies, brands, non-profits, or communities. Also use it as a fallback when other options don't fit.

Minimal

Expanded

```
import { defineOrganization } from 'nuxt-schema-org/schema'

export default defineNuxtConfig({
  schemaOrg: {
    identity: defineOrganization({
      // Basic Information
      name: 'TechCorp Solutions',
      logo: '/logo.png',
    })
  }
})
```

```
import { defineOrganization } from 'nuxt-schema-org/schema'

export default defineNuxtConfig({
  schemaOrg: {
    identity: defineOrganization({
      // Basic Information
      name: 'TechCorp Solutions',
      alternateName: 'TechCorp',
      description: 'Leading provider of enterprise software solutions and cloud services',
      url: 'https://techcorp.com',
      logo: '/logo.png',

      // Address Information, if applicable
      address: {
        '@type': 'PostalAddress',
        'streetAddress': '100 Innovation Drive, Suite 400',
        'addressLocality': 'Silicon Valley',
        'addressRegion': 'CA',
        'postalCode': '94025',
        'addressCountry': 'US'
      },

      // Contact Information, if applicable
      email: 'info@techcorp.com',
      telephone: '+1-650-555-0123',
      contactPoint: {
        '@type': 'ContactPoint',
        'telephone': '+1-650-555-0124',
        'email': 'support@techcorp.com'
      },

      // Business Details, if applicable
      foundingDate: '2010-01-15',
      numberOfEmployees: {
        '@type': 'QuantitativeValue',
        'minValue': 500,
        'maxValue': 999
      },

      // Social and External Links, if applicable
      sameAs: [
        'https://twitter.com/techcorp',
        'https://www.linkedin.com/company/techcorp',
        'https://www.facebook.com/techcorp'
      ],

      // Business Identifiers, if applicable
      legalName: 'TechCorp Solutions Inc.',
      taxID: '12-3456789',
      vatID: 'GB123456789',
      duns: '12-345-6789',
      iso6523Code: '0060:123456789',
      naics: '541512',

      // Return Policy, if applicable
      hasMerchantReturnPolicy: {
        '@type': 'MerchantReturnPolicy',
        'name': 'Standard Return Policy',
        'inStoreReturnsOffered': true,
        'returnPolicyCategory': 'https://schema.org/MerchantReturnFiniteReturnWindow',
        'returnPolicyCountry': 'US',
        'returnWindow': {
          '@type': 'BusinessDaysSpecification',
          'numberOfDays': 30
        }
      }
    })
  }
})
```

### [When should I use LocalBusiness?](#when-should-i-use-localbusiness)

Use `LocalBusiness` for local businesses, stores, restaurants, or services with a physical address.

Some examples of `LocalBusiness`{lang="ts}: : `Restaurant`, `HealthAndBeautyBusiness`, `ProfessionalService`, `FinancialService`, `MedicalBusiness`, etc...

Google recommends using the most specific type of `LocalBusiness` that fits your business, check the list of [subtypes](https://schema.org/LocalBusiness#subtypes) to find the most appropriate.

If you need to use dynamic data, you can use the `defineLocalBusiness` function to define the identity within your app.vue.

Minimal

Expanded

Dynamic

```
import { defineLocalBusiness } from 'nuxt-schema-org/schema'

export default defineNuxtConfig({
  schemaOrg: {
    identity: defineLocalBusiness({
      '@type': '...', // Choose from https://schema.org/LocalBusiness#subtypes

      // Basic Information (Required)
      'name': 'The Coastal Kitchen',
      'description': 'Farm-to-table restaurant specializing in sustainable seafood and seasonal ingredients',
      'url': 'https://thecoastalkitchen.com',

      // Location (Required)
      'address': {
        streetAddress: '742 Oceanview Boulevard, Suite 100',
        addressLocality: 'Santa Cruz',
        addressRegion: 'CA',
        postalCode: '95060',
        addressCountry: 'US'
      },
    }),
  }
})
```

```
import { defineLocalBusiness } from 'nuxt-schema-org/schema'

export default defineNuxtConfig({
  schemaOrg: {
    identity: defineLocalBusiness({
      '@type': '...', // Choose from https://schema.org/LocalBusiness#subtypes

      // Basic Information (Required)
      'name': 'The Coastal Kitchen',
      'description': 'Farm-to-table restaurant specializing in sustainable seafood and seasonal ingredients',
      'url': 'https://thecoastalkitchen.com',

      // Location (Required)
      'address': {
        streetAddress: '742 Oceanview Boulevard, Suite 100',
        addressLocality: 'Santa Cruz',
        addressRegion: 'CA',
        postalCode: '95060',
        addressCountry: 'US'
      },

      // Precise Geographic Location, if applicable
      'geo': {
        '@type': 'GeoCoordinates',
        'latitude': '36.9741',
        'longitude': '-122.0308'
      },

      // Contact Information, if applicable
      'telephone': '+1-831-555-0123',
      'email': 'hello@thecoastalkitchen.com',

      // Hours of Operation, if applicable
      'openingHoursSpecification': [
        {
          dayOfWeek: ['Monday', 'Tuesday', 'Wednesday', 'Thursday'],
          opens: '11:30:00',
          closes: '22:00:00'
        },
        {
          dayOfWeek: ['Friday', 'Saturday'],
          opens: '11:30:00',
          closes: '23:00:00'
        },
        {
          dayOfWeek: 'Sunday',
          opens: '10:00:00', // Sunday Brunch
          closes: '21:00:00'
        }
      ],

      // Business Details, if applicable
      'priceRange': '$$$', // $, $$, $$$, or $$$$
      'servesCuisine': [
        'Seafood',
        'California',
        'Farm-to-table'
      ],

      // Menu (for restaurants)
      'menu': 'https://thecoastalkitchen.com/menu',

      // Images, if applicable
      'image': [
        'https://thecoastalkitchen.com/images/storefront.jpg',
        'https://thecoastalkitchen.com/images/interior.jpg',
        'https://thecoastalkitchen.com/images/food.jpg'
      ],
      'logo': '/logo.png',

      // Payment Options, if applicable
      'paymentAccepted': [
        'Cash',
        'Credit Card',
        'Cryptocurrency'
      ],
      'currenciesAccepted': 'USD',

      // Additional Business Details, if applicable
      'isAccessibleForDisabled': true,
      'amenityFeature': [
        {
          '@type': 'LocationFeatureSpecification',
          'name': 'Parking',
          'value': true
        },
        {
          '@type': 'LocationFeatureSpecification',
          'name': 'Wheelchair Accessible',
          'value': true
        },
        {
          '@type': 'LocationFeatureSpecification',
          'name': 'Outdoor Seating',
          'value': true
        }
      ],

      // Social Links, if applicable
      'sameAs': [
        'https://www.facebook.com/coastalkitchen',
        'https://instagram.com/thecoastalkitchen',
        'https://twitter.com/coastalkitchen'
      ]
    }),
  }
})
```

```
<script lang="ts" setup>
// app.vue
import { defineLocalBusiness, useSchemaOrg } from '#imports'

const reviews = useFetch('/api/reviews')

useSchemaOrg([
  defineLocalBusiness({
    // ...
    reviews: reviews.data.value
  })
])
</script>
```

### [When should I use OnlineStore?](#when-should-i-use-onlinestore)

Use `OnlineStore` for ecommerce sites selling products online. `OnlineStore` is not a valid string value for the `identity` config option; you must use the `defineOrganization` composable and set `'@type': ['Organization', 'Store', 'OnlineStore']` explicitly.

Minimal

Expanded

```
import { defineOrganization } from 'nuxt-schema-org/schema'

export default defineNuxtConfig({
  schemaOrg: {
    identity: defineOrganization({
      '@type': ['Organization', 'Store', 'OnlineStore'],

      // Basic Information
      'name': 'ModernHome',
      'logo': '/logo.png',
    }),
  }
})
```

```
import { defineOrganization } from 'nuxt-schema-org/schema'

export default defineNuxtConfig({
  schemaOrg: {
    identity: defineOrganization({
      '@type': ['Organization', 'Store', 'OnlineStore'],

      // Basic Information
      'name': 'ModernHome',
      'alternateName': 'Modern Home Decor',
      'description': 'Contemporary furniture and home decor with worldwide shipping. Specializing in minimalist Scandinavian design.',
      'url': 'https://modernhome.com',
      'logo': '/logo.png',

      // Contact Information, if applicable
      'email': 'support@modernhome.com',
      'telephone': '+1-888-555-0123',
      'contactPoint': [
        {
          '@type': 'ContactPoint',
          'contactType': 'customer service',
          'telephone': '+1-888-555-0123',
          'email': 'support@modernhome.com',
          'availableLanguage': ['English', 'Spanish'],
          'hoursAvailable': {
            '@type': 'OpeningHoursSpecification',
            'dayOfWeek': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],
            'opens': '09:00:00',
            'closes': '18:00:00'
          }
        },
        {
          '@type': 'ContactPoint',
          'contactType': 'sales',
          'telephone': '+1-888-555-0124',
          'email': 'sales@modernhome.com'
        }
      ],

      // Business Details, if applicable
      'foundingDate': '2015-01-01',
      'numberOfEmployees': {
        '@type': 'QuantitativeValue',
        'value': 85
      },

      // Legal Information, if applicable
      'legalName': 'ModernHome Inc.',
      'taxID': '47-1234567',
      'vatID': 'EU123456789',

      // Business Address (headquarters/returns), if applicable
      'address': {
        '@type': 'PostalAddress',
        'streetAddress': '100 Commerce Way, Suite 300',
        'addressLocality': 'Portland',
        'addressRegion': 'OR',
        'postalCode': '97201',
        'addressCountry': 'US'
      },

      // Return Policy, if applicable
      'hasMerchantReturnPolicy': {
        '@type': 'MerchantReturnPolicy',
        'name': 'Standard Return Policy',
        'inStoreReturnsOffered': false,
        'merchantReturnDays': '30',
        'returnPolicyCategory': 'https://schema.org/MerchantReturnFiniteReturnWindow',
        'returnMethod': ['ReturnByMail'],
        'returnFees': 'https://schema.org/FreeReturn',
        'returnPolicyCountry': {
          '@type': 'Country',
          'name': ['US', 'CA', 'GB', 'AU', 'NZ']
        }
      },

      // Shipping Policy, if applicable
      'shippingDetails': {
        '@type': 'OfferShippingDetails',
        'shippingRate': {
          '@type': 'MonetaryAmount',
          'value': '0',
          'currency': 'USD'
        },
        'shippingDestination': {
          '@type': 'DefinedRegion',
          'addressCountry': ['US', 'CA', 'GB', 'AU', 'NZ']
        },
        'deliveryTime': {
          '@type': 'ShippingDeliveryTime',
          'handlingTime': {
            '@type': 'QuantitativeValue',
            'minValue': 1,
            'maxValue': 2,
            'unitCode': 'DAY'
          },
          'transitTime': {
            '@type': 'QuantitativeValue',
            'minValue': 3,
            'maxValue': 7,
            'unitCode': 'DAY'
          }
        }
      },

      // Payment Methods, if applicable
      'paymentAccepted': [
        'Credit Card',
        'PayPal',
        'Apple Pay',
        'Google Pay',
        'Shop Pay'
      ],
      'currenciesAccepted': ['USD', 'EUR', 'GBP', 'CAD', 'AUD'],

      // Social Media & External Links, if applicable
      'sameAs': [
        'https://facebook.com/modernhome',
        'https://instagram.com/modernhome',
        'https://pinterest.com/modernhome',
        'https://twitter.com/modernhome'
      ],

      // Trust Indicators, if applicable
      'hasCredential': [
        {
          '@type': 'EducationalOccupationalCredential',
          'credentialCategory': 'BBB Rating A+',
          'url': 'https://www.bbb.org/modernhome'
        },
        {
          '@type': 'EducationalOccupationalCredential',
          'credentialCategory': 'Certified B Corporation',
          'url': 'https://www.bcorporation.net/modernhome'
        }
      ],

      // Aggregate Ratings, if applicable
      'aggregateRating': {
        '@type': 'AggregateRating',
        'ratingValue': '4.8',
        'reviewCount': '12459',
        'bestRating': '5',
        'worstRating': '1'
      },

      // Customer Service Features, if applicable
      'hasOfferCatalog': {
        '@type': 'OfferCatalog',
        'name': 'ModernHome Product Catalog',
        'url': 'https://modernhome.com/products'
      },

      // Additional Business Properties, if applicable
      'slogan': 'Design for Modern Living',
      'keywords': [
        'modern furniture',
        'scandinavian design',
        'home decor',
        'minimalist furniture',
        'contemporary home'
      ],

      // Business Hours (Customer Service), if applicable
      'openingHoursSpecification': [
        {
          '@type': 'OpeningHoursSpecification',
          'dayOfWeek': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],
          'opens': '09:00:00',
          'closes': '18:00:00'
        }
      ]
    }),
  }
})
```

[](https://nuxtseo.com/tools/schema-validator)**Verify your identity** - Check your Organization or Person schema is correct with our [Schema.org Validator](https://nuxtseo.com/tools/schema-validator).

## [Recipes](#recipes)

It's recommended to provide as much information about your identity as possible, here are some recipes.

### [Social Media Profiles](#social-media-profiles)

Organization

Person

LocalBusiness

```
// example for nuxt.com
export default defineNuxtConfig({
  schemaOrg: {
    identity: {
      type: 'Organization',
      name: 'NuxtJS',
      logo: '/logo.png', // will resolve to canonical URL + /logo.png
      sameAs: [
        'https://x.com/nuxt_js',
        'https://www.linkedin.com/showcase/nuxt-framework/',
        'https://github.com/nuxt'
      ]
    }
  }
})
```

```
// example for harlanzw.com
export default defineNuxtConfig({
  schemaOrg: {
    identity: {
      type: 'Person',
      name: 'Harlan Wilton',
      image: '/profile.jpg',
      sameAs: [
        'https://x.com/harlan_zw',
        'https://github.com/harlan-zw',
        'https://harlanzw.com'
      ]
    }
  }
})
```

```
// local coffee shop
export default defineNuxtConfig({
  schemaOrg: {
    identity: {
      type: 'LocalBusiness',
      name: 'Coffee Shop',
      logo: '/logo.png', // will resolve to canonical URL + /logo.png
      sameAs: [
        'https://x.com/coffee_shop',
        'https://www.facebook.com/coffee_shop',
        'https://www.yelp.com/coffee_shop'
      ]
    }
  }
})
```

[Edit this page](https://github.com/harlan-zw/nuxt-schema-org/edit/main/docs/content/2.guides/1.setup-identity.md)

[Markdown For LLMs](https://nuxtseo.com/docs/schema-org/guides/setup-identity.md)

Did this page help you?

[Default Schema.org The default Schema.org setup for Nuxt Schema.org.](https://nuxtseo.com/docs/schema-org/guides/default-schema-org) [Nuxt I18n How to use the Nuxt Schema.org module with Nuxt I18n.](https://nuxtseo.com/docs/schema-org/guides/i18n)

On this page

- [Which identity type should I use?](#which-identity-type-should-i-use)
- [Recipes](#recipes)

[GitHub](https://github.com/harlan-zw/nuxt-seo) [ Discord](https://discord.com/invite/275MBUBvgP)

### [NuxtSEO](https://nuxtseo.com/ "Home")

- [Getting Started](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [MCP](https://nuxtseo.com/docs/nuxt-seo/guides/mcp)

Modules

- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)

### [NuxtSEO Pro](https://nuxtseo.com/pro "Home")

- [Getting Started](https://nuxtseo.com/pro)
- [Dashboard](https://nuxtseo.com/pro/dashboard)
- [Pro MCP](https://nuxtseo.com/docs/nuxt-seo-pro/mcp/installation)

### [Learn SEO](https://nuxtseo.com/learn-seo "Learn SEO")

Nuxt

- [Mastering Meta](https://nuxtseo.com/learn-seo/nuxt/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/nuxt/controlling-crawlers)
- [Launch & Listen](https://nuxtseo.com/learn-seo/nuxt/launch-and-listen)
- [Routes & Rendering](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering)
- [Staying Secure](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering/security)

Vue

- [Vue SEO Guide](https://nuxtseo.com/learn-seo/vue)
- [Mastering Meta](https://nuxtseo.com/learn-seo/vue/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/vue/controlling-crawlers)
- [SPA SEO](https://nuxtseo.com/learn-seo/vue/spa)
- [SSR Frameworks](https://nuxtseo.com/learn-seo/vue/ssr-frameworks)
- [SEO Checklist](https://nuxtseo.com/learn-seo/checklist)
- [Pre-Launch Warmup](https://nuxtseo.com/learn-seo/pre-launch-warmup)
- [Backlinks & Authority](https://nuxtseo.com/learn-seo/backlinks)

### [Tools](https://nuxtseo.com/tools "SEO Tools")

- [Social Share Debugger](https://nuxtseo.com/tools/social-share-debugger)
- [Robots.txt Generator](https://nuxtseo.com/tools/robots-txt-generator)
- [Meta Tag Checker](https://nuxtseo.com/tools/meta-tag-checker)
- [HTML to Markdown](https://nuxtseo.com/tools/html-to-markdown)
- [XML Sitemap Validator](https://nuxtseo.com/tools/xml-sitemap-validator)
- [Schema.org Validator](https://nuxtseo.com/tools/schema-validator)
- [Keyword Idea Generator](https://nuxtseo.com/tools/keyword-generator)
- [Keyword Research](https://nuxtseo.com/tools/keyword-research)
- [SERP Analyzer](https://nuxtseo.com/tools/serp-analyzer)
- [Domain Rankings](https://nuxtseo.com/tools/domain-rankings)

Copyright © 2023-2026 Harlan Wilton - [MIT License](https://github.com/harlan-zw/nuxt-seo/blob/main/license) · [mdream](https://mdream.dev)