Repository navigation
feat: redesign feature sections and add dedicated SEO pages - #4
Merged
Merged
Conversation
Remove @google/genai, express, dotenv, and @types/express, which nothing imports. Add pinned @types/react and @types/react-dom so tsc can typecheck the React components.
Replace the old three-tab features page with animated feature sections
built on fresh dark-theme screenshots, keeping the existing hero.
- Home: self-hosting, frame-accurate review, file formats (with an
interactive 3D turntable), metadata and collections, semantic search,
watermarked share links, kanban, and the Shumai Agent, plus a feature
grid, Frame.io comparison, FAQ, and install CTA
- Dedicated prerendered pages: /frame-io-alternative, /self-hosted, and
/features/{video-review,file-formats,metadata,semantic-search,
share-links,kanban,ai-agent}
- Per-page titles, descriptions, canonicals, OG images, and JSON-LD
(Organization, WebSite, SoftwareApplication, WebPage, BreadcrumbList,
FAQPage); sitemap generated at build time
- Site header with anchors and mobile menu; rewritten footer
- Animations run only in view and respect prefers-reduced-motion
- Dev server serves known routes so dedicated pages work in `vite dev`
- verify-ssg now checks every route, OG images, sitemap, and 404 page
- Remove the outdated screenshots and unused legacy components
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Replaces the old three-tab features page and its outdated screenshots with animated feature sections built on fresh dark-theme screenshots of a seeded Shumai instance. The hero is unchanged. The new copy focuses on self-hosting and data ownership for teams thinking about leaving Frame.io.
Home page
prefers-reduced-motionDedicated pages (prerendered)
/frame-io-alternative,/self-hosted/features/{video-review,file-formats,metadata,semantic-search,share-links,kanban,ai-agent}public/og/*.jpg, 1200x630), and structured data (Organization, WebPage, BreadcrumbList, FAQPage; the home page adds WebSite and SoftwareApplication)sitemap.xmlis generated at build time; the static one is removedAccuracy
Other
vite.config.ts: a small dev-only plugin serves the app for known routes, so dedicated pages work undervite dev(they returned 404 before)chorecommit: removes unused@google/genai,express,dotenv,@types/express; adds pinned@types/react/@types/react-dom(the repo had no React types)InteractiveShowcase,ChineseBorder, and the old*-example.webpscreenshotsTesting
bun run validatepasses (Biome,tsc --noEmit, build plus prerender,verify:ssg)scripts/verify-ssg.tswas rewritten to run 172 checks covering every route (title, description, canonical, OG/Twitter tags, OG image file, JSON-LD types, a single correct H1, section headings, FAQ questions, internal links), plus the sitemap,robots.txt, and the 404 page. I confirmed it fails when an OG image is deleted.Not tested:
wrangler dev/ a real Cloudflare deployment (local servers couldn't be started in my environment, so I previewed the builtdist/through request interception).