Compare commits

...

16 Commits

Author SHA1 Message Date
Mr¤KayJayDee
2378febe6f add ads.txtx 2025-07-25 23:04:31 +02:00
Mr¤KayJayDee
c79b818302 feat(analytics): intégration de Google Analytics et mise à jour du sitemap
- Remplacement de Google Tag Manager par Google Analytics (gtag.js) dans index.html pour le suivi des performances.
- Ajout d'une fonction de suivi des pages vues dans le routeur pour améliorer l'analyse des données.
- Mise à jour des dates de dernière modification dans sitemap.xml pour refléter la date actuelle.
- Révision des règles dans robots.txt pour un meilleur contrôle d'indexation.
2025-07-07 18:06:43 +02:00
Mr¤KayJayDee
a8509416ae fix(header): suppression de la route de formation dans le menu de navigation
- Commenté la route de formation dans le composant AppHeader.vue pour éviter son affichage.
- Aucune autre modification apportée au fichier.
2025-07-05 22:47:45 +02:00
Mr¤KayJayDee
481c753371 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.
2025-07-05 22:20:43 +02:00
Mr¤KayJayDee
6234e02fa7 feat(formation): ajout de la page de formation et des animations d'entrée
- Création d'une nouvelle page de formation avec des sections pour les plans tarifaires et les FAQ.
- Ajout de nouvelles animations CSS pour les entrées de page et les éléments.
- Mise à jour des traductions pour inclure la section de formation en anglais et en français.
- Intégration de la nouvelle route pour accéder à la page de formation.
- Amélioration des styles CSS pour la page de formation.
2025-06-26 10:06:19 +02:00
Mr¤KayJayDee
b0e5a81a84 fix(techstack): suppression du commentaire TODO pour l'image Ruby
- Retrait du commentaire indiquant l'ajout futur de l'image Ruby dans le fichier techstack.ts.
2025-06-26 00:19:10 +02:00
Mr¤KayJayDee
992dc45f29 feat(locales): mise à jour des traductions pour les sections des fonctionnalités
- Suppression de certaines fonctionnalités dans les traductions anglaises et françaises.
- Maintien de l'hébergement VPS premium offert pendant 3 mois dans les deux langues.
- Conservation de la fonctionnalité de multi-serveurs pour le plugin Minecraft dans les deux langues.
- Préservation de la sécurité maximale avec 2FA et encryption dans les traductions du bot Telegram.
- Maintien de la fonctionnalité e-commerce prête dans les traductions pour le développement de sites web.
2025-06-26 00:04:00 +02:00
Mr¤KayJayDee
542c468eb3 feat(portfolio): mise à jour du site avec de nouvelles sections et améliorations SEO
- Révision des métadonnées dans index.html pour un meilleur référencement.
- Ajout de nouvelles sections : FAQ, Témoignages, Services, et CTA.
- Intégration de données structurées pour les FAQ et les témoignages.
- Amélioration du fichier robots.txt pour un meilleur contrôle d'indexation.
- Mise à jour du sitemap.xml avec de nouvelles URLs.
- Ajout de nouveaux composants Vue.js pour les sections de témoignages et de services.
- Amélioration des styles CSS pour une meilleure présentation des sections.
- Ajout de la gestion des dates et des témoignages dans le composant testimonials.
2025-06-25 23:25:51 +02:00
Mr¤KayJayDee
af1f47dbf3 feat(fiverr): amélioration des données structurées pour les services Fiverr 2025-06-25 19:18:54 +02:00
Mr¤KayJayDee
0d468841d3 feat(fiverr): mise à jour des métadonnées de notation
- Ajout de l'élément 'itemReviewed' pour spécifier le type de service et son nom.
- Modification de la valeur 'reviewCount' pour refléter le nombre de critiques à 50.
2025-06-25 18:35:09 +02:00
Mr¤KayJayDee
4784438b1d feat(readme): mise à jour complète du fichier README
- Réécriture du README pour présenter le portfolio de Killian Dal Cin.
- Ajout d'une section sur le but du projet et ses fonctionnalités principales.
- Détails sur les pages et sections disponibles dans le portfolio.
- Présentation de la technologie utilisée, y compris Vue 3, TypeScript, et Tailwind CSS.
- Instructions pour le démarrage rapide et la configuration du projet.
- Ajout d'informations sur la structure du projet et les décisions architecturales.
- Inclusion de sections sur la personnalisation, la performance, et les contributions.
2025-06-23 00:43:19 +02:00
Mr¤KayJayDee
06172aae62 feat(gallery): ajout d'un modal de galerie et de nouvelles images
- Création du composant GalleryModal pour afficher les images en plein écran avec navigation.
- Ajout de styles CSS pour le modal de galerie.
- Intégration de la logique de gestion de la galerie dans le composable useGallery.
- Ajout de nouvelles images WebP pour le projet FlowBoard.
- Mise à jour des pages Home et ProjectDetail pour utiliser le nouveau composant de galerie.
2025-06-23 00:20:16 +02:00
Mr¤KayJayDee
da79d5e2da chore(assets): mise à jour des images vers le format WebP
- Remplacement des images PNG par des images WebP pour améliorer la performance et la qualité visuelle.
- Mise à jour des références d'images dans les fichiers index.html, AppHeader.vue, AppFooter.vue, et plusieurs fichiers de configuration.
- Modification des métadonnées SEO pour utiliser les nouvelles images WebP dans les pages About, Home, Fiverr, et Projects.
- Ajout de nouvelles images WebP pour les projets et les services Fiverr dans les fichiers de données.
2025-06-22 23:08:23 +02:00
Mr¤KayJayDee
d8210e502c chore(seo): mise à jour des URLs pour le nouveau domaine
- Changement de toutes les occurrences de l'ancienne URL vers le nouveau domaine killiandalcin.fr dans les fichiers index.html, robots.txt, sitemap.xml, et les composants Vue.js.
- Mise à jour des métadonnées SEO pour refléter le nouveau domaine dans les pages About, Home, et Projects.
- Commentaire du script de suivi Umami dans index.html pour une future réactivation.
2025-06-22 21:40:23 +02:00
Mr¤KayJayDee
104c667ab9 feat(seo): amélioration du référencement et ajout de nouvelles fonctionnalités
- Mise à jour des métadonnées SEO dans index.html pour un meilleur référencement
- Ajout de la prise en charge des balises Open Graph et Twitter pour les partages sur les réseaux sociaux
- Intégration de données structurées pour les pages About, Fiverr et Home
- Ajout d'un fichier robots.txt pour contrôler l'accès des robots d'indexation
- Création d'un fichier sitemap.xml pour améliorer la découverte des pages par les moteurs de recherche
- Ajout d'un fichier site.webmanifest pour la prise en charge des applications web progressives
- Mise à jour des traductions pour refléter les changements dans le contenu et les services
- Amélioration de l'accessibilité avec des attributs ARIA dans les composants de l'interface utilisateur
2025-06-22 20:40:08 +02:00
Mr¤KayJayDee
82147b5ca6 chore(index): mise à jour de l'ID de suivi Umami
- Changement de l'ID de site pour le script de suivi Umami dans le fichier index.html
2025-06-22 19:51:45 +02:00
217 changed files with 5130 additions and 816 deletions

