Commit Graph

8 Commits

Author SHA1 Message Date
8f6220b592 Move contact section heading to full width above the two-column grid
Some checks failed
Build and Deploy Website / build-and-deploy (push) Failing after 52s
The form card now starts aligned with the contact method boxes instead
of the heading, reducing wasted vertical space on desktop.
2026-02-06 10:58:34 -07:00
e9b5dccbe2 Rewrite workflow copy, wire contact form to Formspree, fix contact layout
Some checks failed
Build and Deploy Website / build-and-deploy (push) Failing after 45s
- Rewrote all workflow step descriptions, taglines, and deliverables
  with more engaging, conversational copy
- Connected contact form to Formspree (xpqjzzwj) with error handling
- Fixed blank space under Send Message button on desktop (items-start)
- Updated test assertions to match new workflow copy
2026-02-06 10:44:56 -07:00
5786af6359 Fix WorkflowCarousel mobile layout: compact 2x2 pill grid
Some checks failed
Build and Deploy Website / build-and-deploy (push) Failing after 5m22s
Step cards now display as compact pills in a 2x2 grid on mobile so both
the selectors and detail panel fit on screen without scrolling. Desktop
layout unchanged.
2026-02-06 10:17:05 -07:00
eccaf8a60d Complete Phase 4: Polish, Docker, CI/CD, and deployment readiness
- Fix responsive issues: Card/detail panel use p-4 md:p-8, larger
  progress dots, tighter mobile gaps in Contact section
- Fix lint errors: remove unused vars in BentoCard, AnimatedSection;
  fix explicit-any in ExpandableServiceCard test
- Fix zod-validation-error v4 dependency for eslint-plugin-react-hooks
- Add type-check script to package.json
- Create multi-stage Dockerfile (node:20-alpine build, nginx:alpine serve)
- Create .dockerignore to exclude dev files from build context
- Create nginx.conf with SPA routing, gzip, caching, security headers
- Update docker-compose.yml: build context replaces volume mount,
  preserve Traefik labels, add healthcheck
- Rewrite CI/CD pipeline: Node.js setup, npm ci, type-check, lint,
  test, build, rsync + docker compose build on server
- Add AI-generated images for all placeholder locations
- Archive original index.html as index.html.original

All checks pass: tsc --noEmit, eslint, 222/222 tests, vite build

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 01:27:30 -07:00
2a59beeac8 Fix WorkflowCarousel layout and add placeholder image system
Restructure WorkflowCarousel into tab headers + detail panel to eliminate
blank space in inactive cards and jarring height jumps on step change.
Detail panel uses a grid overlay crossfade for smooth transitions.

Add PlaceholderImage component and integrate into Hero, BentoCard,
WorkflowCarousel detail panel, and Contact sections. Include AI generation
prompts (PROMPTS.md) for future image creation with Nano Banana 3.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 01:27:12 -07:00
3f8c807dac Complete Phase 3: Feature components and micro-interactions
- Add WorkflowStep component with active/inactive states
- Add WorkflowCarousel with auto-advance, keyboard nav, progress dots
- Add ExpandableServiceCard with controlled/uncontrolled expand
- Add BentoCard with lg/md/sm responsive layouts
- Add BentoGrid section with asymmetric card layout
- Add shared animation utilities and micro-interactions
- Enhance Header logo with hover effects
- Fix Header test flakiness with waitFor

Components: WorkflowStep, WorkflowCarousel, ExpandableServiceCard,
BentoCard, BentoGrid

Data files: workflow.ts, services.ts

Total: 227 passing tests (80 new tests added)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 01:27:12 -07:00
f368ae9f8d Complete Phase 2: Core sections and animation system
- Hero section with gradient headline, CTAs, capability badges
- Stats section with animated count-up numbers
- Contact section with form validation
- Input component for form fields
- useIntersectionObserver hook for scroll detection
- useAnimateOnScroll hook for scroll-triggered animations
- AnimatedSection wrapper component
- Animation variants utility (fade-up, fade-in, slide-left/right)

147 passing tests (65 new tests added)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 01:27:12 -07:00
c915a3cd66 Complete Phase 1: React modernization foundation
- Initialize Vite + React 19 + TypeScript project
- Configure Tailwind CSS v4 with design tokens
- Add Button component (13 tests)
- Add Card component (11 tests)
- Add Container component (9 tests)
- Add Header component with glassmorphism (17 tests)
- Add Footer component (13 tests)
- Add MobileNav with slide-out menu (19 tests)
- Update App.tsx with layout preview

82 tests passing

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 01:27:12 -07:00