Pre-launch review of worlds/abeo-health/. The site builds clean, all 4 service detail pages render, the dispatch console works, brand colors are correct, mobile responsiveness is acceptable. Two real blockers, one hosting decision, and a polish list. With one focused day, this goes live.
Ship-ready: NO. Pre-launch with two blockers and a short fix list. Estimated time to ship-ready: 1 working day of focused execution.
The site builds clean, all 4 service detail pages render, the dispatch console works, brand colors are correct, and mobile responsiveness is acceptable. The blockers are: (1) hosting target undecided, (2) two video assets referenced but missing, and (3) backend integration for the contact form.
| Check | Result | Notes |
|---|---|---|
Production build (bun run build) |
✅ Clean | 393 modules, 317KB JS / 55KB CSS. No errors. |
Homepage routes (/) |
✅ Renders | All 9 sections load: Navbar, Hero, Mission, WhyChooseUs, Services, Testimonials, Contact, Careers, Footer + MascotAgent. |
Service detail pages (/services/{registry,ride,living,circle}) |
✅ Renders | All 4 pages load with hero + What's Included + How It Works + FAQ + cross-link CTA. |
Dispatch center (/dispatch) |
✅ Renders | Both Ride and Living modes; roster + log-entry + activity stream + event log all functional. localStorage persistence verified. |
| Mobile responsiveness (375px viewport) | ✅ Acceptable | Hero wraps cleanly; service cards stack to single column. Caveat: Navbar links stack vertically rather than collapsing to hamburger — minor polish opportunity. |
| Brand color compliance | ✅ Correct | Teal #42C2BE and Orange #FF8A34 used per brand guide. Orange used sparingly (CTAs + ó accent). |
| Typography | ✅ Correct | Nunito loaded from Google Fonts. ExtraBold for headings, Medium/Regular for body. |
| AB5 / DRA compliance language | ✅ Fixed | "Independent contractor" language removed from brand-guide and Registry detail page. Replaced with "Domestic Referral Agency under California Civil Code §1812.5095." |
| SEO meta tags | ✅ Upgraded | Description, keywords, canonical, Open Graph, Twitter Card, schema.org MedicalOrganization, theme-color all added to index.html. |
| Favicon | ✅ Correct | /logo-mark.png referenced and present in public/. |
| Console errors on page load | ✅ None | No runtime errors detected. |
File: src/components/Hero.jsx. Problem: Hero originally imported video-senior.mov and video-transport.mov from src/assets/. Files do not exist. Current state: Imports stubbed to empty strings. Hero buttons "Senior Care" and "Medical Transport" still render, modal still opens — but video playback will be empty until assets land. Fix: Either (a) supply the two .mov files in src/assets/, or (b) replace VideoModal with an image-only modal until videos are produced. Effort: 1 hour with assets in hand.
Status: Code shipped. Awaiting Resend API key + DNS records before forms go live. What's wired: ContactSection.jsx POSTs to /api/contact; BookRidePage.jsx POSTs to /api/book-ride; both endpoints implemented as Cloudflare Pages Functions in functions/api/contact.js and functions/api/book-ride.js; both functions send (a) coordinator alert email + (b) submitter confirmation email via the Resend API; mailto fallback and "call us" fallback wired in case the API is unreachable.
| # | Step |
|---|---|
| 1 | Sign up at resend.com (Brittany or Jack — free tier covers 3,000 emails/month, plenty for Phase 1) |
| 2 | Add abeo.health as a sending domain in Resend dashboard → Domains |
| 3 | Add the DNS records Resend provides (SPF, DKIM, DMARC) at your DNS host. If we deploy to Cloudflare Pages, DNS lives in Cloudflare — straightforward. |
| 4 | Verify the domain in Resend (auto-verifies once DNS propagates, ~10 min) |
| 5 | Create a Resend API key in dashboard → API Keys → "Create" → name it abeo-website-prod |
| 6 | In Cloudflare Pages dashboard → Settings → Environment variables → Production, add: RESEND_API_KEY=re_xxx... · COORDINATOR_EMAIL=info@abeo.health · FROM_EMAIL=notifications@abeo.health |
| 7 | Redeploy the site. Forms now live. |
Decide where this deploys. Recommendation: Cloudflare Pages — matches StarHub Studios infrastructure (TXP is on Cloudflare). Single Cloudflare account manages DNS, Pages, Workers (for contact form), R2 (for video assets if needed). DNS: point abeo.health apex to the Pages deployment. www → apex redirect.
| Host | Pros | Cons |
|---|---|---|
| Cloudflare Pages | Free tier, fast, integrated Workers for backend, mythOS infra parity | Requires Cloudflare account configuration |
| Vercel | Best React/Vite DX, instant previews, built-in analytics | Bandwidth limits at scale |
| Netlify | Simple form-handling out of the box, redirect rules straightforward | Not on mythOS infra path |
| Item | Effort | Impact |
|---|---|---|
| Mobile navbar → hamburger menu | 2h | UX |
| Image optimization (700KB+ hero/services backgrounds → WebP) | 2h | Performance |
| Lazy-load below-the-fold images | 1h | Performance |
| Real testimonials replace placeholder text | TBD | Trust |
| Accessibility: skip-to-content link, aria-labels on icon buttons, focus rings | 3h | A11y + SEO |
Add /dispatch auth gate (currently public; should be coordinator-only) |
4h | Security |
| Connect dispatch to Convex backend (replace localStorage) | 1d | Operational |
| Privacy policy + Terms of Service pages | TBD | Legal |
| HIPAA disclosure / privacy notice for any health data | TBD | Compliance |
Image optimization is the biggest performance lever. Three large PNG backgrounds = ~1.95MB total. Convert to WebP (~80% size reduction) for ~400KB total savings.
Marketing assets NOT in dist: the marketing/ folder (brand-guide, elevator-pitch, competitive-intel-oc, investor-deck, company-evaluation, deployment-readiness) is not included in the production build. It serves as repo-internal documentation. Investor deck can be hosted separately on a sales subdomain (e.g. pitch.abeo.health), distributed as a PDF (Chrome → Print → Save as PDF; deck has @media print styles), or sent as raw HTML for web-native viewing.
Server-side routing on Cloudflare Pages: all unknown paths must redirect to /index.html for the SPA router. Add _redirects: /* /index.html 200. · /dispatch is public. Anyone can access the dispatch console and write to localStorage. For internal use only — gate with auth before any sensitive client data lands. · Phone (949) 987-4605 is the canonical contact. Verify it routes correctly before launch. · info@abeo.health is the canonical email. Verify mail forwarding is configured.
| When | Step |
|---|---|
| Day 1 — Local fixes | Add _redirects, supply or stub video assets, fix mobile navbar, optimize 3 background PNGs to WebP. |
| Day 1 — Backend | Wire contact form (Formspree shortcut, or Cloudflare Workers proper). |
| Day 1 — Infrastructure | Cloudflare Pages project + DNS + info@abeo.health mail forwarding. |
| Day 2 — Final QA | Lighthouse audit, mobile device testing, end-to-end contact form test. |
| Day 2 — Soft launch | Deploy to staging URL, share with Saddleback case manager pilot contacts. |
| Day 3+ — Public launch | Apex DNS swap, social media, hospital partnership outreach. |
"The site is closer to ship-ready than expected. Two real blockers, one decision, and the polish list. With one focused day, this goes live."