Compare commits

...

2 Commits

Author SHA1 Message Date
Riyyi 8f00624e25 Put all binaries in git 2 months ago
Riyyi 9bbbb80e75 Implement sitemap.xml and robots.txt 2 months ago
  1. 19
      content.config.ts
  2. 2
      content/articles/bank-atm.md
  3. 2
      content/articles/opengl-test.md
  4. 2
      content/articles/smart-outlet.md
  5. 3
      nuxt.config.ts
  6. 269
      package-lock.json
  7. 2
      package.json
  8. BIN
      public/img/bank-atm/demo.webm
  9. BIN
      public/img/opengl-test-demo.webm
  10. BIN
      public/img/smart-outlet/demo.webm
  11. BIN
      public/pdf/cv-en-rick-van-vonderen.pdf
  12. BIN
      public/pdf/cv-rick-van-vonderen.pdf
  13. 1
      public/robots.txt
  14. 2
      src/app.vue
  15. 8
      src/components.d.ts
  16. 6
      src/pages/about-me.vue
  17. 5
      src/pages/articles/[slug].vue

19
content.config.ts

@ -1,18 +1,21 @@
import { defineContentConfig, defineCollection, z } from '@nuxt/content' import { defineContentConfig, defineCollection, z } from '@nuxt/content'
import { asSitemapCollection } from "@nuxtjs/sitemap/content"
// Lookup resolved from path: rootDir/content // Lookup resolved from path: rootDir/content
// see: https://github.com/nuxt/content/issues/3161 // see: https://github.com/nuxt/content/issues/3161
export default defineContentConfig({ export default defineContentConfig({
collections: { collections: {
content: defineCollection({ content: defineCollection(
type: "page", asSitemapCollection({
source: "**/*.md", type: "page",
schema: z.object({ source: "**/*.md",
date: z.date(), schema: z.object({
img: z.string(), date: z.date(),
tags: z.array(z.string()), img: z.string(),
tags: z.array(z.string()),
})
}) })
}) )
} }
}); });

2
content/articles/bank-atm.md

@ -25,7 +25,7 @@ for the presentation that I gave at Hogeschool Rotterdam.
Korte video waarin de meeste functionaliteit van de bank ATM wordt getoond. Korte video waarin de meeste functionaliteit van de bank ATM wordt getoond.
::VideoLazy{:src="https://riyyi.com/media/bank-atm-demo.webm"} ::VideoLazy{:src="/img/bank-atm/demo.webm"}
:: ::
## Overzicht componenten ## Overzicht componenten

2
content/articles/opengl-test.md

@ -32,5 +32,5 @@ Preview.
Demo showcasing translation, rotation, scaling and textures working. You can Demo showcasing translation, rotation, scaling and textures working. You can
also fly around, which is not shown in the video. also fly around, which is not shown in the video.
::VideoLazy{:src="https://riyyi.com/media/opengl-test-demo.webm"} ::VideoLazy{:src="/img/opengl-test-demo.webm"}
:: ::

2
content/articles/smart-outlet.md

@ -76,5 +76,5 @@ Completed assembly.
Domoticz is used as a controller, which completes the smart outlet project. View Domoticz is used as a controller, which completes the smart outlet project. View
the demo below. the demo below.
::VideoLazy{:src="https://riyyi.com/media/smart-outlet-demo.webm"} ::VideoLazy{:src="/img/smart-outlet/demo.webm"}
:: ::

3
nuxt.config.ts

