Compare commits
3 Commits
481c753371
...
main
Author | SHA1 | Date | |
---|---|---|---|
![]() |
2378febe6f | ||
![]() |
c79b818302 | ||
![]() |
a8509416ae |
28
index.html
28
index.html
@@ -5,16 +5,19 @@
|
|||||||
<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 -->
|
<!-- Google tag (gtag.js) -->
|
||||||
<script>(function (w, d, s, l, i) {
|
<script async src="https://www.googletagmanager.com/gtag/js?id=G-CDVVNFY6MV"></script>
|
||||||
w[l] = w[l] || []; w[l].push({
|
<script>
|
||||||
'gtm.start':
|
window.dataLayer = window.dataLayer || [];
|
||||||
new Date().getTime(), event: 'gtm.js'
|
function gtag() { dataLayer.push(arguments); }
|
||||||
}); var f = d.getElementsByTagName(s)[0],
|
gtag('js', new Date());
|
||||||
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);
|
gtag('config', 'G-CDVVNFY6MV');
|
||||||
})(window, document, 'script', 'dataLayer', 'GTM-5QH68BVJ');</script>
|
</script>
|
||||||
<!-- End Google Tag Manager -->
|
|
||||||
|
<!-- Google AdSense -->
|
||||||
|
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5219367964457248"
|
||||||
|
crossorigin="anonymous"></script>
|
||||||
|
|
||||||
<!-- 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>
|
||||||
@@ -238,11 +241,6 @@
|
|||||||
</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>
|
||||||
|
|
||||||
|
1
public/ads.txt
Normal file
1
public/ads.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
google.com, pub-5219367964457248, DIRECT, f08c47fec0942fa0
|
@@ -1,30 +1,5 @@
|
|||||||
# Robots.txt pour killiandalcin.fr
|
|
||||||
# Optimisé pour un crawling Google efficace
|
|
||||||
|
|
||||||
# Googlebot
|
|
||||||
User-agent: Googlebot
|
|
||||||
Allow: /
|
|
||||||
Crawl-delay: 0
|
|
||||||
|
|
||||||
# Bingbot
|
|
||||||
User-agent: Bingbot
|
|
||||||
Allow: /
|
|
||||||
Crawl-delay: 1
|
|
||||||
|
|
||||||
# Tous les bots légitimes
|
|
||||||
User-agent: *
|
User-agent: *
|
||||||
Allow: /
|
|
||||||
Disallow: /api/
|
|
||||||
Disallow: /admin/
|
Disallow: /admin/
|
||||||
Disallow: /*.json$
|
Disallow: /api/
|
||||||
Disallow: /*?*
|
Disallow: /*?*
|
||||||
Allow: /*.css$
|
|
||||||
Allow: /*.js$
|
|
||||||
Allow: /*.webp$
|
|
||||||
Allow: /*.jpg$
|
|
||||||
Allow: /*.png$
|
|
||||||
Allow: /*.svg$
|
|
||||||
Allow: /*.woff2$
|
|
||||||
|
|
||||||
# Sitemap
|
|
||||||
Sitemap: https://killiandalcin.fr/sitemap.xml
|
Sitemap: https://killiandalcin.fr/sitemap.xml
|
@@ -3,52 +3,40 @@
|
|||||||
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">
|
||||||
|
|
||||||
<!-- Home Page - Maximum Priority -->
|
<!-- Home Page -->
|
||||||
<url>
|
<url>
|
||||||
<loc>https://killiandalcin.fr/</loc>
|
<loc>https://killiandalcin.fr/</loc>
|
||||||
<lastmod>2025-01-14</lastmod>
|
<lastmod>2025-07-07</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
|
||||||
<priority>1.0</priority>
|
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
<!-- Fiverr Services Page - High Priority (Business Focus) -->
|
<!-- Fiverr Services Page -->
|
||||||
<url>
|
<url>
|
||||||
<loc>https://killiandalcin.fr/fiverr</loc>
|
<loc>https://killiandalcin.fr/fiverr</loc>
|
||||||
<lastmod>2025-01-14</lastmod>
|
<lastmod>2025-07-07</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
|
||||||
<priority>0.9</priority>
|
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
<!-- Projects Portfolio Page -->
|
<!-- Projects Portfolio Page -->
|
||||||
<url>
|
<url>
|
||||||
<loc>https://killiandalcin.fr/projects</loc>
|
<loc>https://killiandalcin.fr/projects</loc>
|
||||||
<lastmod>2025-01-14</lastmod>
|
<lastmod>2025-07-07</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
|
||||||
<priority>0.8</priority>
|
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
<!-- Contact Page -->
|
<!-- Contact Page -->
|
||||||
<url>
|
<url>
|
||||||
<loc>https://killiandalcin.fr/contact</loc>
|
<loc>https://killiandalcin.fr/contact</loc>
|
||||||
<lastmod>2025-01-14</lastmod>
|
<lastmod>2025-07-07</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
|
||||||
<priority>0.8</priority>
|
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
<!-- About Page -->
|
<!-- About Page -->
|
||||||
<url>
|
<url>
|
||||||
<loc>https://killiandalcin.fr/about</loc>
|
<loc>https://killiandalcin.fr/about</loc>
|
||||||
<lastmod>2025-01-14</lastmod>
|
<lastmod>2025-07-07</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
|
||||||
<priority>0.7</priority>
|
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
<!-- Formation/Training Page -->
|
<!-- Formation/Training Page -->
|
||||||
<url>
|
<url>
|
||||||
<loc>https://killiandalcin.fr/formation</loc>
|
<loc>https://killiandalcin.fr/formation</loc>
|
||||||
<lastmod>2025-01-14</lastmod>
|
<lastmod>2025-07-07</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
|
||||||
<priority>0.7</priority>
|
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
<!-- Dynamic Project Detail Pages -->
|
<!-- Dynamic Project Detail Pages -->
|
||||||
@@ -56,57 +44,43 @@
|
|||||||
<!-- Virtual Tour Project -->
|
<!-- Virtual Tour Project -->
|
||||||
<url>
|
<url>
|
||||||
<loc>https://killiandalcin.fr/project/virtual-tour</loc>
|
<loc>https://killiandalcin.fr/project/virtual-tour</loc>
|
||||||
<lastmod>2025-01-14</lastmod>
|
<lastmod>2025-07-07</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
|
||||||
<priority>0.6</priority>
|
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
<!-- Xinko Discord Bot Project (Featured) -->
|
<!-- Xinko Discord Bot Project -->
|
||||||
<url>
|
<url>
|
||||||
<loc>https://killiandalcin.fr/project/xinko</loc>
|
<loc>https://killiandalcin.fr/project/xinko</loc>
|
||||||
<lastmod>2025-01-14</lastmod>
|
<lastmod>2025-07-07</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
|
||||||
<priority>0.7</priority>
|
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
<!-- Image Manipulation NPM Package (Featured) -->
|
<!-- Image Manipulation NPM Package -->
|
||||||
<url>
|
<url>
|
||||||
<loc>https://killiandalcin.fr/project/image-manipulation</loc>
|
<loc>https://killiandalcin.fr/project/image-manipulation</loc>
|
||||||
<lastmod>2025-01-14</lastmod>
|
<lastmod>2025-07-07</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
|
||||||
<priority>0.7</priority>
|
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
<!-- Flowboard Project Management App (Featured) -->
|
<!-- Flowboard Project Management App -->
|
||||||
<url>
|
<url>
|
||||||
<loc>https://killiandalcin.fr/project/flowboard</loc>
|
<loc>https://killiandalcin.fr/project/flowboard</loc>
|
||||||
<lastmod>2025-01-14</lastmod>
|
<lastmod>2025-07-07</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
|
||||||
<priority>0.7</priority>
|
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
<!-- Primate Web Admin Project -->
|
<!-- Primate Web Admin Project -->
|
||||||
<url>
|
<url>
|
||||||
<loc>https://killiandalcin.fr/project/primate-web-admin</loc>
|
<loc>https://killiandalcin.fr/project/primate-web-admin</loc>
|
||||||
<lastmod>2025-01-14</lastmod>
|
<lastmod>2025-07-07</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
|
||||||
<priority>0.6</priority>
|
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
<!-- Instagram Bot Project -->
|
<!-- Instagram Bot Project -->
|
||||||
<url>
|
<url>
|
||||||
<loc>https://killiandalcin.fr/project/instagram-bot</loc>
|
<loc>https://killiandalcin.fr/project/instagram-bot</loc>
|
||||||
<lastmod>2025-01-14</lastmod>
|
<lastmod>2025-07-07</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
|
||||||
<priority>0.6</priority>
|
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
<!-- Crowdin Status Bot Project -->
|
<!-- Crowdin Status Bot Project -->
|
||||||
<url>
|
<url>
|
||||||
<loc>https://killiandalcin.fr/project/crowdin-status-bot</loc>
|
<loc>https://killiandalcin.fr/project/crowdin-status-bot</loc>
|
||||||
<lastmod>2025-01-14</lastmod>
|
<lastmod>2025-07-07</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
|
||||||
<priority>0.6</priority>
|
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
</urlset>
|
</urlset>
|
@@ -14,7 +14,7 @@ const navigation = computed(() => [
|
|||||||
{ name: t('nav.projects'), path: '/projects' },
|
{ name: t('nav.projects'), path: '/projects' },
|
||||||
{ name: t('nav.about'), path: '/about' },
|
{ name: t('nav.about'), path: '/about' },
|
||||||
{ name: t('nav.contact'), path: '/contact' },
|
{ name: t('nav.contact'), path: '/contact' },
|
||||||
{ name: t('nav.formation'), path: '/formation' },
|
// { name: t('nav.formation'), path: '/formation' },
|
||||||
{ name: t('nav.fiverr'), path: '/fiverr' },
|
{ name: t('nav.fiverr'), path: '/fiverr' },
|
||||||
])
|
])
|
||||||
|
|
||||||
|
@@ -1,7 +1,15 @@
|
|||||||
import { createRouter, createWebHistory } from 'vue-router'
|
import { createRouter, createWebHistory, type RouteLocationNormalized } from 'vue-router'
|
||||||
import { nextTick } from 'vue'
|
import { nextTick } from 'vue'
|
||||||
import HomePage from '../views/HomePage.vue'
|
import HomePage from '../views/HomePage.vue'
|
||||||
|
|
||||||
|
// Google Analytics gtag types
|
||||||
|
declare global {
|
||||||
|
interface Window {
|
||||||
|
dataLayer: unknown[]
|
||||||
|
gtag: (...args: unknown[]) => void
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const router = createRouter({
|
const router = createRouter({
|
||||||
history: createWebHistory(import.meta.env.BASE_URL),
|
history: createWebHistory(import.meta.env.BASE_URL),
|
||||||
routes: [
|
routes: [
|
||||||
@@ -94,9 +102,20 @@ router.beforeEach((to, from, next) => {
|
|||||||
next()
|
next()
|
||||||
})
|
})
|
||||||
|
|
||||||
// Additional scroll to top handler for better compatibility
|
// Google Analytics page view tracking function
|
||||||
router.afterEach(() => {
|
const trackPageView = (route: RouteLocationNormalized) => {
|
||||||
// Use nextTick to ensure the DOM is fully updated
|
// Track page view with gtag
|
||||||
|
if (window.gtag) {
|
||||||
|
window.gtag('config', 'G-CDVVNFY6MV', {
|
||||||
|
page_path: route.path,
|
||||||
|
page_title: document.title,
|
||||||
|
page_location: window.location.href
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Track page views on route changes
|
||||||
|
router.afterEach((to) => {
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
// Smooth scroll to top
|
// Smooth scroll to top
|
||||||
window.scrollTo({
|
window.scrollTo({
|
||||||
@@ -104,7 +123,16 @@ router.afterEach(() => {
|
|||||||
left: 0,
|
left: 0,
|
||||||
behavior: 'smooth'
|
behavior: 'smooth'
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Track page view for GTM
|
||||||
|
trackPageView(to)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Track initial page load
|
||||||
|
router.isReady().then(() => {
|
||||||
|
// Track the initial route after router is ready
|
||||||
|
trackPageView(router.currentRoute.value)
|
||||||
|
})
|
||||||
|
|
||||||
export default router
|
export default router
|
||||||
|
Reference in New Issue
Block a user