Compare commits
16 Commits
f90f2bafa4
...
main
Author | SHA1 | Date | |
---|---|---|---|
![]() |
2378febe6f | ||
![]() |
c79b818302 | ||
![]() |
a8509416ae | ||
![]() |
481c753371 | ||
![]() |
6234e02fa7 | ||
![]() |
b0e5a81a84 | ||
![]() |
992dc45f29 | ||
![]() |
542c468eb3 | ||
![]() |
af1f47dbf3 | ||
![]() |
0d468841d3 | ||
![]() |
4784438b1d | ||
![]() |
06172aae62 | ||
![]() |
da79d5e2da | ||
![]() |
d8210e502c | ||
![]() |
104c667ab9 | ||
![]() |
82147b5ca6 |
232
README.md
@@ -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
|

|
||||||
|
|
||||||
[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
|
||||||
npm install
|
|
||||||
|
- **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
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Start development server**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Open in browser**
|
||||||
|
```
|
||||||
|
http://localhost:5173
|
||||||
|
```
|
||||||
|
|
||||||
|
### 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
|
||||||
```
|
```
|
||||||
|
|
||||||
### Compile and Hot-Reload for Development
|
## 🏗️ Project Structure
|
||||||
|
|
||||||
```sh
|
```
|
||||||
npm run dev
|
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
|
||||||
```
|
```
|
||||||
|
|
||||||
### Type-Check, Compile and Minify for Production
|
### Key Architecture Decisions
|
||||||
|
|
||||||
```sh
|
- **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_
|
||||||
|
251
index.html
@@ -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
@@ -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",
|
||||||
|
@@ -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
@@ -0,0 +1 @@
|
|||||||
|
google.com, pub-5219367964457248, DIRECT, f08c47fec0942fa0
|
Before Width: | Height: | Size: 45 KiB |
BIN
public/favicon.webp
Normal file
After Width: | Height: | Size: 19 KiB |
@@ -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
|
||||||
```
|
```
|
||||||
|
|
||||||
|
BIN
public/portfolio-preview.webp
Normal file
After Width: | Height: | Size: 22 KiB |
5
public/robots.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
User-agent: *
|
||||||
|
Disallow: /admin/
|
||||||
|
Disallow: /api/
|
||||||
|
Disallow: /*?*
|
||||||
|
Sitemap: https://killiandalcin.fr/sitemap.xml
|
35
public/site.webmanifest
Normal 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
@@ -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>
|
Before Width: | Height: | Size: 3.7 KiB |
BIN
src/assets/images/Rectangle 55.webp
Normal file
After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 5.5 KiB |
BIN
src/assets/images/android.webp
Normal file
After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 5.4 KiB |
BIN
src/assets/images/angular.webp
Normal file
After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 6.7 KiB |
BIN
src/assets/images/archlinux.webp
Normal file
After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 12 KiB |
BIN
src/assets/images/atom.webp
Normal file
After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 7.6 KiB |
BIN
src/assets/images/bash.webp
Normal file
After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 61 KiB |
BIN
src/assets/images/bootstrap.webp
Normal file
After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 16 KiB |
BIN
src/assets/images/crowdin.webp
Normal file
After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 4.6 KiB |
BIN
src/assets/images/css.webp
Normal file
After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 8.2 KiB |
BIN
src/assets/images/debian.webp
Normal file
After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 608 B |
BIN
src/assets/images/deepin.webp
Normal file
After Width: | Height: | Size: 384 B |
Before Width: | Height: | Size: 83 KiB |
BIN
src/assets/images/dig.webp
Normal file
After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 5.1 KiB |
BIN
src/assets/images/discord.webp
Normal file
After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 3.2 KiB |
BIN
src/assets/images/discordbot.webp
Normal file
After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 5.2 KiB |
BIN
src/assets/images/discordd.webp
Normal file
After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 8.1 KiB |
BIN
src/assets/images/docker.webp
Normal file
After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 2.1 KiB |
BIN
src/assets/images/facebook.webp
Normal file
After Width: | Height: | Size: 798 B |
Before Width: | Height: | Size: 8.6 KiB |
BIN
src/assets/images/figma.webp
Normal file
After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 6.7 KiB |
BIN
src/assets/images/filezilla.webp
Normal file
After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 825 KiB |
BIN
src/assets/images/fiverr/discord_bot.webp
Normal file
After Width: | Height: | Size: 228 KiB |
Before Width: | Height: | Size: 774 KiB |
BIN
src/assets/images/fiverr/minecraft_plugin.webp
Normal file
After Width: | Height: | Size: 144 KiB |
Before Width: | Height: | Size: 904 KiB |
BIN
src/assets/images/fiverr/telegram_bot.webp
Normal file
After Width: | Height: | Size: 262 KiB |
Before Width: | Height: | Size: 958 KiB |
BIN
src/assets/images/fiverr/website.webp
Normal file
After Width: | Height: | Size: 112 KiB |
BIN
src/assets/images/flowboard/flowboard_1.webp
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
src/assets/images/flowboard/flowboard_2.webp
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
src/assets/images/flowboard/flowboard_3.webp
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
src/assets/images/flowboard/flowboard_4.webp
Normal file
After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 4.4 KiB |
BIN
src/assets/images/git.webp
Normal file
After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 8.3 KiB |
BIN
src/assets/images/github.webp
Normal file
After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 10 KiB |
BIN
src/assets/images/gitkraken.webp
Normal file
After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 6.0 KiB |
BIN
src/assets/images/gitlab.webp
Normal file
After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 77 KiB |
BIN
src/assets/images/heidisql.webp
Normal file
After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 5.0 KiB |
BIN
src/assets/images/html.webp
Normal file
After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 12 KiB |
BIN
src/assets/images/instagram.webp
Normal file
After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 22 KiB |
BIN
src/assets/images/instagramd.webp
Normal file
After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 3.8 KiB |
BIN
src/assets/images/ios.webp
Normal file
After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 3.5 KiB |
BIN
src/assets/images/javascript.webp
Normal file
After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 4.7 KiB |
BIN
src/assets/images/kalilinux.webp
Normal file
After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 5.2 KiB |
BIN
src/assets/images/linkedin.webp
Normal file
After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 3.1 KiB |
BIN
src/assets/images/linkedind.webp
Normal file
After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 12 KiB |
BIN
src/assets/images/linux.webp
Normal file
After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 45 KiB |
BIN
src/assets/images/logo.webp
Normal file
After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 7.8 KiB |
BIN
src/assets/images/macos.webp
Normal file
After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 6.8 KiB |
BIN
src/assets/images/mail.webp
Normal file
After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 1.9 KiB |
BIN
src/assets/images/markdown.webp
Normal file
After Width: | Height: | Size: 936 B |
Before Width: | Height: | Size: 15 KiB |
BIN
src/assets/images/messenger.webp
Normal file
After Width: | Height: | Size: 2.9 KiB |