163 lines
4.2 KiB
TypeScript
163 lines
4.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.
|
|
*
|
|
* Website must remain an API consumer (no adapter imports).
|
|
*/
|
|
|
|
export interface SiteConfigData {
|
|
// Platform Information
|
|
platformName: string;
|
|
platformUrl: string;
|
|
|
|
// Contact Information
|
|
supportEmail: string;
|
|
sponsorEmail: string;
|
|
|
|
// Legal & Business Information
|
|
legal: {
|
|
companyName: string;
|
|
vatId: string;
|
|
registeredCountry: string;
|
|
registeredAddress: string;
|
|
};
|
|
|
|
// Platform Fees
|
|
fees: {
|
|
platformFeePercent: number;
|
|
description: string;
|
|
};
|
|
|
|
// VAT Information
|
|
vat: {
|
|
euReverseChargeApplies: boolean;
|
|
nonEuVatExempt: boolean;
|
|
standardRate: number;
|
|
notice: string;
|
|
euBusinessNotice: string;
|
|
nonEuNotice: string;
|
|
};
|
|
|
|
// Sponsorship Types Available
|
|
sponsorshipTypes: {
|
|
leagues: {
|
|
enabled: boolean;
|
|
title: string;
|
|
description: string;
|
|
};
|
|
teams: {
|
|
enabled: boolean;
|
|
title: string;
|
|
description: string;
|
|
};
|
|
drivers: {
|
|
enabled: boolean;
|
|
title: string;
|
|
description: string;
|
|
};
|
|
races: {
|
|
enabled: boolean;
|
|
title: string;
|
|
description: string;
|
|
};
|
|
platform: {
|
|
enabled: boolean;
|
|
title: string;
|
|
description: string;
|
|
};
|
|
};
|
|
|
|
// Feature Flags for Sponsorship Features
|
|
features: {
|
|
liveryPlacement: boolean;
|
|
leaguePageBranding: boolean;
|
|
racePageBranding: boolean;
|
|
profileBadges: boolean;
|
|
socialMediaMentions: boolean;
|
|
newsletterInclusion: boolean;
|
|
homepageAds: boolean;
|
|
sidebarAds: boolean;
|
|
broadcastOverlays: boolean;
|
|
};
|
|
}
|
|
|
|
export const siteConfig: SiteConfigData = {
|
|
// Platform Information
|
|
platformName: process.env.NEXT_PUBLIC_SITE_NAME ?? 'GridPilot',
|
|
platformUrl: process.env.NEXT_PUBLIC_SITE_URL ?? 'https://gridpilot.com',
|
|
|
|
// Contact Information
|
|
supportEmail: process.env.NEXT_PUBLIC_SUPPORT_EMAIL ?? 'support@example.com',
|
|
sponsorEmail: process.env.NEXT_PUBLIC_SPONSOR_EMAIL ?? 'sponsors@example.com',
|
|
|
|
// Legal & Business Information
|
|
legal: {
|
|
companyName: process.env.NEXT_PUBLIC_LEGAL_COMPANY_NAME ?? '',
|
|
vatId: process.env.NEXT_PUBLIC_LEGAL_VAT_ID ?? '',
|
|
registeredCountry: process.env.NEXT_PUBLIC_LEGAL_REGISTERED_COUNTRY ?? '',
|
|
registeredAddress: process.env.NEXT_PUBLIC_LEGAL_REGISTERED_ADDRESS ?? '',
|
|
},
|
|
|
|
// Platform Fees
|
|
fees: {
|
|
platformFeePercent: 10,
|
|
description: 'Platform fee supports maintenance, analytics, and secure payment processing.',
|
|
},
|
|
|
|
// VAT Information
|
|
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: {
|
|
liveryPlacement: true,
|
|
leaguePageBranding: true,
|
|
racePageBranding: true,
|
|
profileBadges: true,
|
|
socialMediaMentions: true,
|
|
newsletterInclusion: true,
|
|
homepageAds: true,
|
|
sidebarAds: true,
|
|
broadcastOverlays: false,
|
|
},
|
|
} as const;
|
|
|
|
export type SiteConfig = typeof siteConfig; |