Custom Landing Page
Customize home, features, pricing, FAQ, and legal pages via src/config.
MuseMVP's landing pages are highly customizable. Core configuration and custom logic live in src/config. Modify config files and custom components to brand, toggle features, and replace content.
Config Entry
Global config in src/config/index.ts; feature switches in config.ui; page-specific logic in src/config/custom-*.ts.
Config Directory Structure
Home Page (custom-page-home)
src/config/custom-page-home.tsx controls which sections appear on the home page:
const systemShowConfig = {
hero: true,
featuresShowcase: true,
ctaSection: true,
pricingSection: true,
faqSection: true,
newsletter: true,
};| Section | Description |
|---|---|
hero | Hero section |
featuresShowcase | Features showcase |
ctaSection | Call-to-action |
pricingSection | Pricing |
faqSection | FAQ |
newsletter | Newsletter signup |
Set false to hide a section. Insert custom components at PLACEHOLDER comments.
Feature Switches (config.ui)
In src/config/index.ts, config.ui controls page visibility:
| Config | Description |
|---|---|
ui.features.enabled | Features page /features |
ui.docs.enabled | Docs /docs |
ui.blog.enabled | Blog /blog |
ui.changelog.enabled | Changelog /changelog |
ui.contactForm.enabled | Contact form /contact |
ui.legal.enabled | Legal pages /legal/* |
Header & Footer (custom-common)
src/config/custom-common.ts provides:
getHeaderMenuItems(): Header menu itemsuseFooterLinks(): Footer link groupsuseFooterSocialIcons(): Footer social icons
config.ui.headerConfig.customRoutes adds custom nav items (supports position: "left" | "center" | "right").
Pricing Page (custom-page-pricing)
src/config/custom-page-pricing.tsx controls the pricing page. Redirects to home when config.payments.enableBilling is false.
Pricing copy and plan display come from src/config/saas/pricing-desc-usage.ts and pricing-desc.ts.
pricing-desc.ts: plan titles, descriptions, and feature listspricing-desc-usage.ts: actual purchasable price items,productId, and billing behavior
If you want to show a compare-at/original price such as $249 and charge $199, configure it in pricing-desc-usage.ts:
{
type: "one-time",
productId: billingProductCatalog.lifetime.productId,
gatewayProductIds: billingProductCatalog.lifetime.gatewayProductIds,
originalAmount: 249,
amount: 199,
currency: "USD",
}Field semantics:
amount: the actual checkout amount sent to the billing gatewayoriginalAmount: optional UI-only compare-at price rendered as a strikethrough price in the pricing card
originalAmount is displayed only when it is greater than amount. If omitted, the pricing UI falls back to showing only the current price.
FAQ (custom-faq)
src/config/custom-faq.ts provides:
useFaqData(): FAQ list (question, answer)useFaqSectionData(): FAQ section title, description
Add custom FAQ data at PLACEHOLDER or via i18n (faq.items.*).
Legal Pages (custom-legal)
src/config/custom-legal.ts controls privacy policy, terms, and community guidelines:
| Config | Description |
|---|---|
useLegalCustomPrivacyData | Use custom privacy policy |
legalI18nPrivacyContent | Privacy content by locale |
useLegalCustomTermsData | Use custom terms |
legalI18nTermsContent | Terms content by locale |
useLegalCustomBehaviorData | Use custom behavior guidelines |
legalI18nBehaviorContent | Behavior content by locale |
Quick Customization Flow
Adjust config.ui in src/config/index.ts to control page visibility.
Edit systemShowConfig in custom-page-home.tsx for home sections.
Update headerConfig.customRoutes and footerConfig in custom-common.ts.
Add content in custom-faq.ts and custom-legal.ts as needed.