Enhance application structure: Add runtime configuration for environment variables, integrate new dependencies for Cloudinary and UI components, and refactor member management features including improved forms and member dashboard. Update styles and layout for better user experience.
This commit is contained in:
parent
6e7e27ac4e
commit
e4a0a9ab0f
61 changed files with 7902 additions and 950 deletions
199
scripts/seed-members.js
Normal file
199
scripts/seed-members.js
Normal file
|
|
@ -0,0 +1,199 @@
|
|||
import mongoose from 'mongoose'
|
||||
import Member from '../server/models/member.js'
|
||||
import { connectDB } from '../server/utils/mongoose.js'
|
||||
import dotenv from 'dotenv'
|
||||
|
||||
// Load environment variables
|
||||
dotenv.config()
|
||||
|
||||
const sampleMembers = [
|
||||
{
|
||||
email: 'alex.rivera@pixelcollective.coop',
|
||||
name: 'Alex Rivera',
|
||||
circle: 'founder',
|
||||
contributionTier: '50',
|
||||
slackInvited: true,
|
||||
createdAt: new Date('2024-01-15'),
|
||||
lastLogin: new Date('2025-08-20')
|
||||
},
|
||||
{
|
||||
email: 'sam.chen@legalcoop.com',
|
||||
name: 'Sam Chen',
|
||||
circle: 'practitioner',
|
||||
contributionTier: '30',
|
||||
slackInvited: true,
|
||||
createdAt: new Date('2024-02-03'),
|
||||
lastLogin: new Date('2025-08-18')
|
||||
},
|
||||
{
|
||||
email: 'maria.garcia@collectivegames.coop',
|
||||
name: 'Maria Garcia',
|
||||
circle: 'founder',
|
||||
contributionTier: '50',
|
||||
helcimCustomerId: 'cust_12345',
|
||||
helcimSubscriptionId: 'sub_67890',
|
||||
slackInvited: true,
|
||||
createdAt: new Date('2024-03-10'),
|
||||
lastLogin: new Date('2025-08-25')
|
||||
},
|
||||
{
|
||||
email: 'david.park@impactinvest.org',
|
||||
name: 'David Park',
|
||||
circle: 'practitioner',
|
||||
contributionTier: '30',
|
||||
slackInvited: true,
|
||||
createdAt: new Date('2024-04-12'),
|
||||
lastLogin: new Date('2025-08-22')
|
||||
},
|
||||
{
|
||||
email: 'jennifer.wu@grantspecialist.org',
|
||||
name: 'Jennifer Wu',
|
||||
circle: 'practitioner',
|
||||
contributionTier: '15',
|
||||
slackInvited: true,
|
||||
createdAt: new Date('2024-05-08'),
|
||||
lastLogin: new Date('2025-08-19')
|
||||
},
|
||||
{
|
||||
email: 'jordan.lee@indiedev.com',
|
||||
name: 'Jordan Lee',
|
||||
circle: 'community',
|
||||
contributionTier: '15',
|
||||
slackInvited: false,
|
||||
createdAt: new Date('2024-06-20'),
|
||||
lastLogin: new Date('2025-08-15')
|
||||
},
|
||||
{
|
||||
email: 'taylor.smith@gamemaker.studio',
|
||||
name: 'Taylor Smith',
|
||||
circle: 'community',
|
||||
contributionTier: '5',
|
||||
slackInvited: true,
|
||||
createdAt: new Date('2024-07-15'),
|
||||
lastLogin: new Date('2025-08-10')
|
||||
},
|
||||
{
|
||||
email: 'casey.wong@studiocoop.dev',
|
||||
name: 'Casey Wong',
|
||||
circle: 'founder',
|
||||
contributionTier: '30',
|
||||
helcimCustomerId: 'cust_54321',
|
||||
slackInvited: true,
|
||||
createdAt: new Date('2024-08-01'),
|
||||
lastLogin: new Date('2025-08-24')
|
||||
},
|
||||
{
|
||||
email: 'riley.johnson@cooperativedev.org',
|
||||
name: 'Riley Johnson',
|
||||
circle: 'community',
|
||||
contributionTier: '0',
|
||||
slackInvited: false,
|
||||
createdAt: new Date('2024-08-15'),
|
||||
lastLogin: new Date('2025-08-12')
|
||||
},
|
||||
{
|
||||
email: 'morgan.davis@gamecollective.coop',
|
||||
name: 'Morgan Davis',
|
||||
circle: 'founder',
|
||||
contributionTier: '50',
|
||||
helcimCustomerId: 'cust_98765',
|
||||
helcimSubscriptionId: 'sub_13579',
|
||||
slackInvited: true,
|
||||
createdAt: new Date('2024-09-01'),
|
||||
lastLogin: new Date('2025-08-26')
|
||||
},
|
||||
{
|
||||
email: 'avery.brown@newdevstudio.com',
|
||||
name: 'Avery Brown',
|
||||
circle: 'community',
|
||||
contributionTier: '5',
|
||||
slackInvited: false,
|
||||
createdAt: new Date('2024-10-10'),
|
||||
lastLogin: new Date('2025-08-14')
|
||||
},
|
||||
{
|
||||
email: 'phoenix.martinez@coopgames.dev',
|
||||
name: 'Phoenix Martinez',
|
||||
circle: 'practitioner',
|
||||
contributionTier: '15',
|
||||
slackInvited: true,
|
||||
createdAt: new Date('2024-11-05'),
|
||||
lastLogin: new Date('2025-08-21')
|
||||
},
|
||||
{
|
||||
email: 'sage.anderson@collaborativestudio.org',
|
||||
name: 'Sage Anderson',
|
||||
circle: 'community',
|
||||
contributionTier: '15',
|
||||
slackInvited: true,
|
||||
createdAt: new Date('2024-12-01'),
|
||||
lastLogin: new Date('2025-08-16')
|
||||
},
|
||||
{
|
||||
email: 'dakota.wilson@indieguildstudio.com',
|
||||
name: 'Dakota Wilson',
|
||||
circle: 'founder',
|
||||
contributionTier: '30',
|
||||
slackInvited: true,
|
||||
createdAt: new Date('2025-01-10'),
|
||||
lastLogin: new Date('2025-08-23')
|
||||
},
|
||||
{
|
||||
email: 'charlie.thompson@gamecooperative.net',
|
||||
name: 'Charlie Thompson',
|
||||
circle: 'practitioner',
|
||||
contributionTier: '50',
|
||||
helcimCustomerId: 'cust_11111',
|
||||
helcimSubscriptionId: 'sub_22222',
|
||||
slackInvited: true,
|
||||
createdAt: new Date('2025-02-14'),
|
||||
lastLogin: new Date('2025-08-25')
|
||||
}
|
||||
]
|
||||
|
||||
async function seedMembers() {
|
||||
try {
|
||||
await connectDB()
|
||||
|
||||
// Clear existing members
|
||||
await Member.deleteMany({})
|
||||
console.log('Cleared existing members')
|
||||
|
||||
// Insert sample members
|
||||
await Member.insertMany(sampleMembers)
|
||||
console.log(`Added ${sampleMembers.length} sample members`)
|
||||
|
||||
// Verify insertion and show summary
|
||||
const count = await Member.countDocuments()
|
||||
console.log(`Total members in database: ${count}`)
|
||||
|
||||
// Show breakdown by circle
|
||||
const circleBreakdown = await Member.aggregate([
|
||||
{ $group: { _id: '$circle', count: { $sum: 1 } } },
|
||||
{ $sort: { _id: 1 } }
|
||||
])
|
||||
|
||||
console.log('\nBreakdown by circle:')
|
||||
circleBreakdown.forEach(circle => {
|
||||
console.log(` ${circle._id}: ${circle.count} members`)
|
||||
})
|
||||
|
||||
// Show breakdown by contribution tier
|
||||
const tierBreakdown = await Member.aggregate([
|
||||
{ $group: { _id: '$contributionTier', count: { $sum: 1 } } },
|
||||
{ $sort: { _id: 1 } }
|
||||
])
|
||||
|
||||
console.log('\nBreakdown by contribution tier:')
|
||||
tierBreakdown.forEach(tier => {
|
||||
console.log(` $${tier._id}: ${tier.count} members`)
|
||||
})
|
||||
|
||||
process.exit(0)
|
||||
} catch (error) {
|
||||
console.error('Error seeding members:', error)
|
||||
process.exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
seedMembers()
|
||||
Loading…
Add table
Add a link
Reference in a new issue