Added SEO Basics #3

Merged
webfussel merged 2 commits from seo-basics into main 2025-05-12 09:16:45 +02:00
9 changed files with 337 additions and 9 deletions

View file

@ -1,6 +1,7 @@
:root { :root {
--padding-default: 1rem; --padding-default: 1rem;
--padding-small: 0.5rem; --padding-small: 0.5rem;
--padding-large: 2rem;
--radius-default: 3px; --radius-default: 3px;
--transition-default: 150ms; --transition-default: 150ms;
@ -206,7 +207,3 @@ dialog {
background: rgba(0, 0, 0, 0.5); background: rgba(0, 0, 0, 0.5);
} }
} }
.Legal {
padding: var(--padding-default);
}

View file

@ -53,6 +53,10 @@
height: 100%; height: 100%;
} }
.content-text {
padding: var(--padding-large) var(--padding-default) var(--padding-default);
}
.info-text { .info-text {
padding: 0 var(--padding-default); padding: 0 var(--padding-default);
text-align: center; text-align: center;
@ -61,3 +65,7 @@
transform: translateY(-50%); transform: translateY(-50%);
position: absolute; position: absolute;
} }
.Legal {
padding: var(--padding-large) var(--padding-default);
}

View file

@ -1,6 +1,8 @@
<template> <template>
<div class="Header"> <div class="Header">
<img class="logo" src="/img/propapier.svg" alt="ProPapier logo" /> <NuxtLink class="header-text" to="/">
<img class="logo" src="/img/propapier.svg" alt="ProPapier logo" />
</NuxtLink>
<div> <div>
<header class="roboto-condensed"> <header class="roboto-condensed">
<NuxtLink class="header-text" to="/"> <NuxtLink class="header-text" to="/">

View file

@ -1,6 +1,7 @@
<template> <template>
<div> <div>
<section class="Legal flex-col gap-default content full"> <section class="Legal flex-col gap-default content full">
<h1>Impressum</h1>
<div> <div>
<p> <p>
Fiona Lena Urban<br/> Fiona Lena Urban<br/>

View file

@ -18,6 +18,9 @@
</div> </div>
</Teleport> </Teleport>
<section class="content flex-col"> <section class="content flex-col">
<div class="content-text">
<h1>Mit ProPapier Preise vergleichen und sparen</h1>
</div>
<aside class="filter-bar"> <aside class="filter-bar">
<button v-for="(button, index) in filterButtons" @click="() => sort(index)" :class="{ 'active': button.active }"> <button v-for="(button, index) in filterButtons" @click="() => sort(index)" :class="{ 'active': button.active }">
{{ button.label }} {{ button.label }}

View file

@ -1,8 +1,8 @@
<template> <template>
<section class="Legal flex-col gap-default content full"> <section class="Legal flex-col gap-default content full">
<h3> <h1>
Datenschutzerklärung Datenschutzerklärung
</h3> </h1>
<p> <p>
Wir senden keinerlei Daten an Drittanbieter. Wir senden keinerlei Daten an Drittanbieter.
</p> </p>

View file

@ -36,7 +36,7 @@ export default defineNuxtConfig({
'/privacy': { prerender: true }, '/privacy': { prerender: true },
}, },
modules: ['@nuxt/icon', '@vueuse/nuxt', '@nuxtjs/device', '@nuxt/fonts'], modules: ['@nuxt/icon', '@vueuse/nuxt', '@nuxtjs/device', '@nuxt/fonts', 'nuxt-seo-utils'],
css : [ css : [
'./app/assets/styles/general.css', './app/assets/styles/general.css',
@ -49,5 +49,37 @@ export default defineNuxtConfig({
'./app/assets/styles/form/search.css', './app/assets/styles/form/search.css',
'./app/assets/styles/toolbar.css', './app/assets/styles/toolbar.css',
'./app/assets/styles/page.css', './app/assets/styles/page.css',
] ],
site: {
url: 'https://pro-papier.de',
name: 'ProPapier',
},
seo: {
meta: {
title: 'ProPapier',
description: '"Bezahlt du zuviel fürs Papier? Vergleiche schnell und unkompliziert die Preise für Toiletten-, Küchen- und andere Papier hier."',
themeColor: [
{ content: '#18181b', media: '(prefers-color-scheme: dark)' },
{ content: 'white', media: '(prefers-color-scheme: light)' },
],
twitterCreator: '@webfussel',
twitterSite: '@propapier',
author: 'webfussel',
colorScheme: 'dark light',
applicationName: 'ProPapier',
// Nuxt SEO Utils already sets the below tags for you
ogSiteName: 'Propapier',
ogLocale: 'de_DE',
ogType: 'website',
ogUrl: 'https://pro-papier.de',
ogTitle: 'ProPapier',
// Other Nuxt SEO modules handles these
ogImage: 'https://example.com/my-og-image.png',
robots: 'index, follow',
}
},
}) })