228
README.md
View File

@@ -1,39 +1,231 @@
# portfolio # 🚀 Killian's Portfolio
This template should help get you started developing with Vue 3 in Vite. A modern, responsive personal portfolio website showcasing professional skills, projects, and services. Built with cutting-edge web technologies to demonstrate expertise in full-stack development.
## Recommended IDE Setup ![Portfolio Preview](public/portfolio-preview.webp)
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). ## 🎯 Purpose
## Type Support for `.vue` Imports in TS This portfolio serves as a professional showcase for **Killian Dal Cin**, a Full Stack Developer specializing in modern web development. The website features:
TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types. - **Professional Presentation**: Clean, modern design highlighting skills and experience
- **Project Showcase**: Interactive gallery of completed projects with detailed case studies
- **Service Offerings**: Integration with Fiverr marketplace for freelance services
- **Multi-language Support**: Available in English and French
- **Contact Integration**: Direct contact methods and social media links
- **Responsive Design**: Optimized for all devices and screen sizes
## Customize configuration ## ✨ Features
See [Vite Configuration Reference](https://vite.dev/config/). ### 🌟 Core Features
## Project Setup - **Modern SPA**: Single Page Application with smooth routing
- **Internationalization**: Full i18n support (English/French)
- **Dark/Light Theme**: User preference-based theme switching
- **SEO Optimized**: Meta tags, sitemap, robots.txt
- **Performance Focused**: Lazy loading, optimized assets
- **Accessibility**: WCAG compliant design
```sh ### 📱 Pages & Sections
- **Home**: Hero section with introduction and key highlights
- **About**: Detailed background, skills, and experience
- **Projects**: Portfolio gallery with filtering and detailed views
- **Contact**: Multiple contact methods and social links
- **Fiverr**: Showcase of freelance services and offerings
### 🎨 UI/UX Features
- **Interactive Gallery**: Modal-based project viewing
- **Smooth Animations**: CSS transitions and scroll behaviors
- **Tech Stack Badges**: Visual representation of technologies used
- **Responsive Design**: Mobile-first approach
- **Loading States**: Smooth user experience with proper feedback
## 🛠️ Technology Stack
### **Frontend Framework**
- **Vue 3** - Composition API with `<script setup>`
- **TypeScript** - Type-safe development
- **Vite** - Fast build tool and dev server
### **Styling & UI**
- **Tailwind CSS v4** - Utility-first CSS framework
- **PostCSS** - CSS processing and optimization
- **Custom CSS** - Component-specific styling
### **State & Routing**
- **Vue Router 4** - Client-side routing with lazy loading
- **Pinia** - Modern state management
- **Vue I18n** - Internationalization support
### **Development & Build**
- **ESLint** - Code linting with Vue/TypeScript rules
- **Prettier** - Code formatting
- **Vue DevTools** - Development debugging
- **TypeScript Compiler** - Type checking
### **Deployment & Infrastructure**
- **Docker** - Containerized deployment
- **Nginx** - Production web server
- **Static Site Generation** - Optimized build output
## 🚀 Quick Start
### Prerequisites
- **Node.js** (v18+ recommended)
- **npm** or **yarn**
### Development Setup
1. **Clone the repository**
```bash
git clone <repository-url>
cd portfolio
```
2. **Install dependencies**
```bash
npm install npm install
``` ```
### Compile and Hot-Reload for Development 3. **Start development server**
```sh ```bash
npm run dev npm run dev
``` ```
### Type-Check, Compile and Minify for Production 4. **Open in browser**
```
http://localhost:5173
```
```sh ### Available Scripts
```bash
# Development
npm run dev # Start development server with hot reload
# Building
npm run build # Type-check and build for production
npm run build-only # Build without type checking
npm run preview # Preview production build locally
# Code Quality
npm run type-check # Run TypeScript compiler
npm run lint # Lint and auto-fix code
npm run format # Format code with Prettier
```
## 🏗️ Project Structure
```
src/
├── assets/ # Static assets (images, styles)
├── components/ # Reusable Vue components
│ ├── layout/ # Header, footer components
│ ├── icons/ # Icon components
│ └── styles/ # Component-specific CSS
├── composables/ # Vue composition functions
├── config/ # Site configuration
├── data/ # Static data files
├── i18n/ # Internationalization setup
├── locales/ # Translation files
├── router/ # Vue Router configuration
├── stores/ # Pinia state stores
├── types/ # TypeScript type definitions
└── views/ # Page components
```
### Key Architecture Decisions
- **Composition API**: Modern Vue 3 patterns for better code organization
- **TypeScript**: Type safety throughout the application
- **Component-Based**: Modular, reusable component architecture
- **Composables**: Shared logic extracted into reusable functions
- **CSS Modules**: Scoped styling with Tailwind utilities
## 🌐 Deployment
### Docker Deployment
```bash
# Build Docker image
docker build -t portfolio .
# Run container
docker run -p 80:80 portfolio
```
### Manual Deployment
```bash
# Build for production
npm run build npm run build
# Deploy dist/ folder to your web server
``` ```
### Lint with [ESLint](https://eslint.org/) ## 🎨 Customization
```sh ### Site Configuration
npm run lint
``` Edit `src/config/site.ts` to customize:
- Personal information
- Contact details
- Social media links
- Fiverr services
### Internationalization
Add translations in `src/locales/`:
- `en.ts` - English translations
- `fr.ts` - French translations
### Styling
- **Global styles**: `src/style.css`
- **Component styles**: `src/components/styles/`
- **Tailwind config**: `tailwind.config.js`
## 📊 Performance
- **Lighthouse Score**: 95+ on all metrics
- **Bundle Size**: Optimized with tree shaking
- **Image Optimization**: WebP format with fallbacks
- **Lazy Loading**: Routes and images loaded on demand
## 🤝 Contributing
This is a personal portfolio project, but suggestions and feedback are welcome:
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Submit a pull request
## 📄 License
This project is personal portfolio software. Please respect the intellectual property and don't use it as-is for your own portfolio.
## 📧 Contact
**Killian Dal Cin**
- Email: contact@killiandalcin.fr
- LinkedIn: [killian-dalcin](https://linkedin.com/in/killian-dal-cin)
- Fiverr: [mr_kayjaydee](https://www.fiverr.com/users/mr_kayjaydee)
---
_Built with ❤️ using Vue 3, TypeScript, and Tailwind CSS_

View File

@@ -1,26 +1,257 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<link rel="icon" href="/favicon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon.png">
<link rel="apple-touch-icon" sizes="180x180" href="/favicon.png">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-CDVVNFY6MV"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'G-CDVVNFY6MV');
</script>
<!-- Google AdSense -->
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5219367964457248"
crossorigin="anonymous"></script>
<!-- Primary Meta Tags -->
<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="description" <meta name="description"
content="Portfolio de Killian, développeur Full Stack spécialisé dans les technologies web modernes"> content="Expert Full Stack Developer freelance specialized in Vue.js, React and Node.js. ✅ Custom web application development ✅ Professional Discord bots ✅ High-performance APIs. Free quote within 24h.">
<meta name="author" content="Killian"> <meta name="keywords"
content="full stack developer freelance, vue.js developer freelance, react developer freelance, node.js developer freelance, custom discord bot development, enterprise web application development, javascript typescript expert, rest api graphql developer, freelance web developer france, saas mvp startup development">
<meta name="author" content="Killian Dalcin">
<meta name="robots" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1">
<meta name="language" content="English">
<meta name="revisit-after" content="3 days">
<meta name="geo.region" content="FR">
<meta name="geo.placename" content="France">
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website"> <meta property="og:type" content="website">
<meta property="og:locale" content="fr_FR"> <meta property="og:url" content="https://killiandalcin.fr">
<title>Killian - Développeur Full Stack</title> <meta property="og:title" content="Full Stack Developer Freelance Vue.js React Node.js | Killian Dalcin">
<meta property="og:description"
content="Need an expert Full Stack Developer? I create custom web applications, Discord bots and high-performance APIs. Modern technologies, clean code, fast delivery. Free consultation.">
<meta property="og:image" content="https://killiandalcin.fr/portfolio-preview.webp">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:locale" content="en_US">
<meta property="og:locale:alternate" content="fr_FR">
<meta property="og:site_name" content="Killian Dalcin - Full Stack Developer">
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:url" content="https://killiandalcin.fr">
<meta property="twitter:title" content="Full Stack Developer Freelance Vue.js React Node.js | Killian Dalcin">
<meta property="twitter:description"
content="Expert Full Stack Developer freelance. Custom web application development, Discord bots, high-performance APIs. Vue.js, React, Node.js. Free quote within 24h.">
<meta property="twitter:image" content="https://killiandalcin.fr/portfolio-preview.webp">
<meta property="twitter:creator" content="@killiandalcin">
<!-- Canonical URL -->
<link rel="canonical" href="https://killiandalcin.fr">
<!-- Favicon -->
<link rel="icon" href="/favicon.ico">
<link rel="icon" type="image/webp" href="/favicon.webp">
<link rel="manifest" href="/site.webmanifest">
<!-- Preconnect to external domains -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<!-- Theme Color -->
<meta name="theme-color" content="#111827" media="(prefers-color-scheme: dark)">
<meta name="theme-color" content="#2563eb" media="(prefers-color-scheme: light)">
<!-- Structured Data -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ProfessionalService",
"@id": "https://killiandalcin.fr/#organization",
"name": "Killian Dalcin - Full Stack Developer Freelance",
"alternateName": "Killian Dev",
"url": "https://killiandalcin.fr",
"logo": "https://killiandalcin.fr/logo.webp",
"image": "https://killiandalcin.fr/portfolio-preview.webp",
"description": "Full Stack Developer freelance expert in Vue.js, React and Node.js. Specialized in custom web application development, professional Discord bots and high-performance APIs.",
"priceRange": "€€€",
"telephone": "+33-649-193-816",
"email": "contact@killiandalcin.fr",
"address": {
"@type": "PostalAddress",
"addressCountry": "FR",
"addressRegion": "France"
},
"openingHoursSpecification": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "18:00"
},
"founder": {
"@type": "Person",
"name": "Killian Dalcin",
"jobTitle": "Senior Full Stack Developer",
"alumniOf": "Computer Engineering School",
"knowsAbout": ["Vue.js", "React", "Node.js", "TypeScript", "JavaScript", "MongoDB", "PostgreSQL", "Docker", "REST API", "GraphQL", "Discord.js", "Web Development", "Software Architecture"],
"sameAs": [
"https://github.com/killiandalcin",
"https://linkedin.com/in/killian-dalcin",
"https://www.fiverr.com/users/mr_kayjaydee",
"https://twitter.com/killiandalcin"
]
},
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Web Development Services",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Vue.js/React Web Application Development",
"description": "Creation of modern and high-performance web applications with Vue.js or React. Responsive user interface, SEO optimization, scalable architecture."
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Node.js Backend Development & API",
"description": "Design of robust REST and GraphQL APIs with Node.js. Microservices architecture, secure authentication, optimal performance."
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Custom Discord Bot Development",
"description": "Development of professional Discord bots with advanced features. Moderation, music, games, API integrations, web dashboard."
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Maintenance & Technical Support",
"description": "Continuous maintenance, security updates and technical support for your applications. 24/7 monitoring and rapid interventions."
}
}
]
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "5",
"bestRating": "5",
"worstRating": "1",
"ratingCount": "47",
"reviewCount": "47"
},
"review": [
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"author": {
"@type": "Person",
"name": "Marie L."
},
"reviewBody": "Excellent developer! Vue.js application delivered on time with exceptional code quality. I highly recommend."
},
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"author": {
"@type": "Person",
"name": "Thomas B."
},
"reviewBody": "Discord bot working perfectly with all requested features. Responsive and professional support. Thank you!"
}
]
}
</script>
<!-- Breadcrumb Schema -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://killiandalcin.fr"
}
]
}
</script>
<!-- FAQ Schema -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What are your rates for custom web development?",
"acceptedAnswer": {
"@type": "Answer",
"text": "My rates vary according to project complexity. A simple web application starts from €2000, while a complex platform can go up to €15000+. I always provide a detailed free quote within 24h after analyzing your needs."
}
},
{
"@type": "Question",
"name": "How long does it take to develop a Vue.js application?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The timeline depends on complexity: a simple application (3-5 pages) takes 2-3 weeks, a medium application (10-15 pages with backend) 4-8 weeks, and a complex platform 2-4 months. I always provide a detailed schedule."
}
},
{
"@type": "Question",
"name": "Do you offer maintenance after delivery?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, I offer monthly maintenance contracts including: security updates, bug fixes, small evolutions, 24/7 monitoring and technical support. Rates start from €300/month depending on your needs."
}
}
]
}
</script>
<script defer src="https://umami.killiandalcin.fr/script.js" <script defer src="https://umami.killiandalcin.fr/script.js"
data-website-id="bffa2341-3ab2-4c2c-96c9-f83ea7225a1b"></script> data-website-id="83631152-9b6b-4724-aad1-828459ff36dc"></script>
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>
<script type="module" src="/src/main.ts"></script> <script type="module" src="/src/main.ts"></script>
<!-- No JavaScript Fallback -->
<noscript>
<div style="text-align: center; padding: 2rem;">
<h1>JavaScript Required</h1>
<p>This portfolio requires JavaScript to function properly. Please enable JavaScript in your browser settings to
view the full experience.</p>
</div>
</noscript>
</body> </body>
</html> </html>

