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:
+5
-3
@@ -10,7 +10,9 @@ useHead({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<NuxtLayout>
|
<UApp>
|
||||||
<NuxtPage />
|
<NuxtLayout>
|
||||||
</NuxtLayout>
|
<NuxtPage />
|
||||||
|
</NuxtLayout>
|
||||||
|
</UApp>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -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,
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -43,6 +43,10 @@ export default defineNuxtConfig({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
runtimeConfig: {
|
runtimeConfig: {
|
||||||
|
smtpHost: '',
|
||||||
|
smtpUser: '',
|
||||||
|
smtpPass: '',
|
||||||
|
smtpTo: '',
|
||||||
public: {
|
public: {
|
||||||
gtag: {
|
gtag: {
|
||||||
id: '',
|
id: '',
|
||||||
|
|||||||
Generated
+168
-749
File diff suppressed because it is too large
Load Diff
+4
-1
@@ -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"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user