284
package-lock.json generated
View file

@ -14,6 +14,7 @@
"@nuxtjs/device": "^3.2.4", "@nuxtjs/device": "^3.2.4",
"@vueuse/nuxt": "^13.1.0", "@vueuse/nuxt": "^13.1.0",
"nuxt": "^3.16.2", "nuxt": "^3.16.2",
"nuxt-seo-utils": "^7.0.11",
"vue": "latest", "vue": "latest",
"vue-router": "latest" "vue-router": "latest"
} }
@ -4173,6 +4174,24 @@
"url": "https://opencollective.com/typescript-eslint" "url": "https://opencollective.com/typescript-eslint"
} }
}, },
"node_modules/@unhead/addons": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/@unhead/addons/-/addons-2.0.8.tgz",
"integrity": "sha512-FnFBo10ot3flopxgZYUjnJ+r4voZ7/wiPaOod5evShy/3NtC4aIZdma4JLcpt+HtBs9l4zH4SVneYWFrTRXVtg==",
"license": "MIT",
"dependencies": {
"@rollup/pluginutils": "^5.1.4",
"estree-walker": "^3.0.3",
"magic-string": "^0.30.17",
"mlly": "^1.7.4",
"ufo": "^1.6.1",
"unplugin": "^2.3.2",
"unplugin-ast": "^0.14.6"
},
"funding": {
"url": "https://github.com/sponsors/harlan-zw"
}
},
"node_modules/@unhead/vue": { "node_modules/@unhead/vue": {
"version": "2.0.8", "version": "2.0.8",
"resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-2.0.8.tgz", "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-2.0.8.tgz",
@ -7623,6 +7642,18 @@
"integrity": "sha512-K6acvFaelNxx8wc2VjbIzXKDVB0Khs0QT35U6NkGfTdCmjLNcO2945m7RFNR9/RPVFm48hq7QPzK8uGH18HCGw==", "integrity": "sha512-K6acvFaelNxx8wc2VjbIzXKDVB0Khs0QT35U6NkGfTdCmjLNcO2945m7RFNR9/RPVFm48hq7QPzK8uGH18HCGw==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/image-size": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz",
"integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==",
"license": "MIT",
"bin": {
"image-size": "bin/image-size.js"
},
"engines": {
"node": ">=16.x"
}
},
"node_modules/impound": { "node_modules/impound": {
"version": "0.2.2", "version": "0.2.2",
"resolved": "https://registry.npmjs.org/impound/-/impound-0.2.2.tgz", "resolved": "https://registry.npmjs.org/impound/-/impound-0.2.2.tgz",
@ -9130,6 +9161,211 @@
} }
} }
}, },
"node_modules/nuxt-seo-utils": {
"version": "7.0.11",
"resolved": "https://registry.npmjs.org/nuxt-seo-utils/-/nuxt-seo-utils-7.0.11.tgz",
"integrity": "sha512-uqk9vcsbwRCoaV/fnBr9x26rQ2kA6xI08VIWLluqRvgBsexExu0ADTP1kQ/mNGePCf9GNQKQo/8fksg9dKGAAA==",
"license": "MIT",
"dependencies": {
"@nuxt/kit": "^3.17.1",
"@unhead/addons": "^2.0.8",
"defu": "^6.1.4",
"escape-string-regexp": "^5.0.0",
"fast-glob": "^3.3.3",
"image-size": "^2.0.2",
"nuxt-site-config": "^3.1.9",
"pathe": "^2.0.3",
"pkg-types": "^2.1.0",
"scule": "^1.3.0",
"semver": "^7.7.1",
"ufo": "^1.6.1"
},
"funding": {
"url": "https://github.com/sponsors/harlan-zw"
}
},
"node_modules/nuxt-seo-utils/node_modules/@nuxt/kit": {
"version": "3.17.2",
"resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.17.2.tgz",
"integrity": "sha512-Mz2Ni8iUwty5LBs3LepUL43rI2xXbuAz3Cqq37L9frOD2QI2tQUtasYaSoKk6U7nvYzuW2z/2b3YOLkMNi/k2w==",
"license": "MIT",
"dependencies": {
"c12": "^3.0.3",
"consola": "^3.4.2",
"defu": "^6.1.4",
"destr": "^2.0.5",
"errx": "^0.1.0",
"exsolve": "^1.0.5",
"ignore": "^7.0.4",
"jiti": "^2.4.2",
"klona": "^2.0.6",
"knitwork": "^1.2.0",
"mlly": "^1.7.4",
"ohash": "^2.0.11",
"pathe": "^2.0.3",
"pkg-types": "^2.1.0",
"scule": "^1.3.0",
"semver": "^7.7.1",
"std-env": "^3.9.0",
"tinyglobby": "^0.2.13",
"ufo": "^1.6.1",
"unctx": "^2.4.1",
"unimport": "^5.0.1",
"untyped": "^2.0.0"
},
"engines": {
"node": ">=18.12.0"
}
},
"node_modules/nuxt-seo-utils/node_modules/confbox": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz",
"integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==",
"license": "MIT"
},
"node_modules/nuxt-seo-utils/node_modules/local-pkg": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.1.tgz",
"integrity": "sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==",
"license": "MIT",
"dependencies": {
"mlly": "^1.7.4",
"pkg-types": "^2.0.1",
"quansync": "^0.2.8"
},
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/nuxt-seo-utils/node_modules/ohash": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz",
"integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==",
"license": "MIT"
},
"node_modules/nuxt-seo-utils/node_modules/pkg-types": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.1.0.tgz",
"integrity": "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==",
"license": "MIT",
"dependencies": {
"confbox": "^0.2.1",
"exsolve": "^1.0.1",
"pathe": "^2.0.3"
}
},
"node_modules/nuxt-seo-utils/node_modules/tinyglobby": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
"integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==",
"license": "MIT",
"dependencies": {
"fdir": "^6.4.4",
"picomatch": "^4.0.2"
},
"engines": {
"node": ">=12.0.0"
},
"funding": {
"url": "https://github.com/sponsors/SuperchupuDev"
}
},
"node_modules/nuxt-seo-utils/node_modules/unimport": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/unimport/-/unimport-5.0.1.tgz",
"integrity": "sha512-1YWzPj6wYhtwHE+9LxRlyqP4DiRrhGfJxdtH475im8ktyZXO3jHj/3PZ97zDdvkYoovFdi0K4SKl3a7l92v3sQ==",
"license": "MIT",
"dependencies": {
"acorn": "^8.14.1",
"escape-string-regexp": "^5.0.0",
"estree-walker": "^3.0.3",
"local-pkg": "^1.1.1",
"magic-string": "^0.30.17",
"mlly": "^1.7.4",
"pathe": "^2.0.3",
"picomatch": "^4.0.2",
"pkg-types": "^2.1.0",
"scule": "^1.3.0",
"strip-literal": "^3.0.0",
"tinyglobby": "^0.2.13",
"unplugin": "^2.3.2",
"unplugin-utils": "^0.2.4"
},
"engines": {
"node": ">=18.12.0"
}
},
"node_modules/nuxt-site-config": {
"version": "3.1.9",
"resolved": "https://registry.npmjs.org/nuxt-site-config/-/nuxt-site-config-3.1.9.tgz",
"integrity": "sha512-YB69GX0st8drv1d5xypweseiEWeR22tfGdyVH3U4R+mpUSz8paBx48ArKC6MgV22DKItoQm51LVoapF5pl5bEQ==",
"license": "MIT",
"dependencies": {
"@nuxt/kit": "^3.16.2",
"nuxt-site-config-kit": "3.1.9",
"pathe": "^2.0.3",
"pkg-types": "^2.1.0",
"sirv": "^3.0.1",
"site-config-stack": "3.1.9",
"ufo": "^1.5.4"
},
"funding": {
"url": "https://github.com/sponsors/harlan-zw"
}
},
"node_modules/nuxt-site-config-kit": {
"version": "3.1.9",
"resolved": "https://registry.npmjs.org/nuxt-site-config-kit/-/nuxt-site-config-kit-3.1.9.tgz",
"integrity": "sha512-bcmpajYJgkNzA0jTq6CmmhKF2wHZUUKeVx/CIGI8lwWuAD81EBUZN0T4iKvVDo54g9UBrUUl8/5GhD65YBBG0A==",
"license": "MIT",
"dependencies": {
"@nuxt/kit": "^3.16.2",
"pkg-types": "^2.1.0",
"site-config-stack": "3.1.9",
"std-env": "^3.9.0",
"ufo": "^1.5.4"
},
"funding": {
"url": "https://github.com/sponsors/harlan-zw"
}
},
"node_modules/nuxt-site-config-kit/node_modules/confbox": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz",
"integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==",
"license": "MIT"
},
"node_modules/nuxt-site-config-kit/node_modules/pkg-types": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.1.0.tgz",
"integrity": "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==",
"license": "MIT",
"dependencies": {
"confbox": "^0.2.1",
"exsolve": "^1.0.1",
"pathe": "^2.0.3"
}
},
"node_modules/nuxt-site-config/node_modules/confbox": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz",
"integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==",
"license": "MIT"
},
"node_modules/nuxt-site-config/node_modules/pkg-types": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.1.0.tgz",
"integrity": "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==",
"license": "MIT",
"dependencies": {
"confbox": "^0.2.1",
"exsolve": "^1.0.1",
"pathe": "^2.0.3"
}
},
"node_modules/nuxt/node_modules/confbox": { "node_modules/nuxt/node_modules/confbox": {
"version": "0.2.2", "version": "0.2.2",
"resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz",
@ -10978,6 +11214,21 @@
"integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/site-config-stack": {
"version": "3.1.9",
"resolved": "https://registry.npmjs.org/site-config-stack/-/site-config-stack-3.1.9.tgz",
"integrity": "sha512-ed53+wLi+36SGqidU+YUpl7f1OHClPLmvUJ/aYZny1dCBnXvOsuFottrMkXDIK2N5UaMED9mz8KrRZTk94ARCg==",
"license": "MIT",
"dependencies": {
"ufo": "^1.5.4"
},
"funding": {
"url": "https://github.com/sponsors/harlan-zw"
},
"peerDependencies": {
"vue": "^3"
}
},
"node_modules/slash": { "node_modules/slash": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
@ -11859,6 +12110,39 @@
"node": ">=18.12.0" "node": ">=18.12.0"
} }
}, },
"node_modules/unplugin-ast": {
"version": "0.14.6",
"resolved": "https://registry.npmjs.org/unplugin-ast/-/unplugin-ast-0.14.6.tgz",
"integrity": "sha512-HdntpxAN8fWyJ28n8iRkRrez9UrxTPda27XzdEkI8tz0Cn0+fLrnN+8qHqHlzRWXxSPVP7M9eEJ5MeMwbbhy4g==",
"license": "MIT",
"dependencies": {
"@babel/generator": "^7.27.0",
"ast-kit": "^1.4.2",
"magic-string-ast": "^0.9.1",
"unplugin": "^2.3.2"
},
"engines": {
"node": ">=18.12.0"
},
"funding": {
"url": "https://github.com/sponsors/sxzz"
}
},
"node_modules/unplugin-ast/node_modules/magic-string-ast": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-0.9.1.tgz",
"integrity": "sha512-18dv2ZlSSgJ/jDWlZGKfnDJx56ilNlYq9F7NnwuWTErsmYmqJ2TWE4l1o2zlUHBYUGBy3tIhPCC1gxq8M5HkMA==",
"license": "MIT",
"dependencies": {
"magic-string": "^0.30.17"
},
"engines": {
"node": ">=20.18.0"
},
"funding": {
"url": "https://github.com/sponsors/sxzz"
}
},
"node_modules/unplugin-utils": { "node_modules/unplugin-utils": {
"version": "0.2.4", "version": "0.2.4",
"resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.2.4.tgz", "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.2.4.tgz",

View file

@ -19,6 +19,7 @@
"@nuxtjs/device": "^3.2.4", "@nuxtjs/device": "^3.2.4",
"@vueuse/nuxt": "^13.1.0", "@vueuse/nuxt": "^13.1.0",
"nuxt": "^3.16.2", "nuxt": "^3.16.2",
"nuxt-seo-utils": "^7.0.11",
"vue": "latest", "vue": "latest",
"vue-router": "latest" "vue-router": "latest"
} }