Rebrand to PortlifyAi with SEO, favicons, and UI polish#3
Merged
Conversation
ashish200729
commented
Jun 6, 2026
Collaborator
- Add centralized brand/SEO constants, SeoManager, and dynamic portfolio meta
- Regenerate favicons from portlify_clean_logo and update manifest/index.html
- Make PortlifyAi logo link to landing page from portfolio and dashboard navbar
- Ship portfolio single-viewport layout, scroll area, onboarding progress, and Clerk theming
- Update robots.txt, sitemap, og-image, and backend export branding copy
- Add centralized brand/SEO constants, SeoManager, and dynamic portfolio meta - Regenerate favicons from portlify_clean_logo and update manifest/index.html - Make PortlifyAi logo link to landing page from portfolio and dashboard navbar - Ship portfolio single-viewport layout, scroll area, onboarding progress, and Clerk theming - Update robots.txt, sitemap, og-image, and backend export branding copy
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Pull request overview
This PR rebrands the app to PortlifyAi and centralizes branding/SEO behavior while polishing the portfolio and onboarding UI. It introduces a client-side SEO manager + structured data utilities, updates icons/manifest/OG assets, and refactors several UI surfaces (portfolio single-viewport layout, onboarding step UI, Clerk theming).
Changes:
- Added centralized brand + SEO constants, plus a
SeoManagerandapplySiteSeo()utilities (including portfolio JSON-LD). - Refreshed public assets and metadata (favicons, manifest, robots.txt, sitemap, OG image) for the PortlifyAi brand.
- Updated portfolio/onboarding UI (single-viewport portfolio scroll area, compact footer option, onboarding progress + cards) and moved Clerk theming into a theme-aware provider.
Reviewed changes
Copilot reviewed 36 out of 46 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| frontend/src/utils/seo.js | New SEO utility for applying meta tags + JSON-LD and building portfolio SEO payloads. |
| frontend/src/utils/clerkAppearance.js | Refactors Clerk appearance into tokenized theme config. |
| frontend/src/utils/api.js | Updates dev warning copy to PortlifyAi. |
| frontend/src/portfolio/theme.js | Exposes palette/theme options for onboarding + portfolio theming. |
| frontend/src/portfolio/PortfolioTemplate.jsx | Converts portfolio to single-viewport layout with animated section swapping + internal scroll area. |
| frontend/src/portfolio/portfolio.css | Adds scroll-area styling, hidden scrollbars, fade overlays, and print overrides. |
| frontend/src/portfolio/components/TopBar.jsx | Replaces “Portfolio” anchor with brand logo link to landing page. |
| frontend/src/portfolio/components/SectionNav.jsx | Updates mobile nav styling and adds aria-current. |
| frontend/src/portfolio/components/SectionContent.jsx | Minor layout tweaks and updates fallback copy to PortlifyAi. |
| frontend/src/portfolio/components/ProfileAside.jsx | Makes aside scrollable in constrained height layouts; adds aria-current. |
| frontend/src/portfolio/components/PortfolioScrollArea.jsx | New component providing scroll container + fade indicators. |
| frontend/src/portfolio/components/Footer.jsx | Adds compact mode and updates “Built with” branding + logo. |
| frontend/src/pages/Settings.jsx | Updates custom branding help text to PortlifyAi. |
| frontend/src/pages/Premium.jsx | Uses brand display name for checkout payload. |
| frontend/src/pages/Portfolio.jsx | Replaces ad-hoc meta updates with centralized SEO builder + reset on unmount. |
| frontend/src/pages/Onboarding.jsx | Refactors onboarding UI into reusable components + theme selection from constants. |
| frontend/src/pages/Landing.jsx | Updates copy to brand constants and replaces footer mark with BrandLogo. |
| frontend/src/main.jsx | Removes inline ClerkProvider setup (moved into App-level provider). |
| frontend/src/index.css | Adds global CSS overrides for Clerk user button popover styling. |
| frontend/src/constants/seo.js | Adds route-based SEO config + helpers for private/public/portfolio routes. |
| frontend/src/constants/brand.js | New single source of truth for brand name, keywords, URLs, and assets. |
| frontend/src/components/SeoManager.jsx | New component to apply route-level SEO for non-portfolio pages. |
| frontend/src/components/onboarding/OnboardingThemeCard.jsx | New reusable theme selection card component. |
| frontend/src/components/onboarding/OnboardingProgress.jsx | New onboarding progress indicator component. |
| frontend/src/components/onboarding/OnboardingOptionCard.jsx | New reusable option card component for onboarding steps. |
| frontend/src/components/Navbar.jsx | Swaps text/logo mark for BrandLogo and normalizes link to landing. |
| frontend/src/components/ClerkThemeProvider.jsx | New theme-aware wrapper for ClerkProvider. |
| frontend/src/components/BrandLogo.jsx | New shared brand logo/name component. |
| frontend/src/App.jsx | Wraps app with ClerkThemeProvider and adds SeoManager. |
| frontend/public/sitemap.xml | Refreshes lastmod dates. |
| frontend/public/robots.txt | Updates comment header to PortlifyAi. |
| frontend/public/og-image.svg | Updates OG SVG to use logo image and PortlifyAi wordmark. |
| frontend/public/manifest.json | Updates PWA metadata and icons for new branding. |
| frontend/public/favicon.svg | Updates SVG favicon to reference new logo asset. |
| frontend/package.json | Reorders devDependencies (no functional change). |
| frontend/package-lock.json | Updates locked dependencies (notably Clerk/shared + js-cookie). |
| frontend/index.html | Updates static meta tags, schema.org blocks, and favicon links for PortlifyAi. |
| backend/src/routes/export.js | Updates exported portfolio copy/README branding to PortlifyAi. |
| backend/src/index.js | Updates root API status message branding to PortlifyAi. |
Files not reviewed (1)
- frontend/package-lock.json: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+100
to
+102
| document.title = meta.title | ||
|
|
||
| upsertMeta('meta[name="description"]', { content: meta.description }) |
Comment on lines
+114
to
+117
| upsertMeta('meta[name="twitter:card"]', { content: 'summary_large_image' }) | ||
| upsertMeta('meta[name="twitter:title"]', { content: meta.title }) | ||
| upsertMeta('meta[name="twitter:description"]', { content: meta.description }) | ||
| upsertMeta('meta[name="twitter:image"]', { content: meta.ogImage }) |
| @@ -0,0 +1,47 @@ | |||
| import { BRAND_LOGO_ALT, BRAND_LOGO_SRC, BRAND_NAME_DISPLAY } from '../constants/brand' | |||
| resizeObserver.disconnect() | ||
| mutationObserver.disconnect() | ||
| } | ||
| }, [updateScrollState, children]) |
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.