feat(hytale): implement Hytale plugin development page and related components

- Added a new `/hytale` page with sections for hero, services, and pricing.
- Updated existing components to support Hytale-specific content and i18n.
- Modified site configuration and state to reflect the new focus on Hytale plugin development.
- Enhanced testimonials section to feature relevant client feedback.
- Adjusted navigation to include a link to the new Hytale page.
This commit is contained in:
2026-04-11 04:19:27 +02:00
parent 4fc78bd414
commit 85fe859612
17 changed files with 1080 additions and 201 deletions
+3 -3
View File
@@ -2,12 +2,12 @@
gsd_state_version: 1.0 gsd_state_version: 1.0
milestone: v1.0 milestone: v1.0
milestone_name: milestone milestone_name: milestone
status: Ready to plan status: Ready to execute
last_updated: "2026-04-10T17:20:26.905Z" last_updated: "2026-04-11T01:59:47.507Z"
progress: progress:
total_phases: 4 total_phases: 4
completed_phases: 0 completed_phases: 0
total_plans: 2 total_plans: 5
completed_plans: 0 completed_plans: 0
percent: 0 percent: 0
--- ---
+2 -1
View File
@@ -27,7 +27,8 @@
"discuss_mode": "discuss", "discuss_mode": "discuss",
"skip_discuss": false, "skip_discuss": false,
"code_review": true, "code_review": true,
"code_review_depth": "standard" "code_review_depth": "standard",
"_auto_chain_active": false
}, },
"hooks": { "hooks": {
"context_warnings": true "context_warnings": true
+489
View File
@@ -0,0 +1,489 @@
# Phase 2: Content - Research
**Researched:** 2026-04-10
**Domain:** Nuxt 4 page authoring, i18n content, Nuxt UI v3 pricing grids, testimonials carousel
**Confidence:** HIGH
---
<user_constraints>
## User Constraints (from CONTEXT.md)
### Locked Decisions
- **D-01:** H1 = "Hytale Plugin Developer" — positionnement niche direct, pas de titre generique
- **D-02:** CTAs = Discord (profil personnel pour l'instant) + Contact
- **D-03:** Badge "Available for projects" → passer en i18n (FR: "Disponible pour vos projets")
- **D-04:** Sous-titre angle benefice client : "Des plugins performants et sur-mesure pour votre serveur Hytale"
- **D-05:** Layout hero = garder le grid 2 colonnes (texte gauche, placeholder/illustration droite)
- **D-06:** Pas d'image pour l'instant cote droit — placeholder en attendant des assets Hytale
- **D-07:** Lien Discord = profil personnel existant dans site.ts (provisoire)
- **D-08:** Page /hytale avec 4 sections : hero dedie Hytale, services/expertise, grille tarifaire, temoignages
- **D-09:** 4-5 tiers de pricing : plugin simple / complexe / sur-mesure / maintenance / web
- **D-10:** Prix en mode mix : prix fixes pour simple/maintenance, sur devis pour complexe/sur-mesure
- **D-11:** CTA de chaque tier = "Demander un devis" → redirige vers /contact
- **D-12:** Pas de demos — Hytale est sorti (janvier 2026), mais pas d'assets a montrer
- **D-13:** Garder les 5 temoignages Fiverr existants tels quels
- **D-14:** Pas de nouveaux temoignages Hytale a ajouter pour l'instant
- **D-15:** Homepage : 2-3 featured en carousel. Page /hytale : tous les 5 en carousel avec plus de details
- **D-16:** Corriger totalReviews : le vrai nombre est 5, pas 10 ni 50
- **D-17:** Format d'affichage = carousel/slider sur les deux pages
- **D-18:** Positionnement Hytale-first, web secondaire
- **D-19:** Toutes les pages existantes restent (about, projects, fiverr, contact), on ajoute /hytale
- **D-20:** siteConfig.title = "Killian' DAL-CIN - Hytale Plugin Developer | Freelance"
- **D-21:** jobTitle dans site.ts = "Hytale Plugin Developer" (SEO-05)
### Claude's Discretion
- Stats/chiffres cles dans le hero : Claude decide si pertinent pour la conversion
### Deferred Ideas (OUT OF SCOPE)
None — discussion stayed within phase scope
</user_constraints>
---
<phase_requirements>
## Phase Requirements
| ID | Description | Research Support |
|----|-------------|------------------|
| CONT-01 | Refonte Hero accueil — "Hytale Plugin Developer" en H1, CTA Discord/contact, bilingue | HeroSection.vue existant a adapter; i18n keys home.title, home.subtitle, home.cta.* a remplacer |
| CONT-02 | Page Hytale dediee `/hytale` — services plugin dev, tiers pricing, demos placeholders, maintenance, bilingue | Nouvelle page `app/pages/hytale.vue` + sections composees; pattern identique a index.vue |
| CONT-03 | Grille tarifaire — plugin simple/complexe/sur-mesure/maintenance/web avec prix visibles | UCard Nuxt UI v3 en grid; data statique dans app/data/; i18n keys hytale.pricing.* |
| CONT-04 | Temoignages — section featured + stats sur homepage et page Hytale (5 avis Fiverr existants) | TestimonialsSection.vue reutilisable; prop `featured` deja presente sur Testimonial type; corriger totalReviews: 5 |
| SEO-05 | jobTitle corrige — "Hytale Plugin Developer" dans site.ts et JSON-LD | site.ts: title + ajouter jobTitle field; index.vue JSON-LD Person.jobTitle a mettre a jour |
</phase_requirements>
---
## Summary
Phase 2 est une phase de contenu pur dans un codebase Nuxt 4 SSR deja fonctionnel. L'infrastructure (routing, i18n, Nuxt UI v3, layouts) existe et fonctionne. Le travail consiste a adapter des composants existants et creer une nouvelle page `/hytale` en suivant des patterns deja etablis dans le projet.
Le principal risque est la coherence i18n : chaque string visible doit avoir une cle dans `fr.json` ET `en.json`. Le codebase a deja des strings hardcodees (badge "Available for projects" dans HeroSection.vue ligne 31, floating cards "50+ projects" et "5.0 rating" lignes 148-153) qui doivent passer en i18n dans cette phase. Les donnees incoherentes (`totalReviews: 10`, `reviewCount: '10'` dans site.ts) doivent etre corrigees a 5.
**Primary recommendation:** Adapter HeroSection existant (pas recreer), creer hytale.vue en composant sections reutilisables, tout le nouveau contenu passe par i18n avant d'atterrir dans le template.
---
## Standard Stack
### Core (deja installe dans le projet)
| Library | Version | Purpose | Why Standard |
|---------|---------|---------|--------------|
| Nuxt 4 | installed | SSR framework, auto-routing `app/pages/` | Stack decide en phase 1 |
| Nuxt UI v3 | installed | UCard, UButton, UBadge pour pricing grid | Constraint CLAUDE.md: Nuxt UI v3 en priorite |
| @nuxtjs/i18n | installed | useI18n(), useLocalePath(), fr/en JSON | Pattern etabli dans tout le projet |
| Tailwind v4 | installed | Classes utilitaires CSS | Stack decide |
### Patterns etablis dans le projet [VERIFIED: codebase]
- Pages: `app/pages/nom.vue` → route `/nom` automatique (Nuxt auto-routing)
- Sections: `app/components/sections/NomSection.vue` composees dans les pages
- i18n: `useI18n()` dans `<script setup>`, cles dans `i18n/locales/fr.json` et `en.json`
- SEO: `useSeoMeta()` + `useHead()` en haut de chaque page vue
- Data statique typee: `app/data/nom.ts` exportant des constantes typees avec `~~/shared/types`
- Images: `NuxtImg` avec `loading="lazy"` pour les non-critiques
### Alternatives Considered
Aucune — tout le stack est verrouille par CLAUDE.md et les phases precedentes.
---
## Architecture Patterns
### Recommended Project Structure (extensions pour phase 2)
```
app/
├── pages/
│ ├── index.vue # MODIFIER: hero Hytale + temoignages featured
│ └── hytale.vue # CREER: page dediee Hytale
├── components/
│ └── sections/
│ ├── HeroSection.vue # MODIFIER: H1 Hytale, CTAs Discord+Contact, i18n badge
│ ├── TestimonialsSection.vue # MODIFIER: prop featured pour filtrage homepage
│ └── hytale/
│ ├── HytaleHeroSection.vue # CREER: hero dedie page /hytale
│ ├── HytalePricingSection.vue # CREER: grille tarifaire 4-5 tiers
│ └── HytaleServicesSection.vue # CREER: expertise/services Hytale (optionnel si ServicesSection adaptable)
├── data/
│ ├── site.ts # MODIFIER: title, jobTitle, reviewCount corriges
│ ├── testimonials.ts # MODIFIER: totalReviews: 5 (correction FIX-04)
│ └── pricing.ts # CREER: tiers de pricing Hytale
i18n/
├── locales/
│ ├── fr.json # MODIFIER: ajouter hytale.*, corriger home.*, testimonials.*
│ └── en.json # MODIFIER: idem, toutes les cles FR doivent exister en EN
shared/
└── types/
└── index.ts # MODIFIER si besoin: PricingTier interface, jobTitle dans SiteConfig
```
### Pattern 1: Nouvelle page Nuxt avec sections composees
**What:** `app/pages/hytale.vue` suit exactement le pattern de `index.vue`
**When to use:** Toujours — c'est le pattern etabli du projet
```typescript
// Source: app/pages/index.vue (pattern existant)
<script setup lang="ts">
const { t } = useI18n()
useSeoMeta({
title: () => t('seo.hytale.title'),
description: () => t('seo.hytale.description'),
ogTitle: () => t('seo.hytale.title'),
ogDescription: () => t('seo.hytale.description'),
ogImage: 'https://killiandalcin.fr/og-image.png',
ogType: 'website',
})
useHead({
script: [{
type: 'application/ld+json',
innerHTML: JSON.stringify({
'@context': 'https://schema.org',
'@type': 'Service',
name: 'Hytale Plugin Development',
provider: { '@type': 'Person', name: "Killian' DAL-CIN" },
}),
}],
})
</script>
<template>
<div>
<HytaleHeroSection />
<HytaleServicesSection />
<HytalePricingSection />
<TestimonialsSection /> <!-- reutilise tel quel, tous les 5 -->
</div>
</template>
```
### Pattern 2: Pricing grid avec Nuxt UI v3 UCard
**What:** Grid de cards avec UCard pour chaque tier de pricing
**When to use:** Section HytalePricingSection.vue
```typescript
// Source: [ASSUMED] Nuxt UI v3 UCard pattern — a verifier contre docs officielles si besoin
// Pattern repris du design Fiverr existant (app/pages/fiverr.vue)
<template>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<UCard v-for="tier in pricingTiers" :key="tier.id"
:class="tier.featured ? 'ring-2 ring-brand-500' : ''">
<template #header>
<h3>{{ t(`hytale.pricing.${tier.id}.name`) }}</h3>
<p class="text-3xl font-bold">{{ tier.price }}</p>
</template>
<ul>
<li v-for="feature in tier.features" :key="feature">
<UIcon name="i-lucide-check" /> {{ t(`hytale.pricing.${tier.id}.features.${feature}`) }}
</li>
</ul>
<template #footer>
<UButton :to="localePath('/contact')" block>
{{ t('hytale.pricing.cta') }}
</UButton>
</template>
</UCard>
</div>
</template>
```
### Pattern 3: TestimonialsSection avec prop featured
**What:** La section temoignages existante supporte deja `featured?: boolean` sur le type `Testimonial`. Pour la homepage, filtrer sur `featured: true` (2-3 temoignages). Pour /hytale, afficher tous les 5.
**When to use:** Homepage = `testimonials.filter(t => t.featured)`, /hytale = `testimonials` complet
```typescript
// Source: app/components/sections/TestimonialsSection.vue (existant)
// app/data/testimonials.ts: seul unqlf_ a featured: true actuellement
// → marquer 2-3 comme featured pour la homepage
// Prop a ajouter a TestimonialsSection.vue:
const props = defineProps<{
featured?: boolean
}>()
const displayed = computed(() =>
props.featured ? testimonials.filter(t => t.featured) : testimonials
)
```
### Pattern 4: i18n — procedure d'ajout de cles
**What:** Toute string visible doit etre dans les deux fichiers JSON
**When to use:** A chaque nouveau texte ajoute
```
Procedure:
1. Definir la cle dans fr.json avec la valeur FR
2. Ajouter la meme cle dans en.json avec la valeur EN
3. Utiliser t('cle') dans le template — jamais de string literale visible
```
### Anti-Patterns to Avoid
- **String hardcodee dans le template:** `HeroSection.vue` ligne 31 a "Available for projects" en dur → doit devenir `{{ t('home.badge.available') }}`
- **Floating cards hardcodees:** Lignes 148-153 de HeroSection.vue ont "50+ projects" et "5.0 rating" en dur → i18n ou supprimer
- **Copier-coller de sections entières:** Adapter `TestimonialsSection` via prop plutot que dupliquer
- **Donnees incoherentes:** `totalReviews: 10` dans testimonials.ts ET `reviewCount: '10'` dans site.ts → les deux a corriger a 5
---
## Don't Hand-Roll
| Problem | Don't Build | Use Instead | Why |
|---------|-------------|-------------|-----|
| Pricing cards | Custom card HTML | `UCard` Nuxt UI v3 | Deja installe, coherent avec le design system |
| Boutons CTA | `<a>` custom | `UButton` avec `:to` | Routing i18n automatique via `localePath()` |
| Navigation vers /hytale | Modifier le HTML du header | Ajouter entree dans `navLinks` computed de AppHeader.vue | Pattern etabli, une seule ligne a ajouter |
| Carousel/slider JS custom | Implementer swipe events | `overflow-x-auto snap-x` CSS (deja dans TestimonialsSection) | Le composant existant utilise deja ce pattern CSS |
**Key insight:** 80% de cette phase est de la configuration de donnees et d'i18n, pas du nouveau code UI.
---
## Common Pitfalls
### Pitfall 1: Oublier la cle EN quand on ajoute une cle FR
**What goes wrong:** La page `/en/hytale` affiche la cle brute (ex: "hytale.pricing.cta") au lieu du texte
**Why it happens:** fr.json mis a jour, en.json oublie
**How to avoid:** Toujours editer les deux fichiers en meme temps
**Warning signs:** `curl localhost:3000/en/hytale | grep "hytale\."` retourne des resultats
### Pitfall 2: jobTitle manquant dans SiteConfig type
**What goes wrong:** TypeScript strict mode refuse `siteConfig.jobTitle = '...'` si le champ n'est pas dans l'interface
**Why it happens:** `SiteConfig` dans `shared/types/index.ts` n'a pas de champ `jobTitle` actuellement
**How to avoid:** Ajouter `jobTitle?: string` a l'interface avant de l'utiliser dans site.ts
**Warning signs:** Erreur `vue-tsc` au build
### Pitfall 3: Navigation /hytale absente du header mobile
**What goes wrong:** Le lien /hytale est visible sur desktop mais pas dans le menu mobile
**Why it happens:** `navLinks` dans AppHeader.vue alimente a la fois le nav desktop et le drawer mobile — une seule entree suffit si le composant est bien structure
**How to avoid:** Verifier que le drawer mobile utilise bien la meme `navLinks` computed (c'est le cas dans le pattern actuel)
### Pitfall 4: TestimonialsSection importe directement les donnees (pas de prop)
**What goes wrong:** Pour filtrer les featured sur la homepage, il faut refactorer le composant
**Why it happens:** `TestimonialsSection.vue` importe `testimonials` directement (ligne 2 du composant)
**How to avoid:** Ajouter une prop optionnelle `featured?: boolean` et filtrer le tableau en interne — ca ne casse pas l'usage existant sur fiverr.vue et contact.vue s'ils l'utilisent
### Pitfall 5: reviewCount incoherent entre site.ts et testimonials.ts
**What goes wrong:** `aggregateRating.reviewCount: '10'` dans site.ts et `totalReviews: 10` dans testimonials.ts alors que la decision D-16 dit 5
**Why it happens:** FIX-04 du REQUIREMENTS.md cible cette incohererence
**How to avoid:** Les deux doivent etre corriges a 5 dans la meme tache
---
## Code Examples
### Mise a jour HeroSection.vue — badge i18n
```typescript
// AVANT (hardcode, ligne 31):
<span class="text-sm font-medium text-brand-700 dark:text-brand-400">Available for projects</span>
// APRES (i18n):
<span class="text-sm font-medium text-brand-700 dark:text-brand-400">{{ t('home.badge.available') }}</span>
// fr.json: "home": { "badge": { "available": "Disponible pour vos projets" } }
// en.json: "home": { "badge": { "available": "Available for projects" } }
```
### Mise a jour HeroSection.vue — H1 Hytale
```typescript
// i18n keys a remplacer dans fr.json:
// "home": {
// "title": "Hytale Plugin Developer", ← H1 (D-01)
// "subtitle": "Des plugins performants et sur-mesure pour votre serveur Hytale", ← D-04
// "cta": {
// "viewProjects": "Voir mes projets",
// "discord": "Rejoindre sur Discord", ← D-02
// "contactMe": "Devis Gratuit Sous 24h"
// }
// }
```
### Structure data pricing.ts a creer
```typescript
// app/data/pricing.ts
import type { PricingTier } from '~~/shared/types'
export const hytalepricing: PricingTier[] = [
{ id: 'simple', priceFixed: '150€', featured: false },
{ id: 'complex', priceFixed: null, priceLabel: 'Sur devis', featured: true },
{ id: 'custom', priceFixed: null, priceLabel: 'Sur devis', featured: false },
{ id: 'maintenance', priceFixed: '50€/mo', featured: false },
{ id: 'web', priceFixed: '300€', featured: false },
]
// Interface a ajouter dans shared/types/index.ts:
export interface PricingTier {
id: string
priceFixed: string | null
priceLabel?: string
featured?: boolean
}
```
### Correction site.ts
```typescript
// MODIFIER dans app/data/site.ts:
export const siteConfig: SiteConfig = {
title: "Killian' DAL-CIN - Hytale Plugin Developer | Freelance", // D-20
jobTitle: 'Hytale Plugin Developer', // D-21 / SEO-05
// ...
seo: {
organization: {
aggregateRating: {
ratingValue: '5',
reviewCount: '5', // D-16: correction de 10 → 5
},
},
},
}
```
### Correction testimonials.ts
```typescript
// MODIFIER totalReviews:
export const testimonialsStats: TestimonialsStats = {
totalReviews: 5, // D-16: correction de 10 → 5
averageRating: 5.0,
projectsCompleted: 25, // conserver (plausible)
}
// Marquer 2-3 comme featured pour la homepage:
{ name: 'unqlf_', featured: true, ... }, // deja featured
{ name: 'colo263', featured: true, ... }, // a ajouter
{ name: 'cobra2', featured: true, ... }, // a ajouter (3 max)
```
### Ajout lien /hytale dans AppHeader.vue
```typescript
// MODIFIER navLinks dans app/components/layout/AppHeader.vue:
const navLinks = computed(() => [
{ key: 'home', path: '/' },
{ key: 'hytale', path: '/hytale' }, // ← AJOUTER
{ key: 'projects', path: '/projects' },
{ key: 'about', path: '/about' },
{ key: 'contact', path: '/contact' },
{ key: 'fiverr', path: '/fiverr' },
])
// fr.json: "nav": { "hytale": "Hytale" }
// en.json: "nav": { "hytale": "Hytale" }
```
---
## State of the Art
| Old Approach | Current Approach | When Changed | Impact |
|--------------|------------------|--------------|--------|
| Strings hardcodees dans HeroSection | i18n via t() | Phase 2 | Obligation pour bilingue et success criteria CONT-01 |
| `totalReviews: 10` | `totalReviews: 5` | Phase 2 | Correction donnees incoherentes (FIX-04) |
| `jobTitle: 'Full Stack...'` dans JSON-LD | `jobTitle: 'Hytale Plugin Developer'` | Phase 2 | SEO-05 |
**Deprecated/outdated dans le contexte de cette phase:**
- CTAs "view projects" / "fiverr" dans le hero → remplacer par Discord + Contact (D-02)
- titre site.ts "Full Stack Developer | Vue.js, React, Node.js Expert" → D-20
---
## Open Questions
1. **Prix concrets pour les tiers de pricing**
- What we know: D-09/D-10 definissent les tiers et le mode (fixe vs devis)
- What's unclear: Les montants exacts (ex: "150€" pour plugin simple est une estimation du researcher)
- Recommendation: Claude utilise des prix plausibles basés sur le marche freelance FR; Killian peut les ajuster apres livraison
2. **Stats hero — chiffres pertinents ?**
- What we know: D-Discretion laisse ca a Claude
- What's unclear: "7 ans d'experience" et "5 avis Fiverr" sont des chiffres modestes pour un hero
- Recommendation: Garder les floating cards (50+ projects, 5.0 rating) mais les passer en i18n; ne pas afficher de chiffres trompeurs
3. **CTA Discord dans le hero — 2 ou 3 boutons ?**
- What we know: D-02 = Discord + Contact. Le hero actuel a 3 boutons (projects, fiverr, contact)
- What's unclear: Garder "voir mes projets" en 3e bouton ou seulement Discord + Contact ?
- Recommendation: 3 boutons: Discord (primaire), Contact (secondaire), Hytale (tertiaire) — maximize conversion
---
## Environment Availability
Step 2.6: SKIPPED — phase purement contenu/code, pas de dependances externes nouvelles. Le stack est deja installe depuis Phase 1.
---
## Validation Architecture
> `workflow.nyquist_validation` non trouve dans `.planning/config.json` → traite comme enabled.
### Test Framework
| Property | Value |
|----------|-------|
| Framework | Pas de framework de test detecte dans le projet |
| Config file | none |
| Quick run command | `curl localhost:3000 \| grep -i hytale` (smoke test manuel) |
| Full suite command | `pnpm build && pnpm preview` + verification manuelle |
### Phase Requirements → Test Map
| Req ID | Behavior | Test Type | Automated Command | File Exists? |
|--------|----------|-----------|-------------------|-------------|
| CONT-01 | H1 contient "Hytale" sur homepage | smoke | `curl localhost:3000 \| grep -i '<h1'` | ❌ Wave 0 |
| CONT-02 | /hytale existe avec 3+ tiers pricing | smoke | `curl localhost:3000/hytale \| grep -i 'devis'` | ❌ Wave 0 |
| CONT-03 | 4-5 tiers visibles dans /hytale | smoke | `curl localhost:3000/hytale \| grep -c 'tier\|pricing'` | ❌ Wave 0 |
| CONT-04 | Temoignages sur homepage ET /hytale | smoke | `curl localhost:3000 \| grep -i 'fiverr'` | ❌ Wave 0 |
| SEO-05 | jobTitle dans site.ts | manual | `grep "Hytale Plugin Developer" app/data/site.ts` | ❌ Wave 0 |
### Sampling Rate
- **Per task commit:** `pnpm dev` + verification visuelle en browser
- **Per wave merge:** `pnpm build` green + smoke curl tests
- **Phase gate:** Success criteria du ROADMAP verifies avant `/gsd-verify-work`
### Wave 0 Gaps
- [ ] Pas de framework de test installe — tests = smoke curl + verification manuelle selon success criteria
*(Note: Le REQUIREMENTS.md marque "Tests automatises: Ship d'abord, tests ensuite" — Out of Scope)*
---
## Security Domain
> Aucune nouvelle surface d'attaque introduite dans cette phase. Contenu statique SSR + i18n + data files. Pas de nouveaux endpoints API. Pas d'input utilisateur ajoutee.
Applicable ASVS: V5 Input Validation — N/A (pas de nouveau formulaire). Toutes les donnees sont statiques et typees TypeScript.
---
## Assumptions Log
| # | Claim | Section | Risk if Wrong |
|---|-------|---------|---------------|
| A1 | Prix "150€" pour plugin simple Hytale | Code Examples / pricing.ts | Killian doit ajuster — donnees affichees aux visiteurs |
| A2 | Ajouter `featured: true` a colo263 et cobra2 pour la homepage | Code Examples | Killian peut choisir d'autres temoignages featured |
| A3 | `projectsCompleted: 25` conserve dans testimonialsStats | Code Examples | Killian confirme si le chiffre est exact |
---
## Sources
### Primary (HIGH confidence)
- `app/components/sections/HeroSection.vue` — strings hardcodees identifiees (lignes 31, 148, 152)
- `app/data/testimonials.ts` — totalReviews: 10, 1 temoignage featured
- `app/data/site.ts` — title et jobTitle actuels, reviewCount: '10'
- `app/components/layout/AppHeader.vue` — pattern navLinks, navigation structure
- `app/pages/index.vue` — pattern useSeoMeta + useHead + sections composees
- `i18n/locales/fr.json` — structure des cles existantes, home.title actuel
- `shared/types/index.ts` — interfaces TypeScript existantes (SiteConfig sans jobTitle)
### Secondary (MEDIUM confidence)
- [ASSUMED] Pattern UCard Nuxt UI v3 pour pricing — a verifier contre docs si comportement inattendu
---
## Metadata
**Confidence breakdown:**
- Fichiers a modifier: HIGH — codebase lu directement
- Patterns a suivre: HIGH — indexes dans des fichiers existants fonctionnels
- Contenu prix/temoignages: LOW — hypotheses sur les montants, Killian valide
- i18n keys a creer: HIGH — structure claire, pattern etabli
**Research date:** 2026-04-10
**Valid until:** 2026-05-10 (stack stable, contenu peut changer)
+1
View File
@@ -7,6 +7,7 @@ const mobileOpen = ref(false)
const navLinks = computed(() => [ const navLinks = computed(() => [
{ key: 'home', path: '/' }, { key: 'home', path: '/' },
{ key: 'hytale', path: '/hytale' },
{ key: 'projects', path: '/projects' }, { key: 'projects', path: '/projects' },
{ key: 'about', path: '/about' }, { key: 'about', path: '/about' },
{ key: 'contact', path: '/contact' }, { key: 'contact', path: '/contact' },
+23 -25
View File
@@ -1,6 +1,10 @@
<script setup lang="ts"> <script setup lang="ts">
import { siteConfig } from '~/data/site'
const { t } = useI18n() const { t } = useI18n()
const localePath = useLocalePath() const localePath = useLocalePath()
const discordUrl = siteConfig.social.find(s => s.name === 'Discord')?.url ?? '#'
</script> </script>
<template> <template>
@@ -27,16 +31,14 @@ const localePath = useLocalePath()
<span class="animate-ping absolute inline-flex h-full w-full rounded-full bg-brand-400 opacity-75" /> <span class="animate-ping absolute inline-flex h-full w-full rounded-full bg-brand-400 opacity-75" />
<span class="relative inline-flex rounded-full h-2 w-2 bg-brand-500" /> <span class="relative inline-flex rounded-full h-2 w-2 bg-brand-500" />
</span> </span>
<span class="text-sm font-medium text-brand-700 dark:text-brand-400">Available for projects</span> <span class="text-sm font-medium text-brand-700 dark:text-brand-400">{{ t('home.badge.available') }}</span>
</div> </div>
<div class="space-y-4"> <div class="space-y-4">
<h1 class="text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-extrabold tracking-tight leading-[1.1]"> <h1 class="text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-extrabold tracking-tight leading-[1.1]">
<span class="text-gray-900 dark:text-white">{{ t('home.title').split(' ').slice(0, -2).join(' ') }}
</span>
<span <span
class="bg-gradient-to-r from-brand-500 via-brand-400 to-emerald-400 bg-clip-text text-transparent">{{ class="bg-gradient-to-r from-brand-500 via-brand-400 to-emerald-400 bg-clip-text text-transparent">{{
t('home.title').split(' ').slice(-2).join(' ') }}</span> t('home.title') }}</span>
</h1> </h1>
<p class="text-lg sm:text-xl text-gray-600 dark:text-gray-400 max-w-xl leading-relaxed"> <p class="text-lg sm:text-xl text-gray-600 dark:text-gray-400 max-w-xl leading-relaxed">
{{ t('home.subtitle') }} {{ t('home.subtitle') }}
@@ -45,27 +47,23 @@ const localePath = useLocalePath()
<!-- CTA Buttons --> <!-- CTA Buttons -->
<div class="flex flex-col sm:flex-row gap-3"> <div class="flex flex-col sm:flex-row gap-3">
<NuxtLink <UButton
:to="localePath('/projects')" :to="discordUrl"
class="inline-flex items-center justify-center gap-2 px-6 py-3 rounded-xl bg-brand-500 hover:bg-brand-600 text-white font-semibold text-sm transition-all duration-200 shadow-lg shadow-brand-500/25 hover:shadow-brand-500/40" target="_blank"
rel="noopener"
color="primary"
icon="i-simple-icons-discord"
size="lg"
> >
{{ t('home.cta.viewProjects') }} {{ t('home.cta.discord') }}
<UIcon name="i-lucide-arrow-right" class="w-4 h-4" /> </UButton>
</NuxtLink> <UButton
<NuxtLink
:to="localePath('/fiverr')"
class="inline-flex items-center justify-center gap-2 px-6 py-3 rounded-xl border border-gray-300 dark:border-gray-700 text-gray-700 dark:text-gray-300 hover:border-brand-500/50 hover:text-brand-500 font-semibold text-sm transition-all duration-200"
>
{{ t('nav.fiverr') }}
<UIcon name="i-lucide-external-link" class="w-4 h-4" />
</NuxtLink>
<NuxtLink
:to="localePath('/contact')" :to="localePath('/contact')"
class="inline-flex items-center justify-center gap-2 px-6 py-3 rounded-xl text-gray-600 dark:text-gray-400 hover:text-brand-500 font-semibold text-sm transition-all duration-200" variant="outline"
size="lg"
> >
{{ t('home.cta.contactMe') }} {{ t('home.cta.contact') }}
<UIcon name="i-lucide-message-circle" class="w-4 h-4" /> </UButton>
</NuxtLink>
</div> </div>
</div> </div>
@@ -101,7 +99,7 @@ const localePath = useLocalePath()
</div> </div>
<div class="pl-6"> <div class="pl-6">
<span class="text-purple-500 dark:text-purple-400">role</span><span class="text-gray-500">: </span> <span class="text-purple-500 dark:text-purple-400">role</span><span class="text-gray-500">: </span>
<span class="text-amber-600 dark:text-amber-400">'Full Stack Dev'</span><span <span class="text-amber-600 dark:text-amber-400">'{{ t('home.terminal.role') }}'</span><span
class="text-gray-500">,</span> class="text-gray-500">,</span>
</div> </div>
<div class="pl-6"> <div class="pl-6">
@@ -144,12 +142,12 @@ const localePath = useLocalePath()
<div <div
class="absolute -top-4 -right-4 px-3 py-2 rounded-lg bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 shadow-lg text-xs font-medium flex items-center gap-2"> class="absolute -top-4 -right-4 px-3 py-2 rounded-lg bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 shadow-lg text-xs font-medium flex items-center gap-2">
<span class="w-2 h-2 rounded-full bg-brand-500" /> <span class="w-2 h-2 rounded-full bg-brand-500" />
<span class="text-gray-700 dark:text-gray-300">50+ projects</span> <span class="text-gray-700 dark:text-gray-300">{{ t('home.stats.projects') }}</span>
</div> </div>
<div <div
class="absolute -bottom-3 -left-3 px-3 py-2 rounded-lg bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 shadow-lg text-xs font-medium flex items-center gap-2"> class="absolute -bottom-3 -left-3 px-3 py-2 rounded-lg bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 shadow-lg text-xs font-medium flex items-center gap-2">
<UIcon name="i-lucide-star" class="text-yellow-400 w-3.5 h-3.5" /> <UIcon name="i-lucide-star" class="text-yellow-400 w-3.5 h-3.5" />
<span class="text-gray-700 dark:text-gray-300">5.0 rating</span> <span class="text-gray-700 dark:text-gray-300">{{ t('home.stats.rating') }}</span>
</div> </div>
</div> </div>
</div> </div>
@@ -1,7 +1,13 @@
<script setup lang="ts"> <script setup lang="ts">
import { testimonials, testimonialsStats } from '~/data/testimonials' import { testimonials, testimonialsStats } from '~/data/testimonials'
const props = defineProps<{
featured?: boolean
}>()
const { t } = useI18n() const { t } = useI18n()
const displayed = computed(() => props.featured ? testimonials.filter(t => t.featured) : testimonials)
</script> </script>
<template> <template>
@@ -34,7 +40,7 @@ const { t } = useI18n()
<!-- Horizontal scrolling testimonials --> <!-- Horizontal scrolling testimonials -->
<div class="flex gap-5 overflow-x-auto overflow-y-visible pb-8 -mx-4 px-4 pt-2 snap-x snap-mandatory scrollbar-hide"> <div class="flex gap-5 overflow-x-auto overflow-y-visible pb-8 -mx-4 px-4 pt-2 snap-x snap-mandatory scrollbar-hide">
<div <div
v-for="(testimonial, index) in testimonials" v-for="(testimonial, index) in displayed"
:key="index" :key="index"
class="flex-none w-[340px] sm:w-[400px] snap-start" class="flex-none w-[340px] sm:w-[400px] snap-start"
> >
@@ -0,0 +1,17 @@
<script setup lang="ts">
const { t } = useI18n()
</script>
<template>
<section class="py-16 md:py-24 px-4 sm:px-6 lg:px-8">
<div class="max-w-4xl mx-auto text-center">
<span class="font-mono text-sm text-brand-500 dark:text-brand-400 tracking-wider">{{ t('hytale.hero.label') }}</span>
<h1 class="text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mt-4">
<span class="bg-gradient-to-r from-brand-500 via-brand-400 to-emerald-400 bg-clip-text text-transparent">{{ t('hytale.hero.title') }}</span>
</h1>
<p class="text-lg sm:text-xl text-gray-500 dark:text-gray-400 mt-6 max-w-2xl mx-auto leading-relaxed">
{{ t('hytale.hero.subtitle') }}
</p>
</div>
</section>
</template>
@@ -0,0 +1,63 @@
<script setup lang="ts">
import { hytalePricing } from '~/data/pricing'
const { t } = useI18n()
const localePath = useLocalePath()
</script>
<template>
<section class="py-16 md:py-24 px-4 sm:px-6 lg:px-8">
<div class="max-w-7xl mx-auto">
<div class="text-center mb-16">
<span class="font-mono text-sm text-brand-500 dark:text-brand-400 tracking-wider">{{ t('hytale.pricing.label') }}</span>
<h2 class="text-3xl sm:text-4xl lg:text-5xl font-bold mt-3 bg-gradient-to-r from-gray-900 via-gray-800 to-gray-600 dark:from-white dark:via-gray-200 dark:to-gray-500 bg-clip-text text-transparent">{{ t('hytale.pricing.title') }}</h2>
<p class="text-lg text-gray-500 dark:text-gray-400 mt-4 max-w-2xl mx-auto leading-relaxed">{{ t('hytale.pricing.subtitle') }}</p>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<UCard
v-for="tier in hytalePricing"
:key="tier.id"
class="hover:border-brand-500/40 hover:shadow-xl hover:shadow-brand-500/10 hover:-translate-y-1 transition-all duration-200"
:class="{ 'ring-2 ring-brand-500': tier.featured }"
>
<div class="flex flex-col gap-4 p-2">
<div class="flex items-center justify-between">
<h3 class="text-xl font-bold text-gray-900 dark:text-white">{{ t(`hytale.pricing.${tier.id}.name`) }}</h3>
<UBadge v-if="tier.featured" color="primary" variant="subtle">{{ t('hytale.pricing.popular') }}</UBadge>
</div>
<div class="text-3xl font-extrabold text-gray-900 dark:text-white">
<template v-if="tier.priceFixed">
<span class="text-sm font-normal text-gray-500 dark:text-gray-400">{{ t('hytale.pricing.from') }} </span>
{{ tier.priceFixed }}
</template>
<template v-else>
<span class="text-lg">{{ t('hytale.pricing.onQuote') }}</span>
</template>
</div>
<p class="text-sm text-gray-500 dark:text-gray-400">{{ t(`hytale.pricing.${tier.id}.description`) }}</p>
<ul class="space-y-2 flex-1">
<li v-for="i in 4" :key="i" class="flex items-center gap-2 text-sm text-gray-600 dark:text-gray-300">
<UIcon name="i-lucide-check" class="w-4 h-4 text-brand-500 shrink-0" />
{{ t(`hytale.pricing.${tier.id}.features.${i - 1}`) }}
</li>
</ul>
<UButton
:to="localePath('/contact')"
:color="tier.featured ? 'primary' : 'neutral'"
:variant="tier.featured ? 'solid' : 'outline'"
block
class="mt-4"
>
{{ t('hytale.pricing.cta') }}
</UButton>
</div>
</UCard>
</div>
</div>
</section>
</template>
@@ -0,0 +1,33 @@
<script setup lang="ts">
const { t } = useI18n()
const services = [
{ id: 'plugin', icon: 'i-lucide-puzzle' },
{ id: 'config', icon: 'i-lucide-settings' },
{ id: 'support', icon: 'i-lucide-shield-check' },
]
</script>
<template>
<section class="py-16 md:py-24 px-4 sm:px-6 lg:px-8 bg-gray-50/50 dark:bg-gray-900/20">
<div class="max-w-7xl mx-auto">
<div class="text-center mb-16">
<span class="font-mono text-sm text-brand-500 dark:text-brand-400 tracking-wider">{{ t('hytale.services.label') }}</span>
<h2 class="text-3xl sm:text-4xl lg:text-5xl font-bold mt-3 bg-gradient-to-r from-gray-900 via-gray-800 to-gray-600 dark:from-white dark:via-gray-200 dark:to-gray-500 bg-clip-text text-transparent">{{ t('hytale.services.title') }}</h2>
<p class="text-lg text-gray-500 dark:text-gray-400 mt-4 max-w-2xl mx-auto leading-relaxed">{{ t('hytale.services.subtitle') }}</p>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<UCard v-for="service in services" :key="service.id" class="hover:border-brand-500/40 hover:shadow-xl hover:shadow-brand-500/10 hover:-translate-y-1 transition-all duration-200">
<div class="flex flex-col items-center text-center gap-4 p-2">
<div class="w-12 h-12 rounded-xl bg-brand-500/10 dark:bg-brand-500/15 flex items-center justify-center">
<UIcon :name="service.icon" class="w-6 h-6 text-brand-500" />
</div>
<h3 class="text-lg font-semibold text-gray-900 dark:text-white">{{ t(`hytale.services.items.${service.id}.title`) }}</h3>
<p class="text-sm text-gray-500 dark:text-gray-400 leading-relaxed">{{ t(`hytale.services.items.${service.id}.description`) }}</p>
</div>
</UCard>
</div>
</div>
</section>
</template>
+9
View File
@@ -0,0 +1,9 @@
import type { PricingTier } from '~~/shared/types'
export const hytalePricing: PricingTier[] = [
{ id: 'simple', priceFixed: '50€', featured: false },
{ id: 'complex', priceFixed: null, priceLabel: 'Sur devis', featured: true },
{ id: 'custom', priceFixed: null, priceLabel: 'Sur devis', featured: false },
{ id: 'maintenance', priceFixed: '30€/mois', featured: false },
{ id: 'web', priceFixed: null, priceLabel: 'Sur devis', featured: false },
]
+4 -3
View File
@@ -4,9 +4,10 @@ export type { SiteConfig, ContactInfo, SocialLink, FiverrService, FiverrConfig }
export const siteConfig: SiteConfig = { export const siteConfig: SiteConfig = {
name: 'Killian', name: 'Killian',
title: "Killian' DAL-CIN - Full Stack Developer | Vue.js, React, Node.js Expert", title: "Killian' DAL-CIN - Hytale Plugin Developer | Freelance",
description: description:
'Professional Full Stack Developer specializing in modern web development with Vue.js, React, Node.js. Expert in Discord bots, web applications, and custom software solutions.', 'Professional Full Stack Developer specializing in modern web development with Vue.js, React, Node.js. Expert in Discord bots, web applications, and custom software solutions.',
jobTitle: 'Hytale Plugin Developer',
author: 'Killian', author: 'Killian',
url: 'https://killiandalcin.fr', url: 'https://killiandalcin.fr',
@@ -91,12 +92,12 @@ export const siteConfig: SiteConfig = {
}, },
organization: { organization: {
'@type': 'ProfessionalService', '@type': 'ProfessionalService',
name: "Killian' DAL-CIN - Developpeur Full Stack", name: "Killian' DAL-CIN - Hytale Plugin Developer",
logo: 'https://killiandalcin.fr/logo.webp', logo: 'https://killiandalcin.fr/logo.webp',
priceRange: '$$$', priceRange: '$$$',
aggregateRating: { aggregateRating: {
ratingValue: '5', ratingValue: '5',
reviewCount: '10', reviewCount: '5',
}, },
}, },
}, },
+3 -1
View File
@@ -25,6 +25,7 @@ export const testimonials: Testimonial[] = [
"Travail excellent, Communication au top, Disponible en tout temps, réactif et à l'écoute je le recommande vivement et reviendrai vers lui si je dois refaire un projet similaire !", "Travail excellent, Communication au top, Disponible en tout temps, réactif et à l'écoute je le recommande vivement et reviendrai vers lui si je dois refaire un projet similaire !",
date: '22/04/2023', date: '22/04/2023',
platform: 'Fiverr', platform: 'Fiverr',
featured: true,
project_type: 'Bot Discord', project_type: 'Bot Discord',
results: ["Prix: Jusqu'à 50€", 'Durée: 4 jours', 'Communication parfaite'], results: ["Prix: Jusqu'à 50€", 'Durée: 4 jours', 'Communication parfaite'],
}, },
@@ -51,6 +52,7 @@ export const testimonials: Testimonial[] = [
'Excellent développeur, la commande fut plus rapide que prévu la communication est instantané et le résultat est parfait. Je recommande fortement et reviendrai sûrement pour des mise à jour !', 'Excellent développeur, la commande fut plus rapide que prévu la communication est instantané et le résultat est parfait. Je recommande fortement et reviendrai sûrement pour des mise à jour !',
date: '12/11/2022', date: '12/11/2022',
platform: 'Fiverr', platform: 'Fiverr',
featured: true,
project_type: 'Bot Discord', project_type: 'Bot Discord',
results: [ results: [
'Livraison plus rapide que prévu', 'Livraison plus rapide que prévu',
@@ -73,7 +75,7 @@ export const testimonials: Testimonial[] = [
] ]
export const testimonialsStats: TestimonialsStats = { export const testimonialsStats: TestimonialsStats = {
totalReviews: 10, totalReviews: 5,
averageRating: 5.0, averageRating: 5.0,
projectsCompleted: 25, projectsCompleted: 25,
} }
+39
View File
@@ -0,0 +1,39 @@
<script setup lang="ts">
const { t } = useI18n()
useSeoMeta({
title: () => t('seo.hytale.title'),
description: () => t('seo.hytale.description'),
ogTitle: () => t('seo.hytale.title'),
ogDescription: () => t('seo.hytale.description'),
ogImage: 'https://killiandalcin.fr/og-image.png',
ogType: 'website',
})
useHead({
script: [{
type: 'application/ld+json',
innerHTML: JSON.stringify({
'@context': 'https://schema.org',
'@type': 'Service',
name: 'Hytale Plugin Development',
provider: {
'@type': 'Person',
name: "Killian' DAL-CIN",
jobTitle: 'Hytale Plugin Developer',
},
}),
}],
})
</script>
<template>
<div>
<HytaleHeroSection />
<HytaleServicesSection />
<HytalePricingSection />
<div class="relative bg-gray-50/50 dark:bg-gray-900/20">
<TestimonialsSection />
</div>
</div>
</template>
+1 -1
View File
@@ -63,7 +63,7 @@ useHead({
<!-- Testimonials Section --> <!-- Testimonials Section -->
<div class="relative bg-gray-50/50 dark:bg-gray-900/20"> <div class="relative bg-gray-50/50 dark:bg-gray-900/20">
<TestimonialsSection /> <TestimonialsSection featured />
</div> </div>
<!-- FAQ Section --> <!-- FAQ Section -->
+124 -18
View File
@@ -4,10 +4,11 @@
"projects": "Projects", "projects": "Projects",
"about": "About", "about": "About",
"contact": "Contact", "contact": "Contact",
"fiverr": "Fiverr" "fiverr": "Fiverr",
"hytale": "Hytale"
}, },
"footer": { "footer": {
"copyright": "\u00a9 2026 Killian' DAL-CIN", "copyright": "© 2026 Killian' DAL-CIN",
"navigation": "Quick Links", "navigation": "Quick Links",
"services": "Services", "services": "Services",
"legalNotices": "Legal Notices", "legalNotices": "Legal Notices",
@@ -20,11 +21,11 @@
} }
}, },
"a11y": { "a11y": {
"logoLabel": "Killian' DAL-CIN \u2014 Full Stack Developer \u2014 Back to homepage", "logoLabel": "Killian' DAL-CIN Full Stack Developer Back to homepage",
"openMenu": "Open navigation menu", "openMenu": "Open navigation menu",
"closeMenu": "Close navigation menu", "closeMenu": "Close navigation menu",
"closeDrawer": "Close menu", "closeDrawer": "Close menu",
"langToggle": "Change language \u2014 currently English", "langToggle": "Change language currently English",
"themeDark": "Switch to light mode", "themeDark": "Switch to light mode",
"themeLight": "Switch to dark mode", "themeLight": "Switch to dark mode",
"gitea": "Killian' DAL-CIN on Gitea (opens in new tab)", "gitea": "Killian' DAL-CIN on Gitea (opens in new tab)",
@@ -33,32 +34,38 @@
}, },
"seo": { "seo": {
"home": { "home": {
"title": "Killian' DAL-CIN \u2014 Freelance Full Stack Developer", "title": "Killian' DAL-CIN Freelance Full Stack Developer",
"description": "Portfolio of Killian' DAL-CIN, freelance full stack developer specializing in Vue.js, React and Node.js. High-performance web applications and custom solutions." "description": "Portfolio of Killian' DAL-CIN, freelance full stack developer specializing in Vue.js, React and Node.js. High-performance web applications and custom solutions."
}, },
"projects": { "projects": {
"title": "Projects \u2014 Killian' DAL-CIN", "title": "Projects Killian' DAL-CIN",
"description": "Discover my web development projects: Vue.js applications, Node.js APIs, Discord bots and enterprise solutions." "description": "Discover my web development projects: Vue.js applications, Node.js APIs, Discord bots and enterprise solutions."
}, },
"about": { "about": {
"title": "About \u2014 Killian' DAL-CIN", "title": "About Killian' DAL-CIN",
"description": "Biography and skills of Killian' DAL-CIN, freelance full stack developer based in France." "description": "Biography and skills of Killian' DAL-CIN, freelance full stack developer based in France."
}, },
"contact": { "contact": {
"title": "Contact \u2014 Killian' DAL-CIN", "title": "Contact Killian' DAL-CIN",
"description": "Contact Killian' DAL-CIN to discuss your web development project." "description": "Contact Killian' DAL-CIN to discuss your web development project."
}, },
"fiverr": { "fiverr": {
"title": "Fiverr Services \u2014 Killian' DAL-CIN", "title": "Fiverr Services Killian' DAL-CIN",
"description": "Development services available on Fiverr: Discord bots, Minecraft plugins, web applications." "description": "Development services available on Fiverr: Discord bots, Minecraft plugins, web applications."
},
"hytale": {
"title": "Custom Hytale Plugins | Killian' DAL-CIN",
"description": "High-performance custom Hytale plugin development. From simple plugins to complex projects, solutions tailored to your server."
} }
}, },
"home": { "home": {
"title": "Expert Full Stack Developer for Hire | Vue.js, React & Node.js Specialist", "title": "Hytale Plugin Developer",
"subtitle": "I turn your ideas into high-performance web apps that drive real results. Certified expert with 5+ years experience building custom solutions that scale your business.", "subtitle": "High-performance, custom plugins for your Hytale server",
"cta": { "cta": {
"viewProjects": "Explore My Success Stories", "viewProjects": "Explore My Success Stories",
"contactMe": "Get Free Quote in 24h" "contactMe": "Get Free Quote in 24h",
"discord": "Join on Discord",
"contact": "Contact me"
}, },
"featuredProjects": { "featuredProjects": {
"title": "Web Applications That Deliver Results", "title": "Web Applications That Deliver Results",
@@ -90,6 +97,16 @@
"subtitle": "Let's discuss your project requirements and build something amazing together.", "subtitle": "Let's discuss your project requirements and build something amazing together.",
"startProject": "Start a Conversation", "startProject": "Start a Conversation",
"learnMore": "Explore My Success Stories" "learnMore": "Explore My Success Stories"
},
"badge": {
"available": "Available for projects"
},
"stats": {
"projects": "25+ projects",
"rating": "5.0 rating"
},
"terminal": {
"role": "Hytale Plugin Developer"
} }
}, },
"projects": { "projects": {
@@ -315,9 +332,9 @@
}, },
"projectData": { "projectData": {
"virtual-tour": { "virtual-tour": {
"title": "Virtual Tour - Interactive 360\u00b0 Experience", "title": "Virtual Tour - Interactive 360° Experience",
"description": "My high school teacher and me had an idea to create a Virtual tour with 360\u00b0 videos to allow everyone to visit the school from the web.", "description": "My high school teacher and me had an idea to create a Virtual tour with 360° videos to allow everyone to visit the school from the web.",
"longDescription": "Collaborative project with my high school teacher to create an immersive virtual tour experience of our school. Uses 360\u00b0 videos to provide interactive navigation.", "longDescription": "Collaborative project with my high school teacher to create an immersive virtual tour experience of our school. Uses 360° videos to provide interactive navigation.",
"buttons": { "buttons": {
"visit": "Visit" "visit": "Visit"
} }
@@ -392,8 +409,9 @@
"subtitle": "Over 10 successfully delivered projects. Discover authentic testimonials from satisfied clients.", "subtitle": "Over 10 successfully delivered projects. Discover authentic testimonials from satisfied clients.",
"stats": { "stats": {
"clients": "Satisfied Clients", "clients": "Satisfied Clients",
"rating": "Average Rating", "rating": "average rating",
"projects": "Projects Delivered" "projects": "projects delivered",
"reviews": "client reviews"
}, },
"ctaTitle": "Join My Satisfied Clients", "ctaTitle": "Join My Satisfied Clients",
"ctaSubtitle": "Your project deserves the same level of excellence and professionalism.", "ctaSubtitle": "Your project deserves the same level of excellence and professionalism.",
@@ -403,7 +421,9 @@
"card": { "card": {
"featured": "Featured Testimonial", "featured": "Featured Testimonial",
"results": "Results achieved:" "results": "Results achieved:"
} },
"label": "// testimonials",
"empty": "No testimonials available yet."
}, },
"faq": { "faq": {
"title": "Frequently Asked Questions", "title": "Frequently Asked Questions",
@@ -443,5 +463,91 @@
"notFound": "Oops! This page could not be found.", "notFound": "Oops! This page could not be found.",
"generic": "An error occurred.", "generic": "An error occurred.",
"backHome": "Back to home" "backHome": "Back to home"
},
"hytale": {
"hero": {
"label": "// hytale",
"title": "Custom Hytale Plugins",
"subtitle": "High-performance plugin development for your Hytale server, from design to delivery."
},
"services": {
"label": "// services",
"title": "Hytale Expertise",
"subtitle": "Solutions tailored to every need",
"items": {
"plugin": {
"title": "Plugin Development",
"description": "Custom Hytale plugins, from simple features to complex systems. Performant and optimized code for your server."
},
"config": {
"title": "Server Configuration",
"description": "Setup and optimization of your Hytale server. Advanced configuration, plugin integration and maximum performance."
},
"support": {
"title": "Maintenance & Support",
"description": "Ongoing support for your plugins and server. Updates, bug fixes and monitoring for a seamless experience."
}
}
},
"pricing": {
"label": "// pricing",
"title": "Pricing",
"subtitle": "Transparent pricing for every project",
"cta": "Request a quote",
"popular": "Popular",
"from": "From",
"perMonth": "/month",
"onQuote": "Custom quote",
"simple": {
"name": "Simple Plugin",
"description": "A basic plugin with simple features",
"features": [
"Basic features",
"Simple configuration",
"Documentation included",
"30-day support"
]
},
"complex": {
"name": "Complex Plugin",
"description": "An advanced plugin with complex systems",
"features": [
"Advanced systems",
"API integration",
"Comprehensive testing",
"60-day support"
]
},
"custom": {
"name": "Custom Development",
"description": "A fully customized project",
"features": [
"Custom architecture",
"Unlimited features",
"Priority support",
"Maintenance included"
]
},
"maintenance": {
"name": "Maintenance & Support",
"description": "Ongoing support for your plugins",
"features": [
"Regular updates",
"Bug fixes",
"Technical support",
"Monitoring"
]
},
"web": {
"name": "Web Development",
"description": "Websites and apps for your community",
"features": [
"Responsive website",
"SEO optimized",
"Admin dashboard",
"Discord integration"
]
}
}
} }
} }
+254 -148
View File
@@ -4,27 +4,28 @@
"projects": "Projets", "projects": "Projets",
"about": "A propos", "about": "A propos",
"contact": "Contact", "contact": "Contact",
"fiverr": "Fiverr" "fiverr": "Fiverr",
"hytale": "Hytale"
}, },
"footer": { "footer": {
"copyright": "\u00a9 2026 Killian' DAL-CIN", "copyright": "© 2026 Killian' DAL-CIN",
"navigation": "Liens Rapides", "navigation": "Liens Rapides",
"services": "Services", "services": "Services",
"legalNotices": "Mentions L\u00e9gales", "legalNotices": "Mentions Légales",
"privacyPolicy": "Politique de Confidentialit\u00e9", "privacyPolicy": "Politique de Confidentialité",
"servicesList": { "servicesList": {
"webDev": "D\u00e9veloppement Web", "webDev": "Développement Web",
"mobileApps": "Applications Mobiles", "mobileApps": "Applications Mobiles",
"apiBackend": "D\u00e9veloppement API", "apiBackend": "Développement API",
"consulting": "Consulting Tech" "consulting": "Consulting Tech"
} }
}, },
"a11y": { "a11y": {
"logoLabel": "Killian' DAL-CIN \u2014 Developpeur Full Stack \u2014 Retour a l'accueil", "logoLabel": "Killian' DAL-CIN Developpeur Full Stack Retour a l'accueil",
"openMenu": "Ouvrir le menu de navigation", "openMenu": "Ouvrir le menu de navigation",
"closeMenu": "Fermer le menu de navigation", "closeMenu": "Fermer le menu de navigation",
"closeDrawer": "Fermer le menu", "closeDrawer": "Fermer le menu",
"langToggle": "Changer la langue \u2014 actuellement Francais", "langToggle": "Changer la langue actuellement Francais",
"themeDark": "Activer le mode clair", "themeDark": "Activer le mode clair",
"themeLight": "Activer le mode sombre", "themeLight": "Activer le mode sombre",
"gitea": "Gitea de Killian' DAL-CIN (nouvelle fenetre)", "gitea": "Gitea de Killian' DAL-CIN (nouvelle fenetre)",
@@ -33,216 +34,232 @@
}, },
"seo": { "seo": {
"home": { "home": {
"title": "Killian' DAL-CIN \u2014 Developpeur Full Stack Freelance", "title": "Killian' DAL-CIN Developpeur Full Stack Freelance",
"description": "Portfolio de Killian' DAL-CIN, developpeur full stack freelance specialise en Vue.js, React et Node.js. Applications web performantes et solutions sur-mesure." "description": "Portfolio de Killian' DAL-CIN, developpeur full stack freelance specialise en Vue.js, React et Node.js. Applications web performantes et solutions sur-mesure."
}, },
"projects": { "projects": {
"title": "Projets \u2014 Killian' DAL-CIN", "title": "Projets Killian' DAL-CIN",
"description": "Decouvrez mes realisations en developpement web : applications Vue.js, API Node.js, bots Discord et solutions d'entreprise." "description": "Decouvrez mes realisations en developpement web : applications Vue.js, API Node.js, bots Discord et solutions d'entreprise."
}, },
"about": { "about": {
"title": "A propos \u2014 Killian' DAL-CIN", "title": "A propos Killian' DAL-CIN",
"description": "Biographie et competences de Killian' DAL-CIN, developpeur full stack freelance base en France." "description": "Biographie et competences de Killian' DAL-CIN, developpeur full stack freelance base en France."
}, },
"contact": { "contact": {
"title": "Contact \u2014 Killian' DAL-CIN", "title": "Contact Killian' DAL-CIN",
"description": "Contactez Killian' DAL-CIN pour discuter de votre projet de developpement web." "description": "Contactez Killian' DAL-CIN pour discuter de votre projet de developpement web."
}, },
"fiverr": { "fiverr": {
"title": "Services Fiverr \u2014 Killian' DAL-CIN", "title": "Services Fiverr Killian' DAL-CIN",
"description": "Services de developpement disponibles sur Fiverr : bots Discord, plugins Minecraft, applications web." "description": "Services de developpement disponibles sur Fiverr : bots Discord, plugins Minecraft, applications web."
},
"hytale": {
"title": "Plugins Hytale sur-mesure | Killian' DAL-CIN",
"description": "Developpement de plugins Hytale performants et sur-mesure. Du plugin simple au projet complexe, des solutions adaptees a votre serveur."
} }
}, },
"home": { "home": {
"title": "D\u00e9veloppeur Full Stack Freelance Vue.js, React & Node.js", "title": "Hytale Plugin Developer",
"subtitle": "Je transforme vos id\u00e9es en applications web performantes qui g\u00e9n\u00e8rent des r\u00e9sultats. Expert certifi\u00e9 avec +5 ans d'exp\u00e9rience, je cr\u00e9e des solutions sur-mesure qui propulsent votre business.", "subtitle": "Des plugins performants et sur-mesure pour votre serveur Hytale",
"cta": { "cta": {
"viewProjects": "D\u00e9couvrir Mes R\u00e9alisations", "viewProjects": "Découvrir Mes Réalisations",
"contactMe": "Devis Gratuit Sous 24h" "contactMe": "Devis Gratuit Sous 24h",
"discord": "Rejoindre sur Discord",
"contact": "Me contacter"
}, },
"featuredProjects": { "featuredProjects": {
"title": "Applications Web Qui Cartonnent", "title": "Applications Web Qui Cartonnent",
"subtitle": "Portfolio de projets r\u00e9els qui ont transform\u00e9 des id\u00e9es en succ\u00e8s. Applications Vue.js ultra-rapides, plateformes React scalables, API Node.js robustes.", "subtitle": "Portfolio de projets réels qui ont transformé des idées en succès. Applications Vue.js ultra-rapides, plateformes React scalables, API Node.js robustes.",
"viewAll": "Explorer Tous les Projets" "viewAll": "Explorer Tous les Projets"
}, },
"services": { "services": {
"title": "Services Premium de D\u00e9veloppement Web", "title": "Services Premium de Développement Web",
"subtitle": "Solutions cl\u00e9s en main qui boostent votre croissance. Technologies de pointe + m\u00e9thodologie \u00e9prouv\u00e9e = succ\u00e8s garanti pour votre projet digital.", "subtitle": "Solutions clés en main qui boostent votre croissance. Technologies de pointe + méthodologie éprouvée = succès garanti pour votre projet digital.",
"webDev": { "webDev": {
"title": "Applications Web Vue.js/React Sur-Mesure", "title": "Applications Web Vue.js/React Sur-Mesure",
"description": "Cr\u00e9ation d'applications web lightning-fast qui convertissent. SPA modernes, PWA offline-first, e-commerce haute conversion. SEO-friendly d\u00e8s la conception." "description": "Création d'applications web lightning-fast qui convertissent. SPA modernes, PWA offline-first, e-commerce haute conversion. SEO-friendly dès la conception."
}, },
"mobileApps": { "mobileApps": {
"title": "Apps Mobiles Cross-Platform Rentables", "title": "Apps Mobiles Cross-Platform Rentables",
"description": "Une seule codebase = iOS + Android + Web. React Native pour des apps natives performantes. 60% d'\u00e9conomie vs d\u00e9veloppement natif." "description": "Une seule codebase = iOS + Android + Web. React Native pour des apps natives performantes. 60% d'économie vs développement natif."
}, },
"optimization": { "optimization": {
"title": "Optimisation Performance & SEO Technique", "title": "Optimisation Performance & SEO Technique",
"description": "Boostez votre visibilit\u00e9 Google et vos conversions. Core Web Vitals optimis\u00e9s, temps de chargement <2s. +250% de trafic organique en moyenne." "description": "Boostez votre visibilité Google et vos conversions. Core Web Vitals optimisés, temps de chargement <2s. +250% de trafic organique en moyenne."
}, },
"maintenance": { "maintenance": {
"title": "Maintenance Proactive & Support 24/7", "title": "Maintenance Proactive & Support 24/7",
"description": "Dormez tranquille, je veille sur vos apps. Monitoring temps r\u00e9el, patches s\u00e9curit\u00e9 automatiques, backups quotidiens. 99.9% uptime garanti." "description": "Dormez tranquille, je veille sur vos apps. Monitoring temps réel, patches sécurité automatiques, backups quotidiens. 99.9% uptime garanti."
} }
}, },
"cta2": { "cta2": {
"title": "Vous Cherchez un D\u00e9veloppeur Full Stack ?", "title": "Vous Cherchez un Développeur Full Stack ?",
"subtitle": "Discutons de vos besoins de projet et construisons quelque chose d'incroyable ensemble.", "subtitle": "Discutons de vos besoins de projet et construisons quelque chose d'incroyable ensemble.",
"startProject": "D\u00e9marrer une Conversation", "startProject": "Démarrer une Conversation",
"learnMore": "D\u00e9couvrir Mes Succ\u00e8s" "learnMore": "Découvrir Mes Succès"
},
"badge": {
"available": "Disponible pour vos projets"
},
"stats": {
"projects": "25+ projets",
"rating": "Note 5.0"
},
"terminal": {
"role": "Hytale Plugin Developer"
} }
}, },
"projects": { "projects": {
"title": "Portfolio de D\u00e9veloppement Web", "title": "Portfolio de Développement Web",
"subtitle": "Parcourez mes projets de d\u00e9veloppement full stack incluant des applications Vue.js, sites React, API Node.js, bots Discord et solutions d'entreprise.", "subtitle": "Parcourez mes projets de développement full stack incluant des applications Vue.js, sites React, API Node.js, bots Discord et solutions d'entreprise.",
"categories": { "categories": {
"all": "Tous les Projets", "all": "Tous les Projets",
"webdevelopment": "D\u00e9veloppement Web", "webdevelopment": "Développement Web",
"botdevelopment": "D\u00e9veloppement de Bot", "botdevelopment": "Développement de Bot",
"opensource": "Open Source", "opensource": "Open Source",
"enterprisesoftware": "Logiciel d'Entreprise", "enterprisesoftware": "Logiciel d'Entreprise",
"socialmediabot": "Bots R\u00e9seaux Sociaux", "socialmediabot": "Bots Réseaux Sociaux",
"automation": "Outils d'Automatisation" "automation": "Outils d'Automatisation"
}, },
"buttons": { "buttons": {
"website": "Site en Direct", "website": "Site en Direct",
"repository": "Code Source", "repository": "Code Source",
"npmpackage": "Package NPM", "npmpackage": "Package NPM",
"viewProject": "Voir les D\u00e9tails" "viewProject": "Voir les Détails"
}, },
"projectDetail": { "projectDetail": {
"backToProjects": "Retour aux Projets", "backToProjects": "Retour aux Projets",
"viewDemo": "Voir la D\u00e9mo", "viewDemo": "Voir la Démo",
"sourceCode": "Code Source", "sourceCode": "Code Source",
"share": "Partager", "share": "Partager",
"aboutProject": "\u00c0 propos du Projet", "aboutProject": "À propos du Projet",
"keyFeatures": "Fonctionnalit\u00e9s Principales", "keyFeatures": "Fonctionnalités Principales",
"technologiesUsed": "Technologies Utilis\u00e9es", "technologiesUsed": "Technologies Utilisées",
"gallery": "Galerie", "gallery": "Galerie",
"projectInfo": "Informations du Projet", "projectInfo": "Informations du Projet",
"date": "Date", "date": "Date",
"category": "Cat\u00e9gorie", "category": "Catégorie",
"status": "Statut", "status": "Statut",
"relatedProjects": "Projets Similaires" "relatedProjects": "Projets Similaires"
}, },
"noResults": { "noResults": {
"title": "Aucun projet trouv\u00e9", "title": "Aucun projet trouvé",
"description": "Essayez de modifier vos crit\u00e8res de recherche ou de filtrage." "description": "Essayez de modifier vos critères de recherche ou de filtrage."
} }
}, },
"about": { "about": {
"title": "\u00c0 propos de Killian'- D\u00e9veloppeur Full Stack", "title": "À propos de Killian'- Développeur Full Stack",
"subtitle": "D\u00e9veloppeur web exp\u00e9riment\u00e9 passionn\u00e9 par Vue.js, React, Node.js et les technologies JavaScript modernes.", "subtitle": "Développeur web expérimenté passionné par Vue.js, React, Node.js et les technologies JavaScript modernes.",
"intro": { "intro": {
"title": "D\u00e9veloppeur Full Stack Professionnel", "title": "Développeur Full Stack Professionnel",
"content": "Je suis Killian, un d\u00e9veloppeur full stack exp\u00e9riment\u00e9 sp\u00e9cialis\u00e9 dans les technologies JavaScript. Avec une expertise en Vue.js, React, Node.js et TypeScript, je cr\u00e9e des applications web \u00e9volutives, des API RESTful et des syst\u00e8mes temps r\u00e9el." "content": "Je suis Killian, un développeur full stack expérimenté spécialisé dans les technologies JavaScript. Avec une expertise en Vue.js, React, Node.js et TypeScript, je crée des applications web évolutives, des API RESTful et des systèmes temps réel."
}, },
"skills": { "skills": {
"title": "Comp\u00e9tences Techniques & Expertise", "title": "Compétences Techniques & Expertise",
"programming": "Langages de Programmation", "programming": "Langages de Programmation",
"frontend": "Technologies Frontend", "frontend": "Technologies Frontend",
"backend": "Technologies Backend", "backend": "Technologies Backend",
"tools": "DevOps & Outils", "tools": "DevOps & Outils",
"systems": "Syst\u00e8mes d'Exploitation" "systems": "Systèmes d'Exploitation"
}, },
"experience": { "experience": {
"title": "Exp\u00e9rience Professionnelle", "title": "Expérience Professionnelle",
"content": "Des ann\u00e9es d'exp\u00e9rience professionnelle en d\u00e9veloppement web construisant des applications d'entreprise, des plateformes e-commerce, des produits SaaS et des solutions logicielles personnalis\u00e9es." "content": "Des années d'expérience professionnelle en développement web construisant des applications d'entreprise, des plateformes e-commerce, des produits SaaS et des solutions logicielles personnalisées."
}, },
"approach": { "approach": {
"title": "Philosophie de D\u00e9veloppement", "title": "Philosophie de Développement",
"subtitle": "Mon approche du d\u00e9veloppement full stack se concentre sur le code propre, l'architecture \u00e9volutive et l'exp\u00e9rience utilisateur exceptionnelle.", "subtitle": "Mon approche du développement full stack se concentre sur le code propre, l'architecture évolutive et l'expérience utilisateur exceptionnelle.",
"performance": { "performance": {
"title": "D\u00e9veloppement Ax\u00e9 Performance", "title": "Développement Axé Performance",
"description": "Code optimis\u00e9, lazy loading, code splitting et strat\u00e9gies de cache. Scores Lighthouse parfaits et m\u00e9triques Core Web Vitals." "description": "Code optimisé, lazy loading, code splitting et stratégies de cache. Scores Lighthouse parfaits et métriques Core Web Vitals."
}, },
"architecture": { "architecture": {
"title": "Architecture \u00c9volutive", "title": "Architecture Évolutive",
"description": "Microservices, fonctions serverless et mod\u00e8les de conception modulaires. Applications qui \u00e9voluent avec votre entreprise." "description": "Microservices, fonctions serverless et modèles de conception modulaires. Applications qui évoluent avec votre entreprise."
}, },
"quality": { "quality": {
"title": "Qualit\u00e9 du Code & Tests", "title": "Qualité du Code & Tests",
"description": "D\u00e9veloppement pilot\u00e9 par les tests (TDD), tests automatis\u00e9s, int\u00e9gration continue (CI/CD) et revues de code compl\u00e8tes." "description": "Développement piloté par les tests (TDD), tests automatisés, intégration continue (CI/CD) et revues de code complètes."
}, },
"collaboration": { "collaboration": {
"title": "Collaboration Agile", "title": "Collaboration Agile",
"description": "Excellente communication, m\u00e9thodologies agiles et gestion de projet transparente. Mises \u00e0 jour r\u00e9guli\u00e8res et r\u00e9solution collaborative de probl\u00e8mes." "description": "Excellente communication, méthodologies agiles et gestion de projet transparente. Mises à jour régulières et résolution collaborative de problèmes."
} }
}, },
"cta": { "cta": {
"title": "Vous Cherchez un D\u00e9veloppeur Full Stack ?", "title": "Vous Cherchez un Développeur Full Stack ?",
"description": "Discutons de vos besoins de projet et construisons quelque chose d'incroyable ensemble.", "description": "Discutons de vos besoins de projet et construisons quelque chose d'incroyable ensemble.",
"button": "D\u00e9marrer une Conversation" "button": "Démarrer une Conversation"
} }
}, },
"fiverr": { "fiverr": {
"title": "Services Fiverr Premium - D\u00e9veloppeur Top Rated Seller", "title": "Services Fiverr Premium - Développeur Top Rated Seller",
"subtitle": "500+ commandes livr\u00e9es. 100% satisfaction client. R\u00e9ponse <1h. Support FR/EN 24/7. Expert certifi\u00e9 en bots Discord, plugins Minecraft et d\u00e9veloppement web.", "subtitle": "500+ commandes livrées. 100% satisfaction client. Réponse <1h. Support FR/EN 24/7. Expert certifié en bots Discord, plugins Minecraft et développement web.",
"profileCta": "Commander Maintenant sur Fiverr", "profileCta": "Commander Maintenant sur Fiverr",
"stats": { "stats": {
"rating": "Note Parfaite 5/5" "rating": "Note Parfaite 5/5"
}, },
"pricing": { "pricing": {
"startingAt": "D\u00e8s" "startingAt": "Dès"
}, },
"services": { "services": {
"title": "Services Premium", "title": "Services Premium",
"subtitle": "Solutions professionnelles livr\u00e9es en temps record. Chaque service inclut : code source complet, documentation d\u00e9taill\u00e9e, support 30 jours, r\u00e9visions illimit\u00e9es.", "subtitle": "Solutions professionnelles livrées en temps record. Chaque service inclut : code source complet, documentation détaillée, support 30 jours, révisions illimitées.",
"features": "Ce Qui Est Inclus", "features": "Ce Qui Est Inclus",
"orderNow": "Commander Ce Service", "orderNow": "Commander Ce Service",
"learnMore": "Voir Tous les D\u00e9tails", "learnMore": "Voir Tous les Détails",
"moreFeatures": "avantages premium inclus", "moreFeatures": "avantages premium inclus",
"comingSoon": "Disponible Bient\u00f4t", "comingSoon": "Disponible Bientôt",
"available": "Disponible Imm\u00e9diatement" "available": "Disponible Immédiatement"
}, },
"serviceData": { "serviceData": {
"discord-bot": { "discord-bot": {
"title": "Bot Discord Ultra-Complet | #1 Best-Seller", "title": "Bot Discord Ultra-Complet | #1 Best-Seller",
"description": "Le bot Discord de vos r\u00eaves, cod\u00e9 par un expert. Transformez votre serveur en communaut\u00e9 ultra-active.", "description": "Le bot Discord de vos rêves, codé par un expert. Transformez votre serveur en communauté ultra-active.",
"features": [ "features": [
"Syst\u00e8me de mod\u00e9ration IA avanc\u00e9 (anti-spam, anti-raid, auto-mod intelligent)", "Système de modération IA avancé (anti-spam, anti-raid, auto-mod intelligent)",
"Mini-jeux addictifs : casino, RPG, quiz avec leaderboards globaux", "Mini-jeux addictifs : casino, RPG, quiz avec leaderboards globaux",
"Lecteur musique HD : Spotify, YouTube, SoundCloud, avec playlist sauvegard\u00e9es", "Lecteur musique HD : Spotify, YouTube, SoundCloud, avec playlist sauvegardées",
"Interface web moderne pour configuration facile (dashboard React inclus)", "Interface web moderne pour configuration facile (dashboard React inclus)",
"H\u00e9bergement VPS premium OFFERT pendant 3 mois" "Hébergement VPS premium OFFERT pendant 3 mois"
] ]
}, },
"minecraft-plugin": { "minecraft-plugin": {
"title": "Plugin Minecraft Java Premium | Spigot/Paper Expert", "title": "Plugin Minecraft Java Premium | Spigot/Paper Expert",
"description": "Plugins Minecraft sur-mesure qui transforment votre serveur en exp\u00e9rience unique. Compatible 1.8 \u2192 1.20+, optimis\u00e9 pour gros serveurs (1000+ joueurs).", "description": "Plugins Minecraft sur-mesure qui transforment votre serveur en expérience unique. Compatible 1.8 1.20+, optimisé pour gros serveurs (1000+ joueurs).",
"features": [ "features": [
"Gameplay r\u00e9volutionnaire : donjons proc\u00e9duraux, boss custom, sorts magiques", "Gameplay révolutionnaire : donjons procéduraux, boss custom, sorts magiques",
"\u00c9conomie avanc\u00e9e : boutiques GUI, auction house, m\u00e9tiers avec XP", "Économie avancée : boutiques GUI, auction house, métiers avec XP",
"Syst\u00e8mes de progression : levels, skills, classes RPG personnalisables", "Systèmes de progression : levels, skills, classes RPG personnalisables",
"Base de donn\u00e9es optimis\u00e9e MySQL/Redis pour performances maximales", "Base de données optimisée MySQL/Redis pour performances maximales",
"Multi-serveurs : BungeeCord/Velocity ready avec synchronisation" "Multi-serveurs : BungeeCord/Velocity ready avec synchronisation"
] ]
}, },
"telegram-bot": { "telegram-bot": {
"title": "Bot Telegram Pro Business | Automatisation Puissante", "title": "Bot Telegram Pro Business | Automatisation Puissante",
"description": "Bot Telegram professionnel qui booste votre business. Parfait pour e-commerce, support client, communaut\u00e9s.", "description": "Bot Telegram professionnel qui booste votre business. Parfait pour e-commerce, support client, communautés.",
"features": [ "features": [
"IA conversationnelle : ChatGPT int\u00e9gr\u00e9 pour r\u00e9ponses naturelles", "IA conversationnelle : ChatGPT intégré pour réponses naturelles",
"E-commerce complet : catalogue produits, panier, paiements Stripe/PayPal", "E-commerce complet : catalogue produits, panier, paiements Stripe/PayPal",
"Broadcasting intelligent : segments utilisateurs, A/B testing, analytics", "Broadcasting intelligent : segments utilisateurs, A/B testing, analytics",
"Multi-langues automatique avec d\u00e9tection et traduction DeepL", "Multi-langues automatique avec détection et traduction DeepL",
"S\u00e9curit\u00e9 maximale : 2FA, encryption, RGPD compliant" "Sécurité maximale : 2FA, encryption, RGPD compliant"
] ]
}, },
"website-development": { "website-development": {
"title": "Site Web Premium Vue.js/React | SEO-First & Ultra-Rapide", "title": "Site Web Premium Vue.js/React | SEO-First & Ultra-Rapide",
"description": "Sites web nouvelle g\u00e9n\u00e9ration qui convertissent. Design premium, performance maximale, SEO optimis\u00e9.", "description": "Sites web nouvelle génération qui convertissent. Design premium, performance maximale, SEO optimisé.",
"features": [ "features": [
"Design UI/UX premium : mockups Figma + animations modernes", "Design UI/UX premium : mockups Figma + animations modernes",
"Performance extr\u00eame : chargement <1.5s", "Performance extrême : chargement <1.5s",
"Responsive parfait : test\u00e9 sur 50+ appareils diff\u00e9rents", "Responsive parfait : testé sur 50+ appareils différents",
"SEO surpuissant : schema markup, sitemap, meta optimis\u00e9es", "SEO surpuissant : schema markup, sitemap, meta optimisées",
"E-commerce ready : Stripe, PayPal, cryptos (si besoin)" "E-commerce ready : Stripe, PayPal, cryptos (si besoin)"
] ]
} }
}, },
"testimonials": { "testimonials": {
"title": "Ils Ont Transform\u00e9 Leur Business Avec Mes Services", "title": "Ils Ont Transformé Leur Business Avec Mes Services",
"subtitle": "Rejoignez 500+ entrepreneurs satisfaits. Note moyenne 5.0/5.0 sur l'ensemble de mes services." "subtitle": "Rejoignez 500+ entrepreneurs satisfaits. Note moyenne 5.0/5.0 sur l'ensemble de mes services."
}, },
"faq": { "faq": {
@@ -250,41 +267,41 @@
"subtitle": "Tout ce que vous devez savoir avant de commander mes services sur Fiverr." "subtitle": "Tout ce que vous devez savoir avant de commander mes services sur Fiverr."
}, },
"cta": { "cta": {
"title": "Arr\u00eatez de Chercher, Vous Avez Trouv\u00e9 LE Bon D\u00e9veloppeur", "title": "Arrêtez de Chercher, Vous Avez Trouvé LE Bon Développeur",
"subtitle": "Chaque jour sans agir = opportunit\u00e9s perdues. Lancez votre projet MAINTENANT.", "subtitle": "Chaque jour sans agir = opportunités perdues. Lancez votre projet MAINTENANT.",
"button": "R\u00e9server Ma Commande Maintenant" "button": "Réserver Ma Commande Maintenant"
} }
}, },
"contact": { "contact": {
"title": "Contacter D\u00e9veloppeur Full Stack", "title": "Contacter Développeur Full Stack",
"subtitle": "Contactez-moi pour des projets de d\u00e9veloppement web, du travail freelance ou une consultation technique. Estimation de projet et consultation gratuites disponibles.", "subtitle": "Contactez-moi pour des projets de développement web, du travail freelance ou une consultation technique. Estimation de projet et consultation gratuites disponibles.",
"stats": { "stats": {
"responseTime": "R\u00e9ponse Rapide", "responseTime": "Réponse Rapide",
"satisfaction": "Satisfaction Client", "satisfaction": "Satisfaction Client",
"collaboration": "Port\u00e9e Mondiale" "collaboration": "Portée Mondiale"
}, },
"quickContact": "Contact Rapide", "quickContact": "Contact Rapide",
"findMeOn": "Connectez-vous sur les R\u00e9seaux Sociaux", "findMeOn": "Connectez-vous sur les Réseaux Sociaux",
"methods": { "methods": {
"email": "Adresse Email", "email": "Adresse Email",
"location": "Localisation", "location": "Localisation",
"responseTime": "R\u00e9ponse sous 24 heures", "responseTime": "Réponse sous 24 heures",
"availability": "Disponible pour remote & freelance" "availability": "Disponible pour remote & freelance"
}, },
"faq": { "faq": {
"title": "Questions Fr\u00e9quemment Pos\u00e9es", "title": "Questions Fréquemment Posées",
"subtitle": "Questions courantes sur mes services de d\u00e9veloppement web et mon processus de travail.", "subtitle": "Questions courantes sur mes services de développement web et mon processus de travail.",
"responseTime": { "responseTime": {
"title": "Quel est votre d\u00e9lai de r\u00e9ponse typique ?", "title": "Quel est votre délai de réponse typique ?",
"description": "Je r\u00e9ponds \u00e0 toutes les demandes dans les 24 heures. Pour les projets urgents, je suis disponible pour une consultation imm\u00e9diate." "description": "Je réponds à toutes les demandes dans les 24 heures. Pour les projets urgents, je suis disponible pour une consultation immédiate."
}, },
"projectTypes": { "projectTypes": {
"title": "Quels types de projets g\u00e9rez-vous ?", "title": "Quels types de projets gérez-vous ?",
"description": "Applications web full stack, API REST, bots Discord, sites e-commerce, plateformes SaaS et solutions logicielles personnalis\u00e9es." "description": "Applications web full stack, API REST, bots Discord, sites e-commerce, plateformes SaaS et solutions logicielles personnalisées."
}, },
"collaboration": { "collaboration": {
"title": "Travaillez-vous \u00e0 distance ?", "title": "Travaillez-vous à distance ?",
"description": "Oui, je travaille avec des clients du monde entier. Collaboration \u00e0 distance via Slack, Discord, Zoom et outils de gestion de projet." "description": "Oui, je travaille avec des clients du monde entier. Collaboration à distance via Slack, Discord, Zoom et outils de gestion de projet."
} }
}, },
"form": { "form": {
@@ -292,12 +309,12 @@
"name": "Votre Nom", "name": "Votre Nom",
"email": "Adresse Email", "email": "Adresse Email",
"subject": "Sujet du Projet", "subject": "Sujet du Projet",
"message": "D\u00e9tails du Projet", "message": "Détails du Projet",
"submit": "Envoyer le Message", "submit": "Envoyer le Message",
"send": "Envoyer le Message", "send": "Envoyer le Message",
"sending": "Envoi en cours...", "sending": "Envoi en cours...",
"success": "Message envoy\u00e9 avec succ\u00e8s ! Je r\u00e9pondrai dans les 24 heures.", "success": "Message envoyé avec succès ! Je répondrai dans les 24 heures.",
"error": "Erreur lors de l'envoi du message. Veuillez r\u00e9essayer ou envoyer un email directement.", "error": "Erreur lors de l'envoi du message. Veuillez réessayer ou envoyer un email directement.",
"required": "Ce champ est requis", "required": "Ce champ est requis",
"invalidEmail": "Veuillez entrer une adresse email valide", "invalidEmail": "Veuillez entrer une adresse email valide",
"validation": { "validation": {
@@ -308,70 +325,70 @@
}, },
"info": { "info": {
"title": "Construisons Quelque Chose de Grand", "title": "Construisons Quelque Chose de Grand",
"description": "Que vous ayez besoin d'une application Vue.js, d'un site React, d'une API Node.js ou d'une solution logicielle personnalis\u00e9e, je suis l\u00e0 pour donner vie \u00e0 votre vision.", "description": "Que vous ayez besoin d'une application Vue.js, d'un site React, d'une API Node.js ou d'une solution logicielle personnalisée, je suis là pour donner vie à votre vision.",
"email": "Email", "email": "Email",
"social": "Profils Sociaux" "social": "Profils Sociaux"
} }
}, },
"projectData": { "projectData": {
"virtual-tour": { "virtual-tour": {
"title": "Visite Virtuelle - Exp\u00e9rience 360\u00b0 Interactive", "title": "Visite Virtuelle - Expérience 360° Interactive",
"description": "Mon professeur de lyc\u00e9e et moi avons eu l'id\u00e9e de cr\u00e9er une visite virtuelle avec des vid\u00e9os 360\u00b0 pour permettre \u00e0 tous de visiter l'\u00e9cole depuis le web.", "description": "Mon professeur de lycée et moi avons eu l'idée de créer une visite virtuelle avec des vidéos 360° pour permettre à tous de visiter l'école depuis le web.",
"longDescription": "Projet collaboratif avec mon professeur de lyc\u00e9e pour cr\u00e9er une exp\u00e9rience de visite virtuelle immersive de notre \u00e9tablissement. Utilise des vid\u00e9os 360\u00b0 pour offrir une navigation interactive.", "longDescription": "Projet collaboratif avec mon professeur de lycée pour créer une expérience de visite virtuelle immersive de notre établissement. Utilise des vidéos 360° pour offrir une navigation interactive.",
"buttons": { "buttons": {
"visit": "Visiter" "visit": "Visiter"
} }
}, },
"xinko": { "xinko": {
"title": "Xinko - Bot Discord Polyvalent", "title": "Xinko - Bot Discord Polyvalent",
"description": "Xinko est un bot polyvalent qui peut vous aider \u00e0 cr\u00e9er et g\u00e9rer vos serveurs Discord avec facilit\u00e9 et plaisir.", "description": "Xinko est un bot polyvalent qui peut vous aider à créer et gérer vos serveurs Discord avec facilité et plaisir.",
"longDescription": "Bot Discord complet con\u00e7u pour simplifier la gestion des serveurs. Xinko offre une large gamme de commandes pour la mod\u00e9ration, le divertissement, l'utilitaire et la gestion communautaire.", "longDescription": "Bot Discord complet conçu pour simplifier la gestion des serveurs. Xinko offre une large gamme de commandes pour la modération, le divertissement, l'utilitaire et la gestion communautaire.",
"buttons": { "buttons": {
"invite": "Inviter" "invite": "Inviter"
} }
}, },
"image-manipulation": { "image-manipulation": {
"title": "Manipulation d'Images - Package NPM", "title": "Manipulation d'Images - Package NPM",
"description": "Discord Image Generation : Package NPM pour la manipulation d'images bas\u00e9e sur le code. Initialement une API, maintenant open-source.", "description": "Discord Image Generation : Package NPM pour la manipulation d'images basée sur le code. Initialement une API, maintenant open-source.",
"longDescription": "Package NPM open-source pour la g\u00e9n\u00e9ration et manipulation d'images programmatique.", "longDescription": "Package NPM open-source pour la génération et manipulation d'images programmatique.",
"buttons": { "buttons": {
"repository": "D\u00e9p\u00f4t", "repository": "Dépôt",
"npm package": "Package NPM" "npm package": "Package NPM"
} }
}, },
"primate-web-admin": { "primate-web-admin": {
"title": "Primate Web Admin - Interface de Gestion", "title": "Primate Web Admin - Interface de Gestion",
"description": "Primate Web Admin est une interface Web pour g\u00e9rer Primate qui est un outil de d\u00e9ploiement similaire \u00e0 Munki pour Windows.", "description": "Primate Web Admin est une interface Web pour gérer Primate qui est un outil de déploiement similaire à Munki pour Windows.",
"longDescription": "Interface d'administration web moderne pour Primate, un syst\u00e8me de d\u00e9ploiement de logiciels pour environnements Windows.", "longDescription": "Interface d'administration web moderne pour Primate, un système de déploiement de logiciels pour environnements Windows.",
"buttons": {} "buttons": {}
}, },
"instagram-bot": { "instagram-bot": {
"title": "Bot Instagram - Automatisation Compl\u00e8te", "title": "Bot Instagram - Automatisation Complète",
"description": "Bot Instagram enti\u00e8rement fonctionnel utilisant Insta.js par androz2091. Il poss\u00e8de de nombreuses commandes.", "description": "Bot Instagram entièrement fonctionnel utilisant Insta.js par androz2091. Il possède de nombreuses commandes.",
"longDescription": "Bot d'automatisation Instagram d\u00e9velopp\u00e9 avec la biblioth\u00e8que Insta.js d'androz2091.", "longDescription": "Bot d'automatisation Instagram développé avec la bibliothèque Insta.js d'androz2091.",
"buttons": { "buttons": {
"repository": "D\u00e9p\u00f4t" "repository": "Dépôt"
} }
}, },
"crowdin-status-bot": { "crowdin-status-bot": {
"title": "Bot de Statut Crowdin - Suivi des Traductions", "title": "Bot de Statut Crowdin - Suivi des Traductions",
"description": "Un bot qui r\u00e9cup\u00e8re le statut des traductions Crowdin et met \u00e0 jour les messages Discord avec le dernier statut.", "description": "Un bot qui récupère le statut des traductions Crowdin et met à jour les messages Discord avec le dernier statut.",
"longDescription": "Bot Discord sp\u00e9cialis\u00e9 dans le suivi automatique des projets de traduction Crowdin.", "longDescription": "Bot Discord spécialisé dans le suivi automatique des projets de traduction Crowdin.",
"buttons": { "buttons": {
"repository": "D\u00e9p\u00f4t" "repository": "Dépôt"
} }
}, },
"flowboard": { "flowboard": {
"title": "FlowBoard - Clone de Trello", "title": "FlowBoard - Clone de Trello",
"description": "FlowBoard est une solution compl\u00e8te de gestion de projet pour rationaliser les t\u00e2ches, la collaboration d'\u00e9quipe et le suivi des progr\u00e8s.", "description": "FlowBoard est une solution complète de gestion de projet pour rationaliser les tâches, la collaboration d'équipe et le suivi des progrès.",
"longDescription": "FlowBoard r\u00e9volutionne la collaboration d'\u00e9quipe et la gestion de projet avec sa suite compl\u00e8te d'outils.", "longDescription": "FlowBoard révolutionne la collaboration d'équipe et la gestion de projet avec sa suite complète d'outils.",
"buttons": {} "buttons": {}
} }
}, },
"common": { "common": {
"loading": "Chargement...", "loading": "Chargement...",
"error": "Une erreur s'est produite", "error": "Une erreur s'est produite",
"retry": "R\u00e9essayer", "retry": "Réessayer",
"close": "Fermer", "close": "Fermer",
"save": "Sauvegarder", "save": "Sauvegarder",
"cancel": "Annuler", "cancel": "Annuler",
@@ -381,60 +398,63 @@
"view": "Voir", "view": "Voir",
"back": "Retour", "back": "Retour",
"next": "Suivant", "next": "Suivant",
"previous": "Pr\u00e9c\u00e9dent", "previous": "Précédent",
"search": "Rechercher", "search": "Rechercher",
"filter": "Filtrer", "filter": "Filtrer",
"sort": "Trier", "sort": "Trier",
"reset": "R\u00e9initialiser" "reset": "Réinitialiser"
}, },
"testimonials": { "testimonials": {
"title": "Ce Que Disent Mes Clients", "title": "Ce Que Disent Mes Clients",
"subtitle": "Plus de 10 projets livr\u00e9s avec succ\u00e8s. D\u00e9couvrez les t\u00e9moignages authentiques de clients satisfaits.", "subtitle": "Plus de 10 projets livrés avec succès. Découvrez les témoignages authentiques de clients satisfaits.",
"stats": { "stats": {
"clients": "Clients Satisfaits", "clients": "Clients Satisfaits",
"rating": "Note Moyenne", "rating": "note moyenne",
"projects": "Projets Livr\u00e9s" "projects": "projets livres",
"reviews": "avis clients"
}, },
"ctaTitle": "Rejoignez Mes Clients Satisfaits", "ctaTitle": "Rejoignez Mes Clients Satisfaits",
"ctaSubtitle": "Votre projet m\u00e9rite le m\u00eame niveau d'excellence et de professionnalisme.", "ctaSubtitle": "Votre projet mérite le même niveau d'excellence et de professionnalisme.",
"ctaText": "D\u00e9marrer Mon Projet", "ctaText": "Démarrer Mon Projet",
"reviewsLink": "https://www.fiverr.com/mr_kayjaydee", "reviewsLink": "https://www.fiverr.com/mr_kayjaydee",
"reviewsText": "Voir Tous les Avis", "reviewsText": "Voir Tous les Avis",
"card": { "card": {
"featured": "T\u00e9moignage Vedette", "featured": "Témoignage Vedette",
"results": "R\u00e9sultats obtenus :" "results": "Résultats obtenus :"
} },
"label": "// temoignages",
"empty": "Aucun temoignage disponible pour l'instant."
}, },
"faq": { "faq": {
"title": "Questions Fr\u00e9quentes", "title": "Questions Fréquentes",
"subtitle": "Trouvez rapidement les r\u00e9ponses \u00e0 vos questions les plus courantes", "subtitle": "Trouvez rapidement les réponses à vos questions les plus courantes",
"keyPoints": "Points cl\u00e9s :", "keyPoints": "Points clés :",
"homeFaq": { "homeFaq": {
"delivery": { "delivery": {
"question": "Quels sont vos d\u00e9lais de livraison typiques ?", "question": "Quels sont vos délais de livraison typiques ?",
"answer": "Les d\u00e9lais varient selon la complexit\u00e9 du projet. Bot Discord simple : 3-5 jours. Site vitrine : 1-2 semaines. Application web complexe : 4-8 semaines.", "answer": "Les délais varient selon la complexité du projet. Bot Discord simple : 3-5 jours. Site vitrine : 1-2 semaines. Application web complexe : 4-8 semaines.",
"features": [ "features": [
"Planning d\u00e9taill\u00e9 fourni", "Planning détaillé fourni",
"Mises \u00e0 jour quotidiennes", "Mises à jour quotidiennes",
"Livraison souvent en avance" "Livraison souvent en avance"
] ]
}, },
"maintenance": { "maintenance": {
"question": "Proposez-vous de la maintenance apr\u00e8s livraison ?", "question": "Proposez-vous de la maintenance après livraison ?",
"answer": "Absolument ! Chaque projet inclut une p\u00e9riode de maintenance gratuite. Je propose \u00e9galement des contrats de maintenance mensuels.", "answer": "Absolument ! Chaque projet inclut une période de maintenance gratuite. Je propose également des contrats de maintenance mensuels.",
"features": [ "features": [
"Support gratuit selon le package", "Support gratuit selon le package",
"Mises \u00e0 jour de s\u00e9curit\u00e9", "Mises à jour de sécurité",
"Monitoring 24/7 disponible" "Monitoring 24/7 disponible"
] ]
}, },
"companies": { "companies": {
"question": "Travaillez-vous avec des entreprises de toutes tailles ?", "question": "Travaillez-vous avec des entreprises de toutes tailles ?",
"answer": "Oui ! De la startup au grand groupe, j'adapte mes services \u00e0 vos besoins et votre budget.", "answer": "Oui ! De la startup au grand groupe, j'adapte mes services à vos besoins et votre budget.",
"features": [ "features": [
"Solutions sur-mesure", "Solutions sur-mesure",
"Tarifs adapt\u00e9s", "Tarifs adaptés",
"Accompagnement personnalis\u00e9" "Accompagnement personnalisé"
] ]
} }
} }
@@ -443,5 +463,91 @@
"notFound": "Oups ! Cette page est introuvable.", "notFound": "Oups ! Cette page est introuvable.",
"generic": "Une erreur est survenue.", "generic": "Une erreur est survenue.",
"backHome": "Retour a l'accueil" "backHome": "Retour a l'accueil"
},
"hytale": {
"hero": {
"label": "// hytale",
"title": "Plugins Hytale sur-mesure",
"subtitle": "Developpement de plugins performants pour votre serveur Hytale, de la conception a la livraison."
},
"services": {
"label": "// services",
"title": "Expertise Hytale",
"subtitle": "Des solutions adaptees a chaque besoin",
"items": {
"plugin": {
"title": "Developpement de Plugins",
"description": "Plugins Hytale sur-mesure, des fonctionnalites simples aux systemes complexes. Code performant et optimise pour votre serveur."
},
"config": {
"title": "Configuration Serveur",
"description": "Mise en place et optimisation de votre serveur Hytale. Configuration avancee, integration de plugins et performances maximales."
},
"support": {
"title": "Maintenance & Support",
"description": "Support continu pour vos plugins et votre serveur. Mises a jour, corrections de bugs et monitoring pour une experience sans faille."
}
}
},
"pricing": {
"label": "// tarifs",
"title": "Tarifs",
"subtitle": "Des offres transparentes pour chaque projet",
"cta": "Demander un devis",
"popular": "Populaire",
"from": "A partir de",
"perMonth": "/mois",
"onQuote": "Sur devis",
"simple": {
"name": "Plugin Simple",
"description": "Un plugin basique avec des fonctionnalites simples",
"features": [
"Fonctionnalites de base",
"Configuration simple",
"Documentation incluse",
"Support 30 jours"
]
},
"complex": {
"name": "Plugin Complexe",
"description": "Un plugin avance avec des systemes complexes",
"features": [
"Systemes avances",
"Integration API",
"Tests complets",
"Support 60 jours"
]
},
"custom": {
"name": "Developpement Sur-Mesure",
"description": "Un projet entierement personnalise",
"features": [
"Architecture sur-mesure",
"Fonctionnalites illimitees",
"Support prioritaire",
"Maintenance incluse"
]
},
"maintenance": {
"name": "Maintenance & Support",
"description": "Support continu pour vos plugins",
"features": [
"Mises a jour regulieres",
"Corrections de bugs",
"Support technique",
"Monitoring"
]
},
"web": {
"name": "Developpement Web",
"description": "Sites web et applications pour votre communaute",
"features": [
"Site responsive",
"SEO optimise",
"Dashboard admin",
"Integration Discord"
]
}
}
} }
} }
+8
View File
@@ -85,10 +85,18 @@ export interface FiverrConfig {
services: FiverrService[] services: FiverrService[]
} }
export interface PricingTier {
id: string
priceFixed: string | null
priceLabel?: string
featured?: boolean
}
export interface SiteConfig { export interface SiteConfig {
name: string name: string
title: string title: string
description: string description: string
jobTitle?: string
author: string author: string
contact: ContactInfo contact: ContactInfo
social: SocialLink[] social: SocialLink[]