9.8 KiB
phase, plan, type, wave, depends_on, files_modified, autonomous, requirements, must_haves
| phase | plan | type | wave | depends_on | files_modified | autonomous | requirements | must_haves | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 02-content | 02 | execute | 2 |
|
|
true |
|
|
Purpose: The homepage must immediately communicate that Killian is a Hytale developer (CONT-01), show featured client testimonials (CONT-04), and provide navigation to the new /hytale page.
Output: Updated HeroSection, TestimonialsSection with featured prop, AppHeader with /hytale nav link.
<execution_context> @$HOME/.claude/get-shit-done/workflows/execute-plan.md @$HOME/.claude/get-shit-done/templates/summary.md </execution_context>
@.planning/PROJECT.md @.planning/ROADMAP.md @.planning/phases/02-content/02-CONTEXT.md @.planning/phases/02-content/02-RESEARCH.md @.planning/phases/02-content/02-UI-SPEC.md @.planning/phases/02-content/02-01-SUMMARY.md@app/components/sections/HeroSection.vue @app/components/sections/TestimonialsSection.vue @app/components/layout/AppHeader.vue @app/pages/index.vue @i18n/locales/fr.json @i18n/locales/en.json
export interface Testimonial { name: string; role: string; company: string; avatar: string; rating: number; content: string; date: string; platform: string; featured?: boolean; project_type: string; results?: string[]; }export const testimonials: Testimonial[] // 5 items, 3 with featured: true export const testimonialsStats: TestimonialsStats // totalReviews: 5
home.title, home.subtitle, home.badge.available, home.cta.discord, home.cta.contact, home.stats.projects, home.stats.rating, home.terminal.role, nav.hytale
Task 1: Refonte HeroSection.vue for Hytale branding + i18n app/components/sections/HeroSection.vue app/components/sections/HeroSection.vue, i18n/locales/fr.json Modify HeroSection.vue to rebrand for Hytale per D-01 through D-07 and UI-SPEC:-
H1 text — Replace current title with
{{ t('home.title') }}(renders "Hytale Plugin Developer"). Keep the existing gradient text styling from UI-SPEC:bg-gradient-to-r from-brand-500 via-brand-400 to-emerald-400 bg-clip-text text-transparent. -
Subtitle — Replace with
{{ t('home.subtitle') }}(per D-04). -
Badge "Available for projects" — The hardcoded string (around line 31) must become
{{ t('home.badge.available') }}(per D-03). Keep the animated ping dot and existing styling. -
CTAs — Replace existing CTA buttons with exactly 2 buttons per D-02:
- Primary: Discord link —
UButtonwithcolor="primary", iconi-simple-icons-discord, text{{ t('home.cta.discord') }}, links to Discord URL from siteConfig.social (find Discord entry). Addtarget="_blank" rel="noopener". - Secondary: Contact —
UButtonwithvariant="outline", text{{ t('home.cta.contact') }}, links tolocalePath('/contact').
- Primary: Discord link —
-
Floating stats cards — Replace hardcoded "50+ projects" and "5.0 rating" strings (around lines 148-153) with
{{ t('home.stats.projects') }}and{{ t('home.stats.rating') }}. -
Terminal role — If the hero has a terminal/code block showing a role string (like 'Full Stack Dev'), replace with
{{ t('home.terminal.role') }}or the literal 'Hytale Plugin Developer'. -
Right column — Per D-05 and D-06, keep the existing 2-column grid layout. Keep whatever is on the right side (placeholder/illustration) as-is. Do NOT add an image.
-
Import
siteConfigfrom~/data/siteto get the Discord URL:siteConfig.social.find(s => s.name === 'Discord')?.url. grep -q "t('home.title')" app/components/sections/HeroSection.vue && grep -q "t('home.badge.available')" app/components/sections/HeroSection.vue && grep -q "t('home.cta.discord')" app/components/sections/HeroSection.vue && grep -q "t('home.cta.contact')" app/components/sections/HeroSection.vue && echo "PASS" || echo "FAIL" <acceptance_criteria>grep "Available for projects" app/components/sections/HeroSection.vuereturns NO matches (hardcoded string removed)grep "t('home.title')" app/components/sections/HeroSection.vuematchesgrep "t('home.badge.available')" app/components/sections/HeroSection.vuematchesgrep "discord" app/components/sections/HeroSection.vueshows Discord CTAgrep "t('home.cta.contact')" app/components/sections/HeroSection.vuematches- No hardcoded English/French strings remain in visible text areas </acceptance_criteria> HeroSection displays "Hytale Plugin Developer" H1, Hytale subtitle, i18n badge, Discord+Contact CTAs, i18n stats — all via t() keys
Also ensure any hardcoded testimonial-related strings use i18n keys from plan 01:
- Section label should use
t('testimonials.label') - Section title should use
t('testimonials.title') - Stats labels:
t('testimonials.stats.reviews'),t('testimonials.stats.rating'),t('testimonials.stats.projects')
-
AppHeader.vue — Add /hytale nav link (per D-19). Insert after 'home' in navLinks:
{ key: 'hytale', path: '/hytale' },This single line addition makes it appear in both desktop nav and mobile drawer (same navLinks array drives both).
-
index.vue — Pass
featuredprop to TestimonialsSection:<TestimonialsSection featured />This makes the homepage show only 2-3 featured testimonials instead of all 5. grep -q "featured" app/components/sections/TestimonialsSection.vue && grep -q "hytale" app/components/layout/AppHeader.vue && grep -q "featured" app/pages/index.vue && echo "PASS" || echo "FAIL" <acceptance_criteria>
grep "defineProps" app/components/sections/TestimonialsSection.vueshows featured propgrep "hytale" app/components/layout/AppHeader.vueshows nav entrygrep "TestimonialsSection" app/pages/index.vueshows featured prop passed- Existing carousel scroll pattern preserved in TestimonialsSection </acceptance_criteria> TestimonialsSection filters by featured prop on homepage (3 shown), all 5 shown by default. Nav includes /hytale. index.vue passes featured prop.
<threat_model>
Trust Boundaries
| Boundary | Description |
|---|---|
| External Discord link | Hero CTA opens external Discord URL |
STRIDE Threat Register
| Threat ID | Category | Component | Disposition | Mitigation Plan |
|---|---|---|---|---|
| T-02-03 | S (Spoofing) | Discord link in HeroSection | mitigate | Use rel="noopener" on external link, URL from siteConfig (not user input) |
| T-02-04 | T (Tampering) | i18n keys | accept | Static JSON files, no runtime modification |
| </threat_model> |
<success_criteria>
- Hero communicates Hytale positioning immediately
- Testimonials section is reusable with featured filter
- Navigation includes /hytale link
- All visible text uses i18n t() function </success_criteria>