move static data
This commit is contained in:
162
adapters/bootstrap/SiteConfig.ts
Normal file
162
adapters/bootstrap/SiteConfig.ts
Normal file
@@ -0,0 +1,162 @@
|
||||
/**
|
||||
* Site Configuration
|
||||
*
|
||||
* Platform-wide configuration and settings
|
||||
*/
|
||||
|
||||
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, // 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;
|
||||
Reference in New Issue
Block a user