@ -38,6 +38,8 @@ export default defineNuxtConfig({
modules: [ modules: [
"@nuxt/content", "@nuxt/content",
"@nuxt/eslint", "@nuxt/eslint",
"@nuxtjs/robots",
"@nuxtjs/sitemap",
"@pinia/nuxt", "@pinia/nuxt",
"pinia-plugin-persistedstate/nuxt", "pinia-plugin-persistedstate/nuxt",
"unplugin-icons/nuxt" "unplugin-icons/nuxt"
@ -52,6 +54,7 @@ export default defineNuxtConfig({
secure: process.env.NODE_ENV !== "development" // only send over HTTPS secure: process.env.NODE_ENV !== "development" // only send over HTTPS
} }
}, },
site: { url: "https://riyyi.com", name: "Personal Website" },
srcDir: "src/", srcDir: "src/",
ssr: false, ssr: false,
typescript: { typescript: {

269
package-lock.json generated

@ -22,6 +22,8 @@
"@iconify-json/fa-solid": "^1.2.1", "@iconify-json/fa-solid": "^1.2.1",
"@nuxt/content": "^3.4.0", "@nuxt/content": "^3.4.0",
"@nuxt/eslint": "^1.2.0", "@nuxt/eslint": "^1.2.0",
"@nuxtjs/robots": "^5.2.9",
"@nuxtjs/sitemap": "^7.2.10",
"@types/bootstrap": "^5.2.10", "@types/bootstrap": "^5.2.10",
"@vue/language-server": "^2.1.10", "@vue/language-server": "^2.1.10",
"@vue/typescript-plugin": "^2.1.10", "@vue/typescript-plugin": "^2.1.10",
@ -1642,6 +1644,136 @@
"vfile": "^6.0.3" "vfile": "^6.0.3"
} }
}, },
"node_modules/@nuxtjs/robots": {
"version": "5.2.9",
"resolved": "https://registry.npmjs.org/@nuxtjs/robots/-/robots-5.2.9.tgz",
"integrity": "sha512-JJykE1llIByw8vqhrn4abSPyAcEFnfVOkIaD2/XLwkhNeZHzAQT2/p+ZhqwtaSMyWq8pnW1y0ei7gQYdCqOu+g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@nuxt/kit": "^3.16.2",
"consola": "^3.4.2",
"defu": "^6.1.4",
"nuxt-site-config": "^3.1.9",
"pathe": "^2.0.3",
"pkg-types": "^2.1.0",
"sirv": "^3.0.1",
"std-env": "^3.9.0",
"ufo": "^1.5.4"
},
"funding": {
"url": "https://github.com/sponsors/harlan-zw"
}
},
"node_modules/@nuxtjs/robots/node_modules/@nuxt/kit": {
"version": "3.16.2",
"resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.16.2.tgz",
"integrity": "sha512-K1SAUo2vweTfudKZzjKsZ5YJoxPLTspR5qz5+G61xtZreLpsdpDYfBseqsIAl5VFLJuszeRpWQ01jP9LfQ6Ksw==",
"dev": true,
"license": "MIT",
"dependencies": {
"c12": "^3.0.2",
"consola": "^3.4.2",
"defu": "^6.1.4",
"destr": "^2.0.3",
"errx": "^0.1.0",
"exsolve": "^1.0.4",
"globby": "^14.1.0",
"ignore": "^7.0.3",
"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.8.1",
"ufo": "^1.5.4",
"unctx": "^2.4.1",
"unimport": "^4.1.3",
"untyped": "^2.0.0"
},
"engines": {
"node": ">=18.12.0"
}
},
"node_modules/@nuxtjs/sitemap": {
"version": "7.2.10",
"resolved": "https://registry.npmjs.org/@nuxtjs/sitemap/-/sitemap-7.2.10.tgz",
"integrity": "sha512-7w1Ys2XIE/QVTJn5dbt2p/hrmDoGO9Ay1S3o6LI5M/MDRzKPvnXi5ByRUcc7Sfa3LUpLad5/w4IOQ4lyxhq9Hw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@nuxt/devtools-kit": "^2.3.2",
"@nuxt/kit": "^3.16.2",
"chalk": "^5.4.1",
"defu": "^6.1.4",
"h3-compression": "^0.3.2",
"nuxt-site-config": "^3.1.9",
"ofetch": "^1.4.1",
"pathe": "^2.0.3",
"pkg-types": "^2.1.0",
"radix3": "^1.1.2",
"semver": "^7.7.1",
"sirv": "^3.0.1",
"ufo": "^1.5.4"
},
"engines": {
"node": ">=18.0.0"
},
"funding": {
"url": "https://github.com/sponsors/harlan-zw"
}
},
"node_modules/@nuxtjs/sitemap/node_modules/@nuxt/kit": {
"version": "3.16.2",
"resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.16.2.tgz",
"integrity": "sha512-K1SAUo2vweTfudKZzjKsZ5YJoxPLTspR5qz5+G61xtZreLpsdpDYfBseqsIAl5VFLJuszeRpWQ01jP9LfQ6Ksw==",
"dev": true,
"license": "MIT",
"dependencies": {
"c12": "^3.0.2",
"consola": "^3.4.2",
"defu": "^6.1.4",
"destr": "^2.0.3",
"errx": "^0.1.0",
"exsolve": "^1.0.4",
"globby": "^14.1.0",
"ignore": "^7.0.3",
"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.8.1",
"ufo": "^1.5.4",
"unctx": "^2.4.1",
"unimport": "^4.1.3",
"untyped": "^2.0.0"
},
"engines": {
"node": ">=18.12.0"
}
},
"node_modules/@nuxtjs/sitemap/node_modules/chalk": {
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
"integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^12.17.0 || ^14.13 || >=16.0.0"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/@oxc-parser/binding-linux-x64-gnu": { "node_modules/@oxc-parser/binding-linux-x64-gnu": {
"version": "0.56.5", "version": "0.56.5",
"cpu": [ "cpu": [
@ -5873,6 +6005,19 @@
"uncrypto": "^0.1.3" "uncrypto": "^0.1.3"
} }
}, },
"node_modules/h3-compression": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/h3-compression/-/h3-compression-0.3.2.tgz",
"integrity": "sha512-B+yCKyDRnO0BXSfjAP4tCXJgJwmnKp3GyH5Yh66mY9KuOCrrGQSPk/gBFG2TgH7OyB/6mvqNZ1X0XNVuy0qRsw==",
"dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/codedredd"
},
"peerDependencies": {
"h3": "^1.6.0"
}
},
"node_modules/h3/node_modules/cookie-es": { "node_modules/h3/node_modules/cookie-es": {
"version": "1.2.2", "version": "1.2.2",
"dev": true, "dev": true,
@ -8425,6 +8570,110 @@
"nuxt-component-meta": "bin/nuxt-component-meta.mjs" "nuxt-component-meta": "bin/nuxt-component-meta.mjs"
} }
}, },
"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==",
"dev": true,
"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==",
"dev": true,
"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/@nuxt/kit": {
"version": "3.16.2",
"resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.16.2.tgz",
"integrity": "sha512-K1SAUo2vweTfudKZzjKsZ5YJoxPLTspR5qz5+G61xtZreLpsdpDYfBseqsIAl5VFLJuszeRpWQ01jP9LfQ6Ksw==",
"dev": true,
"license": "MIT",
"dependencies": {
"c12": "^3.0.2",
"consola": "^3.4.2",
"defu": "^6.1.4",
"destr": "^2.0.3",
"errx": "^0.1.0",
"exsolve": "^1.0.4",
"globby": "^14.1.0",
"ignore": "^7.0.3",
"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.8.1",
"ufo": "^1.5.4",
"unctx": "^2.4.1",
"unimport": "^4.1.3",
"untyped": "^2.0.0"
},
"engines": {
"node": ">=18.12.0"
}
},
"node_modules/nuxt-site-config/node_modules/@nuxt/kit": {
"version": "3.16.2",
"resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.16.2.tgz",
"integrity": "sha512-K1SAUo2vweTfudKZzjKsZ5YJoxPLTspR5qz5+G61xtZreLpsdpDYfBseqsIAl5VFLJuszeRpWQ01jP9LfQ6Ksw==",
"dev": true,
"license": "MIT",
"dependencies": {
"c12": "^3.0.2",
"consola": "^3.4.2",
"defu": "^6.1.4",
"destr": "^2.0.3",
"errx": "^0.1.0",
"exsolve": "^1.0.4",
"globby": "^14.1.0",
"ignore": "^7.0.3",
"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.8.1",
"ufo": "^1.5.4",
"unctx": "^2.4.1",
"unimport": "^4.1.3",
"untyped": "^2.0.0"
},
"engines": {
"node": ">=18.12.0"
}
},
"node_modules/nuxt/node_modules/estree-walker": { "node_modules/nuxt/node_modules/estree-walker": {
"version": "3.0.3", "version": "3.0.3",
"dev": true, "dev": true,
@ -10419,6 +10668,22 @@
"dev": true, "dev": true,
"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==",
"dev": true,
"license": "MIT",
"dependencies": {
"ufo": "^1.5.4"
},
"funding": {
"url": "https://github.com/sponsors/harlan-zw"
},
"peerDependencies": {
"vue": "^3"
}
},
"node_modules/skin-tone": { "node_modules/skin-tone": {
"version": "2.0.0", "version": "2.0.0",
"dev": true, "dev": true,
@ -10620,7 +10885,9 @@
} }
}, },
"node_modules/std-env": { "node_modules/std-env": {
"version": "3.8.1", "version": "3.9.0",
"resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz",
"integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/streamx": { "node_modules/streamx": {

2
package.json

@ -25,6 +25,8 @@
"@iconify-json/fa-solid": "^1.2.1", "@iconify-json/fa-solid": "^1.2.1",
"@nuxt/content": "^3.4.0", "@nuxt/content": "^3.4.0",
"@nuxt/eslint": "^1.2.0", "@nuxt/eslint": "^1.2.0",
"@nuxtjs/robots": "^5.2.9",
"@nuxtjs/sitemap": "^7.2.10",
"@types/bootstrap": "^5.2.10", "@types/bootstrap": "^5.2.10",
"@vue/language-server": "^2.1.10", "@vue/language-server": "^2.1.10",
"@vue/typescript-plugin": "^2.1.10", "@vue/typescript-plugin": "^2.1.10",

BIN
public/img/bank-atm/demo.webm

Binary file not shown.

BIN
public/img/opengl-test-demo.webm

Binary file not shown.

BIN
public/img/smart-outlet/demo.webm

Binary file not shown.

BIN
public/pdf/cv-en-rick-van-vonderen.pdf

Binary file not shown.

BIN
public/pdf/cv-rick-van-vonderen.pdf

Binary file not shown.

1
public/robots.txt

@ -1 +0,0 @@

2
src/app.vue

@ -20,7 +20,7 @@ useHead({
{ rel: "icon", type: "image/x-icon", href: getPublicPath("/favicon.ico") }, { rel: "icon", type: "image/x-icon", href: getPublicPath("/favicon.ico") },
], ],
titleTemplate: (titleChunk: string | undefined): string | null => { titleTemplate: (titleChunk: string | undefined): string | null => {
return titleChunk ? `${titleChunk} - website-vue` : 'website-vue'; return titleChunk ? `${titleChunk} - Rick van Vonderen` : 'Rick van Vonderen';
} }
}) })

