Pricing refonte après rapport 3 (RESEARCH/Hytale/3 Pricing Calibration).
**Décision clé du rapport** : aucun serveur Hytale n'a payé €500+ pour
un plugin single en 2026 (public data). Top server Runeteria = 29 CCU
peak, €200-800/mois gross revenue ceiling. 70-80% du top 30 serveurs
= volunteer/owner-coded, zéro budget externe.
**Nouvelle grille adaptée à la réalité du marché Hytale** :
- Plugin Essentiel 149€ (1 feature, ≤8h, livraison 3-5j)
- Système Sur-Mesure 349€ (GUI in-game, ≤20h, 1-2 sem) [featured]
- Module Flagship 790€ (quote-based, top-30 tier only)
- Retainer Mensuel 450€/mois (~12h/mo)
- Site Gaming 500€
**Ajout** : pricingNote avec mention 45€/h (spot fixes) et flagship CTA.
Ancienne grille (400€/1500€/5000€) filtrait 95% du marché — non viable.
Nouvelle grille capture ~85% de la demande Hytale observée tout en
laissant room upsell pour les 5-8 flagship servers réels.
RESEARCH/Hytale/3 ajouté (rapport complet avec top 30 audit, BBB
scatter analysis, WTP evidence par segment, 3 scénarios projetés).
- variant="default" (listing): cover image conditional (D-03 no fallback),
aspect-[16/9], first tag UBadge, date i18n via Intl.DateTimeFormat,
h2 title, line-clamp-2 description, reading time + extra tags pills,
absolute inset-0 NuxtLink for SEO/a11y (D-02 tags non-clickable)
- variant="compact" (prev/next, D-09/D-10): no image, label row with
UIcon arrow (left/right per direction), h3 title, date mono,
text-right on next / text-left on prev
- Props: article, variant?='default'|'compact', direction?='prev'|'next'
- Slug derived from article.path last segment (locale-agnostic)
- readingMinutes: uses article.minutes (Nitro hook) with useReadingTime
fallback on article.description
- Schema.org BlogPosting markup (headline/description/keywords/url/image/
datePublished) — ready for Phase 7 JSON-LD Article
- a11y aria-label interpolated via t('a11y.blogPrev'|'blogNext', {title})
- Insert { key: 'blog', path: '/blog' } in navLinks computed array
- Position: between hytale and projects (D-15 ordering)
- Template v-for iterations unchanged — new link auto-propagates to
desktop nav + mobile slideover
- Label resolved via t(`nav.${link.key}`) → uses nav.blog key
added in Task 2.1
- Pure synchronous helper returning minutes (>= 1) from either a pre-computed
word count (number) or raw text (string, tokenized on whitespace).
- Client-side safety net when `article.minutes` isn't yet populated
(e.g., dev hot-reload before the Nitro hook re-parsed). Source of truth
remains the Nitro `content:file:afterParse` hook (D-19).
- Same 200 wpm formula as server-side hook — ensures listing ↔ article parity.
- Auto-imported by Nuxt thanks to `use*` naming convention.
- Pure AST traversal of @nuxt/content v3 minimal body shape
- Skips code and pre tags (code snippets are not readable prose)
- Zero dependency, zero import, reused by Nitro hook
- content/fr/blog/test-kotlin-syntax.md: FR test article covering all 4 validation criteria
- content/en/blog/test-kotlin-syntax.md: EN version with same slug
- app/pages/test.vue: temporary page at /test for visual checkpoint verification
- Both articles contain: kotlin code block, NuxtImg image, markdown table, 4 callout types
- 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.
- Switched from npm to pnpm for dependency management in Dockerfile, improving build efficiency.
- Updated Vue and Vue Router versions in package.json for better compatibility.
- Changed placeholder URLs in site.ts to actual Fiverr links and adjusted review count.
- Removed obsolete sitemap.xml file to streamline the project.
- Added a new rate limiting plugin to manage API request limits for the contact endpoint.
- Corrected the name in various files including CLAUDE.md, README.md, and configuration files to reflect the updated branding.
- Ensured consistency in the use of the new name throughout the project, enhancing brand identity.
Complete visual overhaul of all pages and components with generous spacing,
bold typography, hover effects, gradient accents, and section differentiation.
Hero features animated terminal mockup and gradient text. Cards use hover
transforms with brand-colored shadows. CTAs use gradient backgrounds.
All i18n keys, data structures, SEO meta, and composable logic preserved.
UDrawer (vaul-vue bottom-sheet) rendered content in DOM even when closed,
causing mobile nav to show on desktop. Replaced with USlideover (proper
sidebar panel). Also: backdrop-blur header, UButton for actions, Lucide
icons, brand color active states.
- Hero with stats (available services count, rating) and profile CTA
- Service cards grid with NuxtImg, price/status badges, order buttons
- FAQSection with UAccordion using homeFAQs data
- Final CTA section linking to Fiverr profile
- Dynamic route /project/[id] with findById composable
- 404 via createError if project not found
- Hero grid: image + info + CTA buttons (demo, source, custom)
- About section with features list (checkmarks)
- Technologies section with TechBadge
- Gallery thumbnails with zoom overlay, opens ProjectGallery modal
- Sidebar: project info card + related projects
- Responsive 2-col layout (main + sidebar)