kayjaydee
9a1be02c6c
feat(03-01): create ContactForm with Zod validation and nodemailer SMTP server route
...
- ContactForm.vue: UForm + Zod schema (name/email/message) + useToast feedback
- server/api/contact.post.ts: nodemailer SMTP with server-side validation + HTML escaping
- SMTP credentials in private runtimeConfig (T-03-03)
- HTML escaping prevents XSS in email body (T-03-02)
2026-04-08 18:34:38 +02:00
kayjaydee
5502364e77
feat(03-01): create 9 shared components for landing sections and project display
...
- HeroSection: title + subtitle + 3 CTA UButtons
- FeaturedProjectsSection: 3 featured projects via useProjects()
- ServicesSection: 4 service cards with UCard + UIcon
- TestimonialsSection: UCard per testimonial with ratings and stats
- FAQSection: UAccordion with i18n-resolved items
- CTASection: final CTA with 2 UButtons
- ProjectCard: NuxtLink + NuxtImg + UBadge + schema.org microdata
- TechBadge: Technology lookup with NuxtImg + UBadge level
- ProjectGallery: UModal fullscreen + UCarousel + thumbnails + keyboard nav
2026-04-08 18:34:03 +02:00
kayjaydee
9e0149d49d
feat: remove formation/pricing page and all related content
...
Formation was a SaaS pricing page unrelated to the portfolio.
Removed: page, nav link, locale keys (nav.formation, seo.formation,
pricing.*) in both FR and EN, legacy source files.
2026-04-08 17:24:54 +02:00
kayjaydee
2332c69557
fix(02): resolve 3 typecheck errors and i18n langDir path
...
- useSetLocale → destructured setLocale from useI18n()
- addSeoAttributes → seo option for useLocaleHead()
- process.env → import.meta.env for Nuxt compatibility
- langDir: 'locales/' → 'app/locales/' (Nuxt 4 resolves from project root)
2026-04-08 16:31:58 +02:00
kayjaydee
c320085435
feat(02-02): create AppFooter, default layout, update app.vue with useLocaleHead
...
- AppFooter with copyright + Gitea/LinkedIn/Fiverr social icons (rel=noopener noreferrer)
- Default layout wraps header + slot + footer with min-h-screen flex
- app.vue uses NuxtLayout + useLocaleHead for global hreflang/canonical
- Fixed a11y.github -> a11y.gitea in both locale files
2026-04-08 16:26:14 +02:00
kayjaydee
57f60e4bdc
feat(02-02): create AppHeader with nav, lang/theme toggles, mobile drawer
...
- Sticky header with z-[1020], desktop nav with locale-aware NuxtLinks
- FR/EN text toggle using useSetLocale, dark/light icon toggle using useColorMode
- Mobile UDrawer with stacked nav links and toggles
- WCAG: min-w-11 min-h-11 touch targets, focus-visible:ring-2, aria-current on active link
2026-04-08 16:25:16 +02:00