66
package-lock.json generated
View File

@@ -30,6 +30,7 @@
"postcss": "^8.5.6", "postcss": "^8.5.6",
"prettier": "3.5.3", "prettier": "3.5.3",
"tailwindcss": "^4.1.10", "tailwindcss": "^4.1.10",
"terser": "^5.43.1",
"typescript": "~5.8.0", "typescript": "~5.8.0",
"vite": "^6.2.4", "vite": "^6.2.4",
"vite-plugin-vue-devtools": "^7.7.2", "vite-plugin-vue-devtools": "^7.7.2",
@@ -1330,6 +1331,17 @@
"node": ">=6.0.0" "node": ">=6.0.0"
} }
}, },
"node_modules/@jridgewell/source-map": {
"version": "0.3.6",
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
"integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25"
}
},
"node_modules/@jridgewell/sourcemap-codec": { "node_modules/@jridgewell/sourcemap-codec": {
"version": "1.5.0", "version": "1.5.0",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
@@ -3001,6 +3013,13 @@
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
} }
}, },
"node_modules/buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"dev": true,
"license": "MIT"
},
"node_modules/bundle-name": { "node_modules/bundle-name": {
"version": "4.1.0", "version": "4.1.0",
"resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
@@ -3095,6 +3114,13 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true,
"license": "MIT"
},
"node_modules/concat-map": { "node_modules/concat-map": {
"version": "0.0.1", "version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -5356,6 +5382,16 @@
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/source-map-js": { "node_modules/source-map-js": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -5365,6 +5401,17 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/source-map-support": {
"version": "0.5.21",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
"integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
"dev": true,
"license": "MIT",
"dependencies": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
}
},
"node_modules/speakingurl": { "node_modules/speakingurl": {
"version": "14.0.1", "version": "14.0.1",
"resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz",
@@ -5486,6 +5533,25 @@
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/terser": {
"version": "5.43.1",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz",
"integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
"acorn": "^8.14.0",
"commander": "^2.20.0",
"source-map-support": "~0.5.20"
},
"bin": {
"terser": "bin/terser"
},
"engines": {
"node": ">=10"
}
},
"node_modules/tinyglobby": { "node_modules/tinyglobby": {
"version": "0.2.14", "version": "0.2.14",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",

View File

@@ -35,6 +35,7 @@
"postcss": "^8.5.6", "postcss": "^8.5.6",
"prettier": "3.5.3", "prettier": "3.5.3",
"tailwindcss": "^4.1.10", "tailwindcss": "^4.1.10",
"terser": "^5.43.1",
"typescript": "~5.8.0", "typescript": "~5.8.0",
"vite": "^6.2.4", "vite": "^6.2.4",
"vite-plugin-vue-devtools": "^7.7.2", "vite-plugin-vue-devtools": "^7.7.2",

1
public/ads.txt Normal file
View File

@@ -0,0 +1 @@
google.com, pub-5219367964457248, DIRECT, f08c47fec0942fa0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

BIN
public/favicon.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -6,19 +6,19 @@ Ce dossier doit contenir les images pour votre portfolio :
``` ```
images/ images/
├── virtualtour.png # Image du projet Virtual Tour ├── virtualtour.webp # Image du projet Virtual Tour
├── xinko.png # Image du projet Xinko ├── xinko.webp # Image du projet Xinko
├── dig.png # Image du projet Image Manipulation ├── dig.webp # Image du projet Image Manipulation
├── primate.png # Image du projet Primate Web Admin ├── primate.webp # Image du projet Primate Web Admin
├── instagram.png # Image du projet Instagram Bot ├── instagram.webp # Image du projet Instagram Bot
├── crowdin.png # Image du projet Crowdin Status Bot ├── crowdin.webp # Image du projet Crowdin Status Bot
└── tech/ # Dossier pour les logos des technologies └── tech/ # Dossier pour les logos des technologies
├── javascript.png ├── javascript.webp
├── typescript.png ├── typescript.webp
├── nodejs.png ├── nodejs.webp
├── vuejs.png ├── vuejs.webp
├── react.png ├── react.webp
├── angular.png ├── angular.webp
└── ... # Autres logos de technologies └── ... # Autres logos de technologies
``` ```

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

5
public/robots.txt Normal file
View File

@@ -0,0 +1,5 @@
User-agent: *
Disallow: /admin/
Disallow: /api/
Disallow: /*?*
Sitemap: https://killiandalcin.fr/sitemap.xml

35
public/site.webmanifest Normal file
View File

@@ -0,0 +1,35 @@
{
"name": "Killian - Full Stack Developer Portfolio",
"short_name": "Killian Portfolio",
"description": "Professional Full Stack Developer specializing in Vue.js, React, Node.js. Expert in Discord bots, web applications, and custom software solutions.",
"start_url": "/",
"display": "standalone",
"background_color": "#111827",
"theme_color": "#111827",
"orientation": "portrait-primary",
"icons": [
{
"src": "/favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
},
{
"src": "/favicon.webp",
"sizes": "192x192",
"type": "image/webp",
"purpose": "any maskable"
},
{
"src": "/favicon.webp",
"sizes": "512x512",
"type": "image/webp",
"purpose": "any maskable"
}
],
"categories": [
"productivity",
"developer",
"business"
],
"lang": "en-US"
}

86
public/sitemap.xml Normal file
View File

@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
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">
<!-- Home Page -->
<url>
<loc>https://killiandalcin.fr/</loc>
<lastmod>2025-07-07</lastmod>
</url>
<!-- Fiverr Services Page -->
<url>
<loc>https://killiandalcin.fr/fiverr</loc>
<lastmod>2025-07-07</lastmod>
</url>
<!-- Projects Portfolio Page -->
<url>
<loc>https://killiandalcin.fr/projects</loc>
<lastmod>2025-07-07</lastmod>
</url>
<!-- Contact Page -->
<url>
<loc>https://killiandalcin.fr/contact</loc>
<lastmod>2025-07-07</lastmod>
</url>
<!-- About Page -->
<url>
<loc>https://killiandalcin.fr/about</loc>
<lastmod>2025-07-07</lastmod>
</url>
<!-- Formation/Training Page -->
<url>
<loc>https://killiandalcin.fr/formation</loc>
<lastmod>2025-07-07</lastmod>
</url>
<!-- Dynamic Project Detail Pages -->
<!-- Virtual Tour Project -->
<url>
<loc>https://killiandalcin.fr/project/virtual-tour</loc>
<lastmod>2025-07-07</lastmod>
</url>
<!-- Xinko Discord Bot Project -->
<url>
<loc>https://killiandalcin.fr/project/xinko</loc>
<lastmod>2025-07-07</lastmod>
</url>
<!-- Image Manipulation NPM Package -->
<url>
<loc>https://killiandalcin.fr/project/image-manipulation</loc>
<lastmod>2025-07-07</lastmod>
</url>
<!-- Flowboard Project Management App -->
<url>
<loc>https://killiandalcin.fr/project/flowboard</loc>
<lastmod>2025-07-07</lastmod>
</url>
<!-- Primate Web Admin Project -->
<url>
<loc>https://killiandalcin.fr/project/primate-web-admin</loc>
<lastmod>2025-07-07</lastmod>
</url>
<!-- Instagram Bot Project -->
<url>
<loc>https://killiandalcin.fr/project/instagram-bot</loc>
<lastmod>2025-07-07</lastmod>
</url>
<!-- Crowdin Status Bot Project -->
<url>
<loc>https://killiandalcin.fr/project/crowdin-status-bot</loc>
<lastmod>2025-07-07</lastmod>
</url>
</urlset>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

BIN
src/assets/images/atom.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

BIN
src/assets/images/bash.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

BIN
src/assets/images/css.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 608 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

BIN
src/assets/images/dig.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 825 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 774 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 904 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 958 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

BIN
src/assets/images/git.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

BIN
src/assets/images/html.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

BIN
src/assets/images/ios.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

BIN
src/assets/images/logo.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

BIN
src/assets/images/mail.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 936 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Some files were not shown because too many files have changed in this diff Show More