feat(03-01): install deps, migrate site config, add SMTP runtimeConfig, wrap UApp

- Install nodemailer, zod, @types/nodemailer
- Create app/data/site.ts with migrated siteConfig from src/config/site.ts
- Add SiteConfig, ContactInfo, SocialLink, FiverrService, FiverrConfig to shared/types
- Add smtpHost/smtpUser/smtpPass/smtpTo to private runtimeConfig
- Wrap app.vue with UApp for useToast() support
This commit is contained in:
2026-04-08 18:32:24 +02:00
parent b10ff2bc0b
commit 21450afb20
6 changed files with 356 additions and 753 deletions
+2
View File
@@ -10,7 +10,9 @@ useHead({
</script> </script>
<template> <template>
<UApp>
<NuxtLayout> <NuxtLayout>
<NuxtPage /> <NuxtPage />
</NuxtLayout> </NuxtLayout>
</UApp>
</template> </template>
+112
View File
@@ -0,0 +1,112 @@
import type { SiteConfig, ContactInfo, SocialLink, FiverrService, FiverrConfig } from '~~/shared/types'
export type { SiteConfig, ContactInfo, SocialLink, FiverrService, FiverrConfig }
export const siteConfig: SiteConfig = {
name: 'Killian',
title: 'Killian - Full Stack Developer | Vue.js, React, Node.js Expert',
description:
'Professional Full Stack Developer specializing in modern web development with Vue.js, React, Node.js. Expert in Discord bots, web applications, and custom software solutions.',
author: 'Killian',
url: 'https://killiandalcin.fr',
contact: {
email: 'contact@killiandalcin.fr',
phone: '+33 6 49 19 38 16',
location: 'France',
},
social: [
{
name: 'Gitea',
url: 'https://gitea.kamisama.ovh/kayjaydee',
icon: 'i-simple-icons-gitea',
username: 'kayjaydee',
},
{
name: 'LinkedIn',
url: 'https://linkedin.com/in/killian-dal-cin',
icon: 'i-simple-icons-linkedin',
username: 'killian-dalcin',
},
{
name: 'Discord',
url: 'https://discord.com/users/370940770225618954',
icon: 'i-simple-icons-discord',
username: 'kayjaydee',
},
{
name: 'Email',
url: 'mailto:contact@killiandalcin.fr',
icon: 'i-lucide-mail',
},
],
fiverr: {
profileUrl: 'https://www.fiverr.com/users/mr_kayjaydee',
services: [
{
id: 'discord-bot',
url: 'https://www.fiverr.com/s/rEDa84j',
image: '/images/fiverr/discord_bot.webp',
price: '$25',
},
{
id: 'minecraft-plugin',
url: 'https://www.fiverr.com/s/xXVY20Q',
image: '/images/fiverr/minecraft_plugin.webp',
price: '$50',
},
{
id: 'telegram-bot',
url: '#',
image: '/images/fiverr/telegram_bot.webp',
price: '$20',
},
{
id: 'website-development',
url: '#',
image: '/images/fiverr/website.webp',
price: '$50',
},
],
},
seo: {
defaultImage: '/portfolio-preview.webp',
twitterHandle: '@killiandalcin',
locale: 'en_US',
alternateLocales: ['fr_FR'],
internalLinks: {
priority: [
{ url: '/fiverr', text: 'Services Fiverr', priority: 0.9 },
{ url: '/projects', text: 'Portfolio', priority: 0.8 },
{ url: '/contact', text: 'Contact', priority: 0.8 },
],
services: [
{ url: '/fiverr#discord-bot', text: 'Bot Discord' },
{ url: '/fiverr#minecraft-plugin', text: 'Plugin Minecraft' },
{ url: '/fiverr#telegram-bot', text: 'Bot Telegram' },
{ url: '/fiverr#website-development', text: 'Developpement Web' },
],
},
organization: {
'@type': 'ProfessionalService',
name: 'Killian Dalcin - Developpeur Full Stack',
logo: 'https://killiandalcin.fr/logo.webp',
priceRange: '$$$',
aggregateRating: {
ratingValue: '5',
reviewCount: '50',
},
},
},
performance: {
enablePrefetch: true,
enablePreconnect: true,
criticalCSS: true,
lazyLoadImages: true,
webpSupport: true,
},
}
+4
View File
@@ -43,6 +43,10 @@ export default defineNuxtConfig({
}, },
}, },
runtimeConfig: { runtimeConfig: {
smtpHost: '',
smtpUser: '',
smtpPass: '',
smtpTo: '',
public: { public: {
gtag: { gtag: {
id: '', id: '',
+168 -749
View File
File diff suppressed because it is too large Load Diff
+4 -1
View File
@@ -18,12 +18,15 @@
"@nuxt/ui": "^3.0.0", "@nuxt/ui": "^3.0.0",
"@nuxtjs/i18n": "^10.2.4", "@nuxtjs/i18n": "^10.2.4",
"@nuxtjs/sitemap": "^8.0.12", "@nuxtjs/sitemap": "^8.0.12",
"nodemailer": "^8.0.5",
"nuxt": "^4.0.0", "nuxt": "^4.0.0",
"nuxt-gtag": "^4.1.0", "nuxt-gtag": "^4.1.0",
"vue": "latest", "vue": "latest",
"vue-router": "latest" "vue-router": "latest",
"zod": "^4.3.6"
}, },
"devDependencies": { "devDependencies": {
"@types/nodemailer": "^8.0.0",
"tailwindcss": "^4.2.2", "tailwindcss": "^4.2.2",
"typescript": "~5.8.0" "typescript": "~5.8.0"
}, },
+63
View File
@@ -60,3 +60,66 @@ export interface FAQ {
answerKey: string answerKey: string
featuresKey: string featuresKey: string
} }
export interface ContactInfo {
email: string
phone: string
location: string
}
export interface SocialLink {
name: string
url: string
icon: string
username?: string
}
export interface FiverrService {
id: string
url: string
image: string
price: string
}
export interface FiverrConfig {
profileUrl: string
services: FiverrService[]
}
export interface SiteConfig {
name: string
title: string
description: string
author: string
contact: ContactInfo
social: SocialLink[]
fiverr: FiverrConfig
url: string
seo: {
defaultImage: string
twitterHandle: string
locale: string
alternateLocales: string[]
internalLinks: {
priority: { url: string; text: string; priority: number }[]
services: { url: string; text: string }[]
}
organization: {
'@type': string
name: string
logo: string
priceRange: string
aggregateRating: {
ratingValue: string
reviewCount: string
}
}
}
performance: {
enablePrefetch: boolean
enablePreconnect: boolean
criticalCSS: boolean
lazyLoadImages: boolean
webpSupport: boolean
}
}