feat(seo): mise à jour des métadonnées et intégration de Google Tag Manager

- Ajout du script Google Tag Manager dans index.html pour le suivi des performances.
- Mise à jour des couleurs de thème dans index.html et site.webmanifest pour un meilleur contraste.
- Révision des dates de dernière modification dans sitemap.xml pour refléter la date actuelle.
- Changement des priorités et des URLs des projets dans sitemap.xml pour une meilleure organisation.
- Modification de la gestion du thème par défaut dans useTheme.ts pour utiliser le mode sombre.
- Mise à jour des paramètres de localisation dans site.ts et index.ts pour un meilleur support multilingue.
This commit is contained in:
Mr¤KayJayDee
2025-07-05 22:20:43 +02:00
parent 6234e02fa7
commit 481c753371
6 changed files with 96 additions and 99 deletions

View File

@@ -5,6 +5,17 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Google Tag Manager -->
<script>(function (w, d, s, l, i) {
w[l] = w[l] || []; w[l].push({
'gtm.start':
new Date().getTime(), event: 'gtm.js'
}); var f = d.getElementsByTagName(s)[0],
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-5QH68BVJ');</script>
<!-- End Google Tag Manager -->
<!-- Primary Meta Tags --> <!-- Primary Meta Tags -->
<title>Full Stack Developer Freelance Vue.js React Node.js | Killian Dalcin</title> <title>Full Stack Developer Freelance Vue.js React Node.js | Killian Dalcin</title>
<meta name="title" content="Full Stack Developer Freelance Vue.js React Node.js | Killian Dalcin"> <meta name="title" content="Full Stack Developer Freelance Vue.js React Node.js | Killian Dalcin">
@@ -54,7 +65,8 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<!-- Theme Color --> <!-- Theme Color -->
<meta name="theme-color" content="#2563eb"> <meta name="theme-color" content="#111827" media="(prefers-color-scheme: dark)">
<meta name="theme-color" content="#2563eb" media="(prefers-color-scheme: light)">
<!-- Structured Data --> <!-- Structured Data -->
<script type="application/ld+json"> <script type="application/ld+json">
@@ -226,6 +238,11 @@
</head> </head>
<body> <body>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5QH68BVJ" height="0" width="0"
style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<div id="app"></div> <div id="app"></div>
<script type="module" src="/src/main.ts"></script> <script type="module" src="/src/main.ts"></script>

View File

@@ -4,8 +4,8 @@
"description": "Professional Full Stack Developer specializing in Vue.js, React, Node.js. Expert in Discord bots, web applications, and custom software solutions.", "description": "Professional Full Stack Developer specializing in Vue.js, React, Node.js. Expert in Discord bots, web applications, and custom software solutions.",
"start_url": "/", "start_url": "/",
"display": "standalone", "display": "standalone",
"background_color": "#ffffff", "background_color": "#111827",
"theme_color": "#2563eb", "theme_color": "#111827",
"orientation": "portrait-primary", "orientation": "portrait-primary",
"icons": [ "icons": [
{ {

View File

@@ -3,129 +3,110 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<!-- Page d'accueil - Priorité maximale --> <!-- Home Page - Maximum Priority -->
<url> <url>
<loc>https://killiandalcin.fr/</loc> <loc>https://killiandalcin.fr/</loc>
<lastmod>2025-06-25</lastmod> <lastmod>2025-01-14</lastmod>
<changefreq>weekly</changefreq> <changefreq>weekly</changefreq>
<priority>1.0</priority> <priority>1.0</priority>
</url> </url>
<!-- Page Services Fiverr - Haute priorité (conversions) --> <!-- Fiverr Services Page - High Priority (Business Focus) -->
<url> <url>
<loc>https://killiandalcin.fr/fiverr</loc> <loc>https://killiandalcin.fr/fiverr</loc>
<lastmod>2025-06-25</lastmod> <lastmod>2025-01-14</lastmod>
<changefreq>weekly</changefreq> <changefreq>weekly</changefreq>
<priority>0.9</priority> <priority>0.9</priority>
</url> </url>
<!-- Page Projets/Portfolio --> <!-- Projects Portfolio Page -->
<url> <url>
<loc>https://killiandalcin.fr/projects</loc> <loc>https://killiandalcin.fr/projects</loc>
<lastmod>2025-06-25</lastmod> <lastmod>2025-01-14</lastmod>
<changefreq>weekly</changefreq> <changefreq>weekly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<!-- Page Contact --> <!-- Contact Page -->
<url> <url>
<loc>https://killiandalcin.fr/contact</loc> <loc>https://killiandalcin.fr/contact</loc>
<lastmod>2025-06-25</lastmod> <lastmod>2025-01-14</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<!-- Page À Propos --> <!-- About Page -->
<url> <url>
<loc>https://killiandalcin.fr/about</loc> <loc>https://killiandalcin.fr/about</loc>
<lastmod>2025-06-25</lastmod> <lastmod>2025-01-14</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.7</priority> <priority>0.7</priority>
</url> </url>
<!-- Pages de projets individuels --> <!-- Formation/Training Page -->
<url> <url>
<loc>https://killiandalcin.fr/projects/xinko</loc> <loc>https://killiandalcin.fr/formation</loc>
<lastmod>2025-06-25</lastmod> <lastmod>2025-01-14</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://killiandalcin.fr/projects/flowboard</loc>
<lastmod>2025-06-25</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://killiandalcin.fr/projects/virtual-tour</loc>
<lastmod>2025-06-25</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://killiandalcin.fr/projects/image-manipulation</loc>
<lastmod>2025-06-25</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://killiandalcin.fr/projects/primate-web-admin</loc>
<lastmod>2025-06-25</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://killiandalcin.fr/projects/instagram-bot</loc>
<lastmod>2025-06-25</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://killiandalcin.fr/projects/crowdin-status-bot</loc>
<lastmod>2025-06-25</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<!-- Version anglaise -->
<url>
<loc>https://killiandalcin.fr/en</loc>
<lastmod>2025-06-25</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://killiandalcin.fr/en/fiverr</loc>
<lastmod>2025-06-25</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://killiandalcin.fr/en/projects</loc>
<lastmod>2025-06-25</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://killiandalcin.fr/en/contact</loc>
<lastmod>2025-06-25</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.7</priority> <priority>0.7</priority>
</url> </url>
<!-- Dynamic Project Detail Pages -->
<!-- Virtual Tour Project -->
<url> <url>
<loc>https://killiandalcin.fr/en/about</loc> <loc>https://killiandalcin.fr/project/virtual-tour</loc>
<lastmod>2025-06-25</lastmod> <lastmod>2025-01-14</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.6</priority> <priority>0.6</priority>
</url> </url>
<!-- Xinko Discord Bot Project (Featured) -->
<url>
<loc>https://killiandalcin.fr/project/xinko</loc>
<lastmod>2025-01-14</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<!-- Image Manipulation NPM Package (Featured) -->
<url>
<loc>https://killiandalcin.fr/project/image-manipulation</loc>
<lastmod>2025-01-14</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<!-- Flowboard Project Management App (Featured) -->
<url>
<loc>https://killiandalcin.fr/project/flowboard</loc>
<lastmod>2025-01-14</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<!-- Primate Web Admin Project -->
<url>
<loc>https://killiandalcin.fr/project/primate-web-admin</loc>
<lastmod>2025-01-14</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<!-- Instagram Bot Project -->
<url>
<loc>https://killiandalcin.fr/project/instagram-bot</loc>
<lastmod>2025-01-14</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<!-- Crowdin Status Bot Project -->
<url>
<loc>https://killiandalcin.fr/project/crowdin-status-bot</loc>
<lastmod>2025-01-14</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
</urlset> </urlset>

View File

@@ -32,7 +32,7 @@ export function useTheme() {
} }
} }
// Load theme from localStorage or system preference // Load theme from localStorage or default to dark mode
const loadTheme = () => { const loadTheme = () => {
if (typeof window !== 'undefined') { if (typeof window !== 'undefined') {
const savedTheme = localStorage.getItem('theme') as Theme | null const savedTheme = localStorage.getItem('theme') as Theme | null
@@ -40,9 +40,8 @@ export function useTheme() {
if (savedTheme) { if (savedTheme) {
setTheme(savedTheme) setTheme(savedTheme)
} else { } else {
// Use system preference // Default to dark mode instead of system preference
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches setTheme('dark')
setTheme(prefersDark ? 'dark' : 'light')
} }
} }
} }

View File

@@ -133,8 +133,8 @@ export const siteConfig: SiteConfig = {
seo: { seo: {
defaultImage: '/portfolio-preview.webp', defaultImage: '/portfolio-preview.webp',
twitterHandle: '@killiandalcin', twitterHandle: '@killiandalcin',
locale: 'fr_FR', locale: 'en_US',
alternateLocales: ['en_US'], alternateLocales: ['fr_FR'],
internalLinks: { internalLinks: {
priority: [ priority: [
{ url: '/fiverr', text: 'Services Fiverr', priority: 0.9 }, { url: '/fiverr', text: 'Services Fiverr', priority: 0.9 },

View File

@@ -2,17 +2,17 @@ import { createI18n } from 'vue-i18n'
import en from '@/locales/en' import en from '@/locales/en'
import fr from '@/locales/fr' import fr from '@/locales/fr'
// Get the saved locale from localStorage or default to French // Get the saved locale from localStorage or default to English
const savedLocale = localStorage.getItem('locale') || 'fr' const savedLocale = localStorage.getItem('locale') || 'en'
const i18n = createI18n({ const i18n = createI18n({
legacy: false, legacy: false,
locale: savedLocale, locale: savedLocale,
fallbackLocale: 'fr', fallbackLocale: 'en',
messages: { messages: {
en, en,
fr fr
} }
}) })
export default i18n export default i18n