8
src/components.d.ts vendored

@ -8,25 +8,17 @@ export {}
/* prettier-ignore */ /* prettier-ignore */
declare module 'vue' { declare module 'vue' {
export interface GlobalComponents { export interface GlobalComponents {
IBi0Circle: typeof import('~icons/bi/0-circle')['default']
IBiActivity: typeof import('~icons/bi/activity')['default']
IFaAdjust: typeof import('~icons/fa/adjust')['default'] IFaAdjust: typeof import('~icons/fa/adjust')['default']
IFaAngellist: typeof import('~icons/fa/angellist')['default']
IFaCheck: typeof import('~icons/fa/check')['default'] IFaCheck: typeof import('~icons/fa/check')['default']
IFaClone: typeof import('~icons/fa/clone')['default'] IFaClone: typeof import('~icons/fa/clone')['default']
IFaCoffee: typeof import('~icons/fa/coffee')['default'] IFaCoffee: typeof import('~icons/fa/coffee')['default']
IFaCope: typeof import('~icons/fa/cope')['default']
IFaCopy: typeof import('~icons/fa/copy')['default']
IFaGithub: typeof import('~icons/fa/github')['default'] IFaGithub: typeof import('~icons/fa/github')['default']
IFaGitlab: typeof import('~icons/fa/gitlab')['default'] IFaGitlab: typeof import('~icons/fa/gitlab')['default']
IFaHome: typeof import('~icons/fa/home')['default'] IFaHome: typeof import('~icons/fa/home')['default']
IFaImage: typeof import('~icons/fa/image')['default'] IFaImage: typeof import('~icons/fa/image')['default']
IFaLink: typeof import('~icons/fa/link')['default']
IFaLinkedinSquare: typeof import('~icons/fa/linkedin-square')['default'] IFaLinkedinSquare: typeof import('~icons/fa/linkedin-square')['default']
IFaMoonO: typeof import('~icons/fa/moon-o')['default']
IFaSolidMoon: typeof import('~icons/fa-solid/moon')['default'] IFaSolidMoon: typeof import('~icons/fa-solid/moon')['default']
IFaSolidSun: typeof import('~icons/fa-solid/sun')['default'] IFaSolidSun: typeof import('~icons/fa-solid/sun')['default']
IMdiAccountBox: typeof import('~icons/mdi/account-box')['default']
RouterLink: typeof import('vue-router')['RouterLink'] RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView'] RouterView: typeof import('vue-router')['RouterView']
} }

6
src/pages/about-me.vue

@ -2,10 +2,10 @@
<h2>CV</h2> <h2>CV</h2>
<p> <p>
Download the PDF here: Download the PDF here:
<a href="https://riyyi.com/media/cv-en-rick-van-vonderen.pdf">English</a>,&nbsp; <a :href="getPublicPath('/pdf/cv-en-rick-van-vonderen.pdf')" target="_blank">English</a>,&nbsp;
<a href="https://riyyi.com/media/cv-rick-van-vonderen.pdf">Nederlands</a> <a :href="getPublicPath('/pdf/cv-rick-van-vonderen.pdf')" target="_blank">Nederlands</a>
</p> </p>
<object data="https://riyyi.com/media/cv-en-rick-van-vonderen.pdf" type="application/pdf" <object :data="getPublicPath('/pdf/cv-en-rick-van-vonderen.pdf')" type="application/pdf"
style="width: 100%; height: calc(100vh - 280px)"></object> style="width: 100%; height: calc(100vh - 280px)"></object>
</template> </template>

5
src/pages/articles/[slug].vue

@ -69,8 +69,5 @@ const { data: article } = await useAsyncData<ContentCollectionItem | null>(
() => queryCollection("content").path("/articles/" + params.slug).first() () => queryCollection("content").path("/articles/" + params.slug).first()
); );
useSeoMeta({ useSeoMeta(article.value?.seo || {});
title: article.value?.title,
description: article.value?.description
})
</script> </script>

Loading…
Cancel
Save