Commit graph

14 commits

Author SHA1 Message Date
Vadym Samoilenko
dcd6eb487e fix: ref callback return type in InteractiveMenu
Block body prevents implicit return of HTMLButtonElement | null,
fixing TS error in stricter React ref type checking.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 13:53:24 +00:00
Vadym Samoilenko
239e6a4c43 fix: sync pnpm-lock.yaml with package.json
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 13:50:23 +00:00
Vadym Samoilenko
986bbd5a3c fix: gen_secret SIGPIPE crash with set -o pipefail
tr/head pipe causes SIGPIPE exit 141, killing script silently.
Wrap with set +o pipefail guard.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 13:46:01 +00:00
Vadym Samoilenko
fc4688cc6f feat: add production deploy script and docker-compose
- deploy.sh: idempotent deploy for Ubuntu server (Docker + Nginx + SSL)
- docker-compose.prod.yml: production compose (runner target, localhost-only port)
- .gitignore: exclude .env.production and .deploy-config

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 13:41:29 +00:00
Vadym Samoilenko
7bb25f9c59 feat: add courses page, real contact details, Courses to navigation
- New /courses page with 5 course cards (Interview Ready, Self
  Assessment, Payroll, QuickBooks, Xero) with thumbnail images,
  pricing, includes checklists, and enrol CTAs
- Added course images to public/courses/ and Assets/
- Contact page: updated email, phone (07440 594192), address
  (Suite 29 Beaufort Court E14 9XL), hours, and added Courses
  option to the "I'm interested in" select field
- Header: added Courses to desktop nav and mobile dock
  (GraduationCap icon) between Services and Blog

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 13:25:16 +00:00
Vadym Samoilenko
9d4bb7ad34 fix: add missing href to all broken buttons across site
- services/page.tsx: 'Book Free Consultation' bottom CTA → /contact
- services/[slug]/page.tsx: hero + final CTA 'Book Free Consultation' → /contact;
  fix nested <Link> inside secondary Button (invalid HTML) → href prop
- blog/page.tsx: 'Subscribe to newsletter' → /contact (no newsletter service yet)
- blog/[slug]/page.tsx: inline 'Book Free Consultation' CTA → /contact

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 13:03:32 +00:00
Vadym Samoilenko
e4fcc5b9c8 fix: add missing href to 'Get your quote' button on services page
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 13:00:40 +00:00
Vadym Samoilenko
946c6a44ab fix: remove duplicate CTAs and calendar reference
- services/page.tsx: remove duplicate 'Talk to us' (both went to /contact);
  fix 'Book Free Consultation' missing href; swap to BeamButton for consistency
- about/page.tsx: remove 'Contact Us' button duplicating BeamButton on same page;
  remove now-unused Button import
- contact/page.tsx: replace "directly in our calendar" with call-back copy
  since no calendar integration exists yet

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 12:55:29 +00:00
Vadym Samoilenko
28b999b1ae fix: align all CTAs with concept — every CTA leads to contact form
- ProcessSection: 'Get started' href /services → /contact
- BlogPreviewSection: fix invalid <Link> nested inside <Button> (was <button><a>)
- ContactPage: 'Book free consultation' sidebar button now href="#contact-form"
  with matching id on the form element (was unclickable — no href)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 12:51:57 +00:00
Vadym Samoilenko
7cd698d6d6 feat: UI polish — SolutionSection stacked cards, BeamButton CTA, Footer redesign
- SolutionSection: replace flat cards with interactive stacked card layout
  (skew, grayscale, hover lift, click-to-expand with z-50 + skew reset)
- BeamButton: new component with framer-motion SVG beam animation along
  pill border (emerald→blue gradient); variants dark/light
- HeroSection + FinalCTASection: primary CTA switched to BeamButton
- Footer: replace programmatic SVG logo with logo-axil.png via next/image;
  add AImpress LTD credit link; increase hero text height
- TextHoverEffect: fix viewBox (920×100), use SVG-unit fontSize, split
  AXIL (blue #1B9AD6) / ACCOUNTANTS (emerald #3CC68A) via tspan

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 12:30:50 +00:00
Vadym Samoilenko
83a8878f4a feat: redesign HeroSection to 3-column MinimalistHero layout
- HeroSection: 3-col layout (copy | concentric circles+dashboard | display headline)
  - 'use client' + framer-motion entrance animations (slide in from sides, scale centre)
  - DashboardPreview inline component (compact portal mockup)
  - Two floating stat mini-cards (Avg Tax Saved, Response Time)
  - Mobile: stacked layout, right headline column hidden, H1 in left column
- ContainerScroll: simplified — removed 72rem scroll container and scroll transforms;
  now plain layout wrapper with CSS fadeInUp entrance
- Header: logo size increased h-10 → h-13 (40px → 52px)
- fix: escape apostrophes in ProcessSection, SolutionSection, TestimonialsSection
- fix: remove unused customSize param from SpotlightCard
- docs: update CONTEXT_HANDOVER.md with session 4 changes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 21:20:42 +00:00
Vadym Samoilenko
8db56af042 refactor: replace hardcoded hex colors with design system tokens
Replace all hardcoded hex color values in components with Tailwind CSS
classes or CSS custom properties matching the design system tokens.
Affected files: Footer, TestimonialsColumn, HeroSection, StarIcon,
TextHoverEffect, and all page-level radial-gradient backgrounds.

Also fix eslint.config.mjs to use FlatCompat for eslint-config-next
legacy config compatibility with ESLint 9 flat config format, and
resolve pre-existing react/no-unescaped-entities errors in JSX files.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 20:36:50 +00:00
Vadym Samoilenko
9785c0997e docs: mark Feature 1 tasks as complete in implementation plan
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 22:44:54 +00:00
Vadym Samoilenko
e373c2b46c feat: project setup & repository (Feature 1)
- Next.js 16.1.6 with App Router, TypeScript strict, Tailwind CSS v4
- ESLint 9, Prettier with Tailwind class sorting plugin
- Husky + lint-staged pre-commit hooks
- Multi-stage Dockerfile (dev/build/production) with pnpm + Node 20
- docker-compose.yml with hot reload + PostgreSQL 17
- src/ directory structure (components, lib, hooks, types, payload)
- .env.example template with all required variables
- standalone output mode for production Docker builds

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 22:43:53 +00:00