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:
19
index.html
19
index.html
@@ -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>
|
||||||
|
|
||||||
|
@@ -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": [
|
||||||
{
|
{
|
||||||
|
@@ -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>
|
@@ -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')
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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 },
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user