- Testimonials section on home page (4 client quotes with service tags)
- Pricing page (#/pricing) — 3 tiers: Starter $499 / Growth $1499 / Enterprise custom
- Blog page (#/blog) — 4 articles with full content and category tags
- Nav: Services | Pricing | Blog | Timeline | Contact (conversion-focused)
- Contact form now POSTs to dashboard API (real email via Resend)
- PricingPage + BlogPage exposed as window globals
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Live Demo button appears when svc.demo exists,
View Repo button appears when svc.repo exists.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- mergeServices() maps API data (demoUrl, gitRepo, isActive) onto local static data
- sessionStorage cache (5 min TTL) like nav links
- GitHub button becomes a link when gitRepo is set
- Falls back to PORTFOLIO_DATA.services if API is unavailable
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add ChatboxWidget component (src/chatbox.jsx) with business hours check
- Update nav.jsx to fetch links dynamically from /api/public/links
- Wire ChatboxWidget into app.jsx
- Add chatbox.jsx script tag to index.html
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>