MuseMVP Docs
Quick Build

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

index.ts
types.ts
custom-common.ts
custom-page-home.tsx
custom-page-features.tsx
custom-page-pricing.tsx
custom-page-contact.tsx
custom-page-changelog.tsx
custom-faq.ts
custom-legal.ts
pricing-desc.ts
pricing-desc-usage.ts

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,
};
SectionDescription
heroHero section
featuresShowcaseFeatures showcase
ctaSectionCall-to-action
pricingSectionPricing
faqSectionFAQ
newsletterNewsletter 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:

ConfigDescription
ui.features.enabledFeatures page /features
ui.docs.enabledDocs /docs
ui.blog.enabledBlog /blog
ui.changelog.enabledChangelog /changelog
ui.contactForm.enabledContact form /contact
ui.legal.enabledLegal pages /legal/*

src/config/custom-common.ts provides:

  • getHeaderMenuItems(): Header menu items
  • useFooterLinks(): Footer link groups
  • useFooterSocialIcons(): 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 lists
  • pricing-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 gateway
  • originalAmount: 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.*).


src/config/custom-legal.ts controls privacy policy, terms, and community guidelines:

ConfigDescription
useLegalCustomPrivacyDataUse custom privacy policy
legalI18nPrivacyContentPrivacy content by locale
useLegalCustomTermsDataUse custom terms
legalI18nTermsContentTerms content by locale
useLegalCustomBehaviorDataUse custom behavior guidelines
legalI18nBehaviorContentBehavior 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.