99 lines
3.2 KiB
TypeScript
99 lines
3.2 KiB
TypeScript
/**
|
|
* Site-wide configuration for GridPilot website.
|
|
*
|
|
* Values are primarily sourced from environment variables so that
|
|
* deployments can provide real company details without hard-coding
|
|
* production data in the repository.
|
|
*/
|
|
|
|
const env = {
|
|
platformName: process.env.NEXT_PUBLIC_SITE_NAME,
|
|
platformUrl: process.env.NEXT_PUBLIC_SITE_URL,
|
|
supportEmail: process.env.NEXT_PUBLIC_SUPPORT_EMAIL,
|
|
sponsorEmail: process.env.NEXT_PUBLIC_SPONSOR_EMAIL,
|
|
legalCompanyName: process.env.NEXT_PUBLIC_LEGAL_COMPANY_NAME,
|
|
legalVatId: process.env.NEXT_PUBLIC_LEGAL_VAT_ID,
|
|
legalRegisteredCountry: process.env.NEXT_PUBLIC_LEGAL_REGISTERED_COUNTRY,
|
|
legalRegisteredAddress: process.env.NEXT_PUBLIC_LEGAL_REGISTERED_ADDRESS,
|
|
} as const;
|
|
|
|
export const siteConfig = {
|
|
// Platform Information
|
|
platformName: env.platformName ?? 'GridPilot',
|
|
platformUrl: env.platformUrl ?? 'https://gridpilot.com',
|
|
|
|
// Contact Information
|
|
supportEmail: env.supportEmail ?? 'support@example.com',
|
|
sponsorEmail: env.sponsorEmail ?? 'sponsors@example.com',
|
|
|
|
// Legal & Business Information
|
|
legal: {
|
|
companyName: env.legalCompanyName ?? '',
|
|
vatId: env.legalVatId ?? '',
|
|
registeredCountry: env.legalRegisteredCountry ?? '',
|
|
registeredAddress: env.legalRegisteredAddress ?? '',
|
|
},
|
|
|
|
// Platform Fees
|
|
fees: {
|
|
platformFeePercent: 10, // 10% platform fee on sponsorships
|
|
description: 'Platform fee supports maintenance, analytics, and secure payment processing.',
|
|
},
|
|
|
|
// VAT Information
|
|
vat: {
|
|
// Note: All prices displayed are exclusive of VAT
|
|
euReverseChargeApplies: true,
|
|
nonEuVatExempt: true,
|
|
standardRate: 20,
|
|
notice: 'All prices shown are exclusive of VAT. Applicable taxes will be calculated at checkout.',
|
|
euBusinessNotice: 'EU businesses with a valid VAT ID may apply reverse charge.',
|
|
nonEuNotice: 'Non-EU businesses are not charged VAT.',
|
|
},
|
|
|
|
// Sponsorship Types Available
|
|
sponsorshipTypes: {
|
|
leagues: {
|
|
enabled: true,
|
|
title: 'League Sponsorship',
|
|
description: 'Sponsor entire racing leagues and get your brand in front of all participants.',
|
|
},
|
|
teams: {
|
|
enabled: true,
|
|
title: 'Team Sponsorship',
|
|
description: 'Partner with competitive racing teams for long-term brand association.',
|
|
},
|
|
drivers: {
|
|
enabled: true,
|
|
title: 'Driver Sponsorship',
|
|
description: 'Support individual drivers and grow with rising sim racing talent.',
|
|
},
|
|
races: {
|
|
enabled: true,
|
|
title: 'Race Sponsorship',
|
|
description: 'Sponsor individual race events for targeted, high-impact exposure.',
|
|
},
|
|
platform: {
|
|
enabled: true,
|
|
title: 'Platform Advertising',
|
|
description: 'Reach the entire GridPilot audience with strategic platform placements.',
|
|
},
|
|
},
|
|
|
|
// Feature Flags for Sponsorship Features
|
|
features: {
|
|
// What sponsors can actually get (no broadcast control)
|
|
liveryPlacement: true,
|
|
leaguePageBranding: true,
|
|
racePageBranding: true,
|
|
profileBadges: true,
|
|
socialMediaMentions: true,
|
|
newsletterInclusion: true,
|
|
homepageAds: true,
|
|
sidebarAds: true,
|
|
// We don't control these
|
|
broadcastOverlays: false, // We don't control broadcast
|
|
},
|
|
} as const;
|
|
|
|
export type SiteConfig = typeof siteConfig; |