-
-
Notifications
You must be signed in to change notification settings - Fork 0
feat: add @nuxtjs/seo and configure it with submodules
#7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
16 commits
Select commit
Hold shift + click to select a range
98fe345
feat: add dependency `@nuxtjs/seo`
toddeTV 134799b
feat: add content collection definition for socials
toddeTV 859c996
feat: add socials content
toddeTV c14f0fb
chore: update CodeRabbitAI configuration to reflect new socials content
toddeTV 2d78b34
feat: add seo to all sub-pages
toddeTV 0d3bf7f
feat: configure SEO in Nuxt config
toddeTV 44fc80a
feat: add dynamic schema org person definition in `app.vue`
toddeTV c4adc88
docs: update comments
toddeTV c1fc34a
fix: apply linting & formatting rules
toddeTV c0bdb05
feat: add robots configuration and other base SEO configs
toddeTV d6fbf29
feat: add keywords to head
toddeTV 4288123
feat: add full seo example for a content page
toddeTV 829f6da
feat: add og image for home page
toddeTV f620305
style: change styling for og image template
toddeTV e479587
docs: update documentation for seo props
toddeTV 49d1d83
docs: update comment for better understanding
toddeTV File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,140 @@ | ||
| <script setup lang="ts"> | ||
| /** | ||
| * Default OG image component for the homepage. | ||
| * Rendered by Satori (not a browser) - must use inline styles, <img>, and hardcoded colors. | ||
| */ | ||
| withDefaults(defineProps<{ | ||
| /** Page title override. */ | ||
| title?: string | ||
| /** Page description override. */ | ||
| description?: string | ||
| }>(), { | ||
| title: 'todde.tv', | ||
| description: 'IT consultant, senior full-stack developer, and conference speaker.', | ||
| }) | ||
| </script> | ||
|
|
||
| <template> | ||
| <div | ||
| :style="{ | ||
| width: '1200px', | ||
| height: '630px', | ||
| display: 'flex', | ||
| flexDirection: 'column', | ||
| justifyContent: 'center', | ||
| backgroundColor: '#0a0a0b', | ||
| fontFamily: 'Inter, system-ui, sans-serif', | ||
| padding: '60px', | ||
| position: 'relative', | ||
| overflow: 'hidden', | ||
| }" | ||
| > | ||
| <!-- Radial accent glow (top-right, behind avatar) --> | ||
| <div | ||
| :style="{ | ||
| position: 'absolute', | ||
| top: '-80px', | ||
| right: '100px', | ||
| width: '700px', | ||
| height: '700px', | ||
| borderRadius: '50%', | ||
| background: 'radial-gradient(circle, rgba(0,220,130,0.25) 0%, transparent 65%)', | ||
| }" | ||
| /> | ||
|
|
||
| <!-- Secondary glow (bottom-left) --> | ||
| <div | ||
| :style="{ | ||
| position: 'absolute', | ||
| bottom: '-200px', | ||
| left: '-100px', | ||
| width: '500px', | ||
| height: '500px', | ||
| borderRadius: '50%', | ||
| background: 'radial-gradient(circle, rgba(0,220,130,0.18) 0%, transparent 65%)', | ||
| }" | ||
| /> | ||
|
|
||
| <!-- Subtle horizontal rule --> | ||
| <div | ||
| :style="{ | ||
| position: 'absolute', | ||
| top: '315px', | ||
| left: '60px', | ||
| width: '600px', | ||
| height: '1px', | ||
| background: 'linear-gradient(90deg, rgba(0,220,130,0.15), transparent)', | ||
| }" | ||
| /> | ||
|
|
||
| <!-- Title and description (vertically centered) --> | ||
| <div | ||
| :style="{ | ||
| display: 'flex', | ||
| flexDirection: 'column', | ||
| flexWrap: 'nowrap', | ||
| gap: '20px', | ||
| width: '670px', | ||
| }" | ||
| > | ||
| <div | ||
| :style="{ | ||
| fontSize: '72px', | ||
| fontWeight: 700, | ||
| color: '#fafafa', | ||
| lineHeight: 1.1, | ||
| letterSpacing: '-0.02em', | ||
| }" | ||
| > | ||
| {{ title }} | ||
| </div> | ||
| <div | ||
| :style="{ | ||
| fontSize: '30px', | ||
| fontWeight: 400, | ||
| color: '#a1a1aa', | ||
| lineHeight: 1.5, | ||
| }" | ||
| > | ||
| {{ description }} | ||
| </div> | ||
| </div> | ||
|
|
||
| <!-- Avatar with accent gradient border (large, centered-right) --> | ||
| <div | ||
| :style="{ | ||
| position: 'absolute', | ||
| top: '115px', | ||
| right: '80px', | ||
| width: '350px', | ||
| height: '350px', | ||
| borderRadius: '50%', | ||
| background: 'linear-gradient(135deg, #00dc82, #00c474)', | ||
| padding: '5px', | ||
| }" | ||
| > | ||
| <img | ||
| alt="Thorsten Seyschab" | ||
| src="/avatar.jpg" | ||
| :style="{ | ||
| width: '340px', | ||
| height: '340px', | ||
| borderRadius: '50%', | ||
| objectFit: 'cover', | ||
| }" | ||
| > | ||
| </div> | ||
|
|
||
| <!-- Footer (absolute to stay at bottom despite centered content) --> | ||
| <div | ||
| :style="{ | ||
| position: 'absolute', | ||
| bottom: '60px', | ||
| left: '60px', | ||
| right: '60px', | ||
| }" | ||
| > | ||
| <OgImageFooter /> | ||
| </div> | ||
| </div> | ||
| </template> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,50 @@ | ||
| <script setup lang="ts"> | ||
| /** | ||
| * Shared footer for all OG image components. | ||
| * Renders author name (left), site URL (right), and a bottom gradient accent line. | ||
| * Satori constraints: inline styles only, no Tailwind, hardcoded colors. | ||
| */ | ||
| </script> | ||
|
|
||
| <template> | ||
| <!-- Author name and site URL --> | ||
| <div | ||
| :style="{ | ||
| display: 'flex', | ||
| flexWrap: 'nowrap', | ||
| justifyContent: 'space-between', | ||
| alignItems: 'flex-end', | ||
| }" | ||
| > | ||
| <div | ||
| :style="{ | ||
| fontSize: '24px', | ||
| fontWeight: 600, | ||
| color: '#00dc82', | ||
| }" | ||
| > | ||
| Thorsten Seyschab | ||
| </div> | ||
| <div | ||
| :style="{ | ||
| fontSize: '22px', | ||
| fontWeight: 400, | ||
| color: '#71717a', | ||
| }" | ||
| > | ||
| todde.tv | ||
| </div> | ||
| </div> | ||
|
|
||
| <!-- Bottom gradient accent line --> | ||
| <div | ||
| :style="{ | ||
| position: 'absolute', | ||
| bottom: '0', | ||
| left: '0', | ||
| right: '0', | ||
| height: '4px', | ||
| background: 'linear-gradient(90deg, #00dc82, #00c474, transparent)', | ||
| }" | ||
| /> | ||
| </template> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,30 @@ | ||
| --- | ||
| title: todde.tv - Thorsten Seyschab # REQUIRED - sets <title>, og:title, twitter:title | ||
| description: Personal portfolio of Thorsten Seyschab - IT consultant, senior full-stack developer, and conference speaker. # REQUIRED - sets <meta description>, og:description, twitter:description | ||
| head: | ||
| meta: | ||
| - name: author # OPTIONAL - already set globally in nuxt.config.ts app.head.meta | ||
| content: Thorsten Seyschab | ||
| seo: | ||
| ogTitle: todde.tv - Thorsten Seyschab # REDUNDANT - auto-derived from title | ||
| ogDescription: Personal portfolio of Thorsten Seyschab - IT consultant, senior full-stack developer, and conference speaker. # REDUNDANT - auto-derived from description | ||
| ogType: website # REDUNDANT - defaults to "website" | ||
| ogUrl: https://todde.tv # REDUNDANT - auto-set from route + site.url | ||
| ogImage: https://todde.tv/__og-image__/image/og.png # REDUNDANT - auto-generated by nuxt-og-image / Satori; never hardcode this URL | ||
| twitterCard: summary_large_image # REDUNDANT - auto-set when OG image exists | ||
| twitterTitle: todde.tv - Thorsten Seyschab # REDUNDANT - auto-derived from title | ||
| twitterDescription: Personal portfolio of Thorsten Seyschab - IT consultant, senior full-stack developer, and conference speaker. # REDUNDANT - auto-derived from description | ||
| ogImage: | ||
| component: OgImageHome # REDUNDANT - already the default in nuxt.config.ts ogImage.defaults | ||
| props: | ||
| title: Thorsten Seyschab # OPTIONAL - in OgImageHome withDefaults() there is a default | ||
| description: IT consultant, senior full-stack developer, and conference speaker. # OPTIONAL - in OgImageHome withDefaults() there is a default | ||
| sitemap: | ||
| lastmod: 2026-03-04 # USEFUL - Google uses this for crawl scheduling | ||
| changefreq: monthly # IGNORED - Google ignores changefreq since ~2023 | ||
| priority: 1.0 # IGNORED - Google ignores priority; only relative within your own sitemap | ||
| --- | ||
|
|
||
| # todde.tv | ||
|
|
||
| Welcome. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| name: Bluesky | ||
| url: https://bsky.app/profile/todde.tv | ||
| icon: simple-icons:bluesky | ||
| sortOrder: 3 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| name: GitHub | ||
| url: https://github.com/toddeTV/ | ||
| icon: simple-icons:github | ||
| sortOrder: 1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| name: LinkedIn | ||
| url: https://www.linkedin.com/in/toddetv/ | ||
| icon: simple-icons:linkedin | ||
| sortOrder: 4 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| name: X (Twitter) | ||
| url: https://x.com/toddeTV | ||
| icon: simple-icons:x | ||
| sortOrder: 2 |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.