Skip to content

feat: Add SYSmoAI marketing pages, WhatsApp CTA, font shim, and storefront resilience#1

Open
sysmoai wants to merge 3 commits intomasterfrom
codex/build-and-deploy-sysmoai-marketing-site
Open

feat: Add SYSmoAI marketing pages, WhatsApp CTA, font shim, and storefront resilience#1
sysmoai wants to merge 3 commits intomasterfrom
codex/build-and-deploy-sysmoai-marketing-site

Conversation

@sysmoai
Copy link
Copy Markdown
Owner

@sysmoai sysmoai commented Apr 3, 2026

Motivation

  • Prevent storefront crashes when the GraphQL backend is unreachable by adding safe fallbacks for region and collection loaders.
  • Provide a minimal marketing site (about, services, industries, contact, blog) and a floating WhatsApp CTA so visitors can reach SYSmoAI quickly.
  • Remove runtime Google Font fetching (which can fail in restricted build environments) and replace it with a local shim and system-font variables.

Description

  • Add try/catch fallbacks in features/storefront/lib/data/regions.ts and features/storefront/lib/data/collections.ts so getRegion returns null, listRegions returns { regions: [] }, and collections functions return { collections: [], count: 0 } on error.
  • Make the homepage resilient to missing region data by always rendering the hero and only showing featured collections when region and collections are available (features/storefront/screens/HomePage.tsx).
  • Create a reusable WhatsApp floating CTA component at components/ui/whatsapp-float.tsx and mount it in the storefront main layout (features/storefront/screens/MainLayout.tsx).
  • Replace next/font/google usage in storefront/dashboard logo and CTA components and add a webpack alias for next/font/google/target.css with a local shim file styles/font-shim.css, plus system-font CSS variables and SYSmoAI brand tokens added to app/globals.css and next.config.ts updated.
  • Add five marketing pages under app/(storefront)/[countryCode]/(main)/ (about, services, contact, blog, industries) and add a canonical app/sitemap.ts.

Testing

  • Ran npx next build --webpack which completed successfully and generated the site routes without font-fetch or GraphQL fatal errors.
  • Scanned the repo for next/font/google and other forbidden strings with rg and found no remaining matches in app/components/lib (scans returned no issues).
  • Verified the new pages and components compile by running the build; the build step finished with a successful compile and static page generation.
  • Note: environment secrets (Replit runtime env) and live redeploy were not changed here and must be configured during deployment for full runtime verification.

Codex Task

@sysmoai sysmoai self-assigned this Apr 3, 2026
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 631549dbe0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@@ -0,0 +1,24 @@
import { MetadataRoute } from 'next'

export default function sitemap(): MetadataRoute.Sitemap {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Exempt sitemap.xml from country-code redirects

This root metadata route generates /sitemap.xml, but our middleware stack (proxy.ts matcher + handleStorefrontRoutes in features/storefront/middleware.ts) redirects any non-country-prefixed path to /{countryCode}/.... In practice, /sitemap.xml is redirected to something like /us/sitemap.xml, and there is no handler for that path, so crawlers get a 404 instead of the sitemap. Please either exclude sitemap.xml from middleware matching or generate the sitemap at a country-prefixed route that actually resolves.

Useful? React with 👍 / 👎.

Comment on lines +14 to +15
{ path: '/privacy', priority: 0.4, freq: 'yearly' as const },
{ path: '/terms', priority: 0.4, freq: 'yearly' as const },
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove non-existent URLs from sitemap entries

The sitemap currently advertises /privacy and /terms, but there are no corresponding storefront page routes for these paths (the new pages added in this commit are /about, /services, /industries, /contact, and /blog). Emitting URLs that resolve to 404 reduces sitemap quality and wastes crawl budget; these entries should be removed or pointed at real routes.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant