e9b5dccbe2
Rewrite workflow copy, wire contact form to Formspree, fix contact layout
...
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
...
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
7acb73b7fd
Fix healthcheck: use 127.0.0.1 instead of localhost for Alpine compatibility
...
Build and Deploy Website / build-and-deploy (push) Has been cancelled
Alpine Linux resolves localhost to ::1 (IPv6), but nginx only listens on
IPv4. This caused healthchecks to fail, keeping the container in "starting"
state and preventing Traefik from creating a router.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-06 01:27:30 -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
d5d775b1c2
fix rsync
2025-07-01 15:13:59 -06:00
a54cfba761
Remove ssh debug, add rsync
2025-07-01 15:11:25 -06:00
f7af26c661
Add manual trigger
2025-07-01 14:55:04 -06:00
708e82adf6
Debug ssh
2025-07-01 14:52:33 -06:00
0f6f663c5f
Corrected ip
2025-07-01 14:45:48 -06:00
5048cb6afc
Test deployment workflow
Deploy Website / deploy (push) Failing after 11s
2025-07-01 14:41:42 -06:00
3d2689b197
Add website deployment workflow
2025-07-01 14:38:49 -06:00
bbaa23b82a
Initial commit
2025-06-30 23:25:56 -06:00