ghostguild-org/server/config/contributions.js

111 lines
3.2 KiB
JavaScript

// Server-side contribution config
// Copy of the client-side config for server use
// Central configuration for Ghost Guild Contribution Levels and Helcim Plans
export const CONTRIBUTION_TIERS = {
FREE: {
value: '0',
amount: 0,
label: '$0 - I need support right now',
tier: 'free',
helcimPlanId: null, // No Helcim plan needed for free tier
features: [
'Access to basic resources',
'Community forum access'
]
},
SUPPORTER: {
value: '5',
amount: 5,
label: '$5 - I can contribute a little',
tier: 'supporter',
helcimPlanId: 20162,
features: [
'All Free Membership benefits',
'Priority community support',
'Early access to events'
]
},
MEMBER: {
value: '15',
amount: 15,
label: '$15 - I can sustain the community',
tier: 'member',
helcimPlanId: null, // TODO: Create $15/month plan in Helcim dashboard
features: [
'All Supporter benefits',
'Access to premium workshops',
'Monthly 1-on-1 sessions',
'Advanced resource library'
]
},
ADVOCATE: {
value: '30',
amount: 30,
label: '$30 - I can support others too',
tier: 'advocate',
helcimPlanId: null, // TODO: Create $30/month plan in Helcim dashboard
features: [
'All Member benefits',
'Weekly group mentoring',
'Access to exclusive events',
'Direct messaging with experts'
]
},
CHAMPION: {
value: '50',
amount: 50,
label: '$50 - I want to sponsor multiple members',
tier: 'champion',
helcimPlanId: null, // TODO: Create $50/month plan in Helcim dashboard
features: [
'All Advocate benefits',
'Personal mentoring sessions',
'VIP event access',
'Custom project support',
'Annual strategy session'
]
}
};
// Get all contribution options as an array (useful for forms)
export const getContributionOptions = () => {
return Object.values(CONTRIBUTION_TIERS);
};
// Get valid contribution values for validation
export const getValidContributionValues = () => {
return Object.values(CONTRIBUTION_TIERS).map(tier => tier.value);
};
// Get contribution tier by value
export const getContributionTierByValue = (value) => {
return Object.values(CONTRIBUTION_TIERS).find(tier => tier.value === value);
};
// Get Helcim plan ID for a contribution tier
export const getHelcimPlanId = (contributionValue) => {
const tier = getContributionTierByValue(contributionValue);
return tier?.helcimPlanId || null;
};
// Check if a contribution tier requires payment
export const requiresPayment = (contributionValue) => {
const tier = getContributionTierByValue(contributionValue);
return tier?.amount > 0;
};
// Check if a contribution value is valid
export const isValidContributionValue = (value) => {
return getValidContributionValues().includes(value);
};
// Get contribution tier by Helcim plan ID
export const getContributionTierByHelcimPlan = (helcimPlanId) => {
return Object.values(CONTRIBUTION_TIERS).find(tier => tier.helcimPlanId === helcimPlanId);
};
// Get paid tiers only (excluding free tier)
export const getPaidContributionTiers = () => {
return Object.values(CONTRIBUTION_TIERS).filter(tier => tier.amount > 0);
};