Comprehensive UI/UX audit reference · April 2026
The public profile page is the core product surface of RaveRep, the page every visitor sees when a rep shares their link. It dynamically composes a personal landing page from profile settings and content blocks.
3
Rendering Modes
Block Builder · Visual Editor · Legacy Sections
5
Header Styles
cover · centered · minimal · overlay · profile_pic_overlay
4
Profile Templates
Individual · Company · Brand · Recruiting
// Decision tree for rendering engine
if (profile.profile_type ∈ ['company','brand','recruiting']) {
→ Specialized Template (CompanyProfileTemplate | BrandProfileTemplate | RecruitingProfileTemplate)
} else if (profile.visual_sections_config.length > 0) {
→ Block Builder (visual_sections_config array, sorted by order)
} else if (visualSections.length > 0) {
→ Visual Editor (ProfilePreview canvas)
} else {
→ Legacy sections_order (string array fallback)
}
?username=Required. The rep's unique username slug.?preview=draftLoads draft_visual_sections_config instead of live.?track=CODEShare tracking code, increments ProfileShare views.?sig_template=Email signature tracking: template type.?sig_link=Email signature tracking: which link was clicked.?embedded=trueSkips layout wrapper for iframe embeds.narrowmax-w-xl~600pxCompact, focusednormal (default)max-w-3xl~768pxStandard, most usedwidemax-w-6xl~1152pxFull-width feelcompactspace-y-2 md:space-y-3Tight, densenormal (default)space-y-6 md:space-y-8Balanced spacingspaciousspace-y-10 md:space-y-14Airy, premium feelleft
center (default)
right
Background
Applied to the full page wrapper
bg-gradient-to-br from-slate-50 to-slate-100
Bottom padding
Ensures content clears fixed bottom bar
pb-32
Overflow
Prevents horizontal scroll on mobile
overflow-x-hidden
z-index (bottom bar)
Fixed bottom CTA bar sits above all content
z-[9999]
All header styles use the same HeaderRenderer component. Below are pixel-accurate previews of each style with a sample profile.
header_style = "cover"Full-width color/photo strip at top. Profile photo overlaps the bottom edge. Name, tagline, and social buttons on white below.
Top Sales Manager
Austin, TX · Acme Corp
h-36 md:h-44🖼 Photo: w-20 h-20 overlapping -mt-10✅ Most commonly used styleheader_style = "overlay"Cover photo fills the full header. Text is rendered on top of the image with a dark brand-colored gradient overlay. Profile photo sits above the name.
Top Sales Manager
Austin, TX · Acme Corp
header_style = "profile_pic_overlay"The profile photo fills the entire header height (object-contain, centered). Blurred version fills the sides. Name/socials sit at the bottom over a dark gradient.
Top Sales Manager · Acme Corp
header_style = "centered"No cover photo. Profile photo centered with a plain white background. Clean, simple, no distractions.
Top Sales Manager
Austin, TX
header_style = "minimal"Small avatar centered above the name. Subtle brand-tinted background. The most compact option, great for content-heavy profiles where you want users to scroll quickly.
Top Sales Manager
Austin, TX
compact
cover_photo_height = 'compact'
h-40 (160px)
normal (default)
cover_photo_height = 'normal'
h-64 (256px)
tall
cover_photo_height = 'tall'
h-80 (320px) + md:h-96
Cover style
Overlaps cover strip with -mt-10
w-20 h-20 md:w-28 md:h-28
Overlay / profile_pic_overlay
Larger for visual impact on dark backgrounds
w-28 h-28 md:w-36 md:h-36
Centered / Minimal
Centered layout uses larger photo
w-28 h-28 / w-20 h-20
Border
White ring separates photo from background
border-4 border-white shadow-md
Logo position
Logo pinned top-right on all cover-based styles
absolute top-4 right-4
Inter
inter
Sans-serif (default)
Roboto
roboto
Sans-serif
Poppins
poppins
Geometric sans-serif
Playfair Display
playfair
Serif
Montserrat
montserrat
Geometric sans-serif
Lora
lora
Serif
Open Sans
opensans
Humanist sans-serif
Raleway
raleway
Elegant sans-serif
All fonts loaded via Google Fonts on page load when set.
text-2xl md:text-3xl font-boldtext-xl md:text-2xl font-boldtext-5xl md:text-6xl font-extraboldtext-sm md:text-base font-semiboldtext-sm md:text-base text-slate-600text-base md:text-lg font-mediumtext-slate-700 leading-relaxed prose prose-smtext-xstext-[10px] leading-tight font-mediumtext-[9px] md:text-[10px] text-slate-400small
header_text_size field
text-xl md:text-2xl
medium (default)
text-2xl md:text-3xl
large
text-3xl md:text-4xl
xlarge
Bold statement style
text-5xl md:text-6xl font-extrabold
Purple (default)
#9333ea → #2563eb
Blue
#2563eb → #0891b2
Orange
#ea580c → #db2777
Green
#16a34a → #059669
Pink
#db2777 → #e11d48
Custom
Save Contact button
Bottom bar CTA (mobile)
Connect button
Bottom bar, always orange/pink
Leave a Rave
Bottom bar, always pink/purple
Page background
Full page bg
Card elevated (default)
Default card bg
Bottom bar
Fixed bottom panel
header_text_color
Overrides default white/dark text on header name/tagline
user-defined hex
tagline_color
Separate color control for tagline only
user-defined hex
Each section is controlled by a show_* boolean on the profile + content existence checks.
| Section Key | Profile Toggle | Content Check | Section Header |
|---|---|---|---|
| featured | show_featured_section | has featured items | None (no header text) |
| video | show_video | video_intro_url exists | None |
| videos | show_videos | videos.length > 0 | 🎥 Video Gallery |
| documents | show_documents | documents.length > 0 | 📄 Free Resources |
| goals | show_goals | goals.length > 0 | 🎯 My Goals |
| links | show_links | regularLinks.length > 0 | Links (customizable) |
| showcase | show_showcase | showcases.length > 0 | Per showcase.title |
| embeds | show_embeds | embedLinks.length > 0 | Media |
| raves | show_raves | always renders if enabled | profile.raves_section_header (default: 'Raves') |
Users can reorder via Section Order Manager. Order is stored on profile.sections_order.
When visual_sections_config is populated, the block builder renders instead of the legacy section order. Each block has { id, type, order, enabled, settings }.
All active links, sorted by order. Supports list + grid display modes.
Raves section with slider/grid/list display options.
All public goals with progress bars.
Video gallery grid.
Featured links, goals, raves and videos in theme gradient style.
Rich visual sections: gallery, listings, portfolio, etc.
Spotify, Calendly, forms, and iframe embeds.
Free resource downloads with gated email capture.
single_linkSpotlight one specific link, full-width button style.
single_goalHighlight one goal with progress bar.
single_raveFeature one testimonial card.
single_videoSpotlight one video with EnhancedVideoPlayer.
single_embedOne calendar, form, or iframe. Supports raw embed_url or Link record.
bg_color
Optional background wrapper around the block
Tailwind class
title
Custom section heading (e.g., links block)
string
showcase_ids
Filter showcases shown in a showcase block
string[]
selected_item_id
For single_* blocks, which item to spotlight
entity id
embed_url
For single_embed block, raw iframe or URL
url or HTML
The bottom bar is a fixed panel at the bottom of the page on both mobile and desktop. It is always visible and drives the primary conversion actions.
⚠ The "Save My Contact" button is only shown if show_contact_button !== false AND show_contact_in_bottom_bar !== false
Reps can add custom buttons via profile.custom_buttons[]. Each button: { id, label, url, icon, color, order }. These inject before the Connect button in both mobile and desktop bars.
show_contact_button
Controls 'Save Contact' button
boolean (default: true)
show_contact_in_bottom_bar
Controls mobile 'Save My Contact Info' large button
boolean (default: true)
contact_form_enabled
Shows Connect button
boolean (default: true)
show_referral_button
Shows Send Referral button
boolean (default: true)
The card_style field applies to all content cards (links, goals, raves, documents). Applied via the ContentCard component.
elevated (default)
White card with drop shadow
glass
Frosted glass, works on colored backgrounds
bordered
Stronger border, no shadow
minimal
Borderless, flat separation
gradient
Subtle gradient fill
slider (default)Horizontal drag/swipe carousel. One rave visible at a time on mobile.
Best for impact + mobile UX
grid2-column card grid on desktop, 1-column mobile.
Shows more at once
listFull-width stacked cards.
Best for long rave text
⚠ Deduplication by text prevents duplicate raves from appearing. Reps can hide individual seed raves via hidden_seed_rave_ids.
Sales Manager · Acme Corp
Mar 15, 2025
"This is where the rave message text appears. Long messages get truncated with a 'Read more' expand button after 250 characters..."
• Avatar: customer_photo or gradient initial fallback
• Check badge ✓: shown if customer has a RaveRep profile (customer_username exists)
• Relationship badge: formatted from snake_case → Title Case
• External link: shown for Google/Facebook/LinkedIn imported raves
• Video raves: rendered with RaveVideoPlayer inline
raves_section_header
Customizable section title, reps can rename to 'Testimonials', 'Reviews', etc.
string (default: 'Raves')
subtle (default)Fade in + slide up (y: 20→0, opacity: 0→1). 0.1s delays between items.
Library: framer-motion
dynamicSame as subtle but with whileHover scale (1.03) and x-axis slide (-20→0) on links.
Library: framer-motion
noneNo animations. Pure CSS, no motion wrappers.
Library: N/A
enable_parallax
Uses framer-motion useScroll + useTransform. scrollY [0,300] → coverY [0,150]
boolean (default: true)
Cover opacity on scroll
Cover photo fades slightly as user scrolls down
useTransform([0,300], [1, 0.3])
0.1s staggerdelay={1} or {2}delay={3}delay={2}delay={4}delay={5}idx * 0.1sBase (mobile-first)
Single column, compact spacing, bottom nav shows full-width Save Contact
< 768px
md: (tablet/desktop)
Desktop bottom bar (hidden md:flex), larger photo sizes, wider padding
≥ 768px
sm:
Grid columns switch from 1 to 2 in showcase/videos
≥ 640px
lg:
Video/showcase grids switch to 3 columns
≥ 1024px
Use this checklist to systematically review each area. Mark items and prioritize based on impact vs. effort.
RaveRep Profile Design Guide · Internal use · Generated April 2026