Skip to content

Site redesign: Proposed pages, homepage motion, compare rewrite, contact into booking - #33

Merged
cultron merged 31 commits into
mainfrom
feat/site-redesign
Oct 26, 2026
Merged

cultron merged 31 commits into
mainfrom
feat/site-redesign

Conversation

@cultron

@cultron cultron commented Oct 24, 2026

Copy link
Copy Markdown
Contributor

Site redesign: every Proposed Figma page, the approved homepage motion, the rewritten compare pages, and a contact form that feeds GoHighLevel and leads into booking a call. Reviewed and signed off by Matt on 2026-10-24.

Do not merge yet. Merging deploys apso.ai through Amplify. Set the contact form's secrets first (see "Before merge").

What's in it

Checks

  • tsc, lint, npm run test:contact (4 cases), the secret scan, and next build (50 pages) all pass.
  • I loaded all 23 routes at 390px: no horizontal scroll, every page has an h1, and the redirect works.

Before merge

  1. Set the contact form's secrets on the Amplify main branch:
    AMPLIFY_APP_ID=<apso-site app id> scripts/with-secrets.sh scripts/sync-amplify-env.sh main --dry-run, then run it again without --dry-run.
  2. Change the Business Inquiry calendar's description in GoHighLevel to read as a demo call.

Follow-ups (filed)

#28 Cloudflare and Pulumi hosting, #29 SDR agent, #30 unsupported claims, #31 the "why we built Apso" post, #32 GoHighLevel cleanup, and #19, #20, #21, #23, #24 (partly addressed here).

Closes #17, closes #18, closes #22, closes #25, closes #26, closes #27.

Pricing: three workspace plans with Enterprise folded into Business,
service tiers as rows with Medium and Large marked coming soon, static
FAQ, navy sales band with the dogs. Contact: booking card plus form with
Required/Optional labels and a Topic select, and a message-sent state
that offers the calendar.
…Figma

Compare-specific layout with short-answer cards, checked and numbered lists,
side-by-side table and the grey 'What you keep' band. Index ordered by a new
order frontmatter field.
/templates: starter library with featured and all-starters grids, category chips, search, load more, and a schema drawer (opens from /templates#<starter>).
/use-cases: two-column hero with the schema card, pattern rows linking to the guide and starters, navy closing band with the dogs illustration.
/use-cases/[slug]: own read layout with breadcrumb, On this page list (collapsible on phone), dark labeled code panels, numbered steps, and a next-step card. saas-backend copy matches Figma except the deploy paragraph, which keeps the vendor-free wording.
…25, #26)

Hero build story with the rigged face dog, Lottie walk, face pack, confetti and the second change;
frontend chips limited to documented stacks; scroll-linked How it works scenes; growing face-dog pack
in the deploy band. Reduced motion and no-JS show final states; lottie-web loads near the hero.
- Move /customers to /who-its-for with a permanent redirect; footer label and sitemap updated
- Company: named partners, company facts, real team photo
- Blog index lists posts first; article layout redesigned; introducing-apso auth and multi-tenancy lines corrected
- FAQ: corrected pricing and auth answers; native details accordion; topic nav
- Privacy: new layout; rewritten policy behind NEXT_PUBLIC_PRIVACY_V2=1, live text served by default
- Local ClosingBand with the dogs illustration replaces PageCta on these pages
The message form now lives in the Apso GHL sub-account as "Apso website
contact" (0Q3yEbXgn21YUC0B20MA), styled with custom CSS to match the
Figma. Removes the server action, the resend and zod dependencies, and
RESEND_API_KEY from .env.example.
The server action upserts the contact in the Apso GHL sub-account
(name, email, company, topic/role/message custom fields), adds a note,
and re-adds the website-contact tag. If GHL is unconfigured or fails,
it emails CONTACT_TO_EMAIL (default matt@apso.ai) via Resend. If both
fail the form keeps the visitor's input and offers email or a call.
npm run test:contact covers the three paths with fetch mocked.
…dd OG and Twitter share images

Header dropdowns and mobile menu move to the new system (Poppins, gray scale, brand blue, no mono eyebrows, 13px minimum) and use a disclosure pattern with Escape returning focus to the trigger. 404 gets a dog and a docs link. MDX tables fit the blog column. Share images render with next/og from locally bundled OFL fonts.
@cultron

cultron commented Oct 24, 2026

Copy link
Copy Markdown
Contributor Author

Upgraded Next.js 16.2.7 to 16.4.3 (exact). 16.2.0 to 16.3.5 have CVE-2026-94545, a critical remote code execution in next/og ImageResponse, fixed in 16.3.6. This branch adds next/og share images, so the upgrade has to land before merge. Note that main is also on 16.2.7, but it doesn't use next/og. After the upgrade, tsc, lint, the contact tests and next build (50 pages) pass, and the key routes and share images return 200 on the dev server.

… plan is DevOps as a service

Product: Backend generator -> /#generator, Agent workflow -> /#how-it-works,
Deploy and own -> /pricing. Solutions and footer go to /use-cases row anchors.
Business: Talk to sales, DevOps as a service with professional services;
drop SSO, service agreements and rollout support.
GTM, GA and the Meta pixel load lazyOnload. Mobile pricing LCP 5.4s -> 2.6s (Lighthouse, simulated).
Home: muted panel text #64748b -> #7c8aa0 (5.35:1), inactive ticks no longer dimmed to 30%,
tick labels 11px -> 12px, CTA band body text white (5.17:1). Home accessibility 96 -> 100.
…d llms.txt

- alternates.canonical on all routes so the workers.dev preview is not indexed as a duplicate
- FAQPage schema on /faq and /pricing; Article + BreadcrumbList on compare, blog and use-case pages
- /llms.txt is now a static route built from the pricing data and content frontmatter.
  The old file listed Enterprise with SSO, named Lambda and RDS, credited Mavric, and linked
  docs.apso.ai; it listed none of the compare pages.
@cultron
cultron merged commit 45e5c38 into main Oct 26, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment