first commit
This commit is contained in:
291
SEEDING.md
Normal file
291
SEEDING.md
Normal file
@@ -0,0 +1,291 @@
|
||||
# Database Seeding Guide
|
||||
|
||||
## 🌱 Quick Start
|
||||
|
||||
To populate your database with sample marketplace items:
|
||||
|
||||
```bash
|
||||
# Make sure MongoDB is running
|
||||
mongod
|
||||
|
||||
# In another terminal, navigate to project root
|
||||
cd TurboTrades
|
||||
|
||||
# Run the seed script
|
||||
npm run seed
|
||||
```
|
||||
|
||||
That's it! Your database is now populated with sample items.
|
||||
|
||||
---
|
||||
|
||||
## 📊 What Gets Seeded
|
||||
|
||||
### Items Created
|
||||
- **CS2 Items**: 20+ skins including:
|
||||
- Legendary rifles (AK-47 | Redline, M4A4 | Howl, AWP | Dragon Lore)
|
||||
- Premium pistols (Desert Eagle | Blaze, Glock-18 | Fade)
|
||||
- High-value knives (Karambit | Fade, Butterfly Knife | Doppler)
|
||||
- Exclusive gloves (Sport Gloves | Pandora's Box)
|
||||
- Various rarities and price points ($12.99 - $8,999.99)
|
||||
|
||||
- **Rust Items**: 4+ skins including:
|
||||
- AK-47 | Glory
|
||||
- Python Revolver | Tempered
|
||||
- MP5 | Tempered
|
||||
- Metal Facemask | Red Hazmat
|
||||
|
||||
### Default Admin User
|
||||
If no admin user exists, one will be created:
|
||||
- **Username**: TurboTrades Admin
|
||||
- **Steam ID**: 76561198000000000
|
||||
- **Staff Level**: 3 (Admin)
|
||||
- **Balance**: $100,000
|
||||
- **Trade URL**: Pre-configured
|
||||
|
||||
All items are listed by this admin user.
|
||||
|
||||
---
|
||||
|
||||
## 🎯 After Seeding
|
||||
|
||||
### 1. Start the Backend
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 2. Start the Frontend
|
||||
```bash
|
||||
cd frontend
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 3. View Items in Browser
|
||||
Open `http://localhost:5173` and you should see:
|
||||
- Featured items on homepage
|
||||
- Full marketplace at `/market`
|
||||
- Items with images, prices, and details
|
||||
- Working filters and search
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Verify Seeding
|
||||
|
||||
### Check MongoDB Directly
|
||||
```bash
|
||||
# Connect to MongoDB
|
||||
mongosh
|
||||
|
||||
# Use the database
|
||||
use turbotrades
|
||||
|
||||
# Count items
|
||||
db.items.countDocuments()
|
||||
# Should return 24+
|
||||
|
||||
# View a sample item
|
||||
db.items.findOne()
|
||||
|
||||
# Check featured items
|
||||
db.items.find({ featured: true }).count()
|
||||
# Should return 8
|
||||
|
||||
# Check by game
|
||||
db.items.find({ game: 'cs2' }).count()
|
||||
db.items.find({ game: 'rust' }).count()
|
||||
```
|
||||
|
||||
### Check via API
|
||||
```bash
|
||||
# Get all items
|
||||
curl http://localhost:3000/market/items
|
||||
|
||||
# Get featured items
|
||||
curl http://localhost:3000/market/featured
|
||||
|
||||
# Get market stats
|
||||
curl http://localhost:3000/market/stats
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🗑️ Clear Database
|
||||
|
||||
To remove all seeded items and start fresh:
|
||||
|
||||
### Option 1: Re-run Seed Script
|
||||
The seed script automatically clears existing items before inserting new ones:
|
||||
```bash
|
||||
npm run seed
|
||||
```
|
||||
|
||||
### Option 2: Manual Clear (MongoDB)
|
||||
```bash
|
||||
mongosh
|
||||
|
||||
use turbotrades
|
||||
|
||||
# Delete all items
|
||||
db.items.deleteMany({})
|
||||
|
||||
# Verify
|
||||
db.items.countDocuments()
|
||||
```
|
||||
|
||||
### Option 3: Drop Entire Database
|
||||
```bash
|
||||
mongosh
|
||||
|
||||
use turbotrades
|
||||
|
||||
# Drop the entire database
|
||||
db.dropDatabase()
|
||||
|
||||
# Then re-seed
|
||||
exit
|
||||
npm run seed
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎨 Customize Seed Data
|
||||
|
||||
Edit `seed.js` to customize the items:
|
||||
|
||||
### Add More Items
|
||||
```javascript
|
||||
// In seed.js, add to cs2Items or rustItems array:
|
||||
{
|
||||
name: 'Your Item Name',
|
||||
description: 'Item description',
|
||||
image: 'https://your-image-url.com/image.jpg',
|
||||
game: 'cs2', // or 'rust'
|
||||
category: 'rifles', // rifles, pistols, knives, gloves, etc.
|
||||
rarity: 'legendary', // common, uncommon, rare, mythical, legendary, ancient, exceedingly
|
||||
wear: 'fn', // fn, mw, ft, ww, bs (or null for Rust items)
|
||||
float: 0.01, // 0-1 for CS2, null for Rust
|
||||
statTrak: false,
|
||||
price: 99.99,
|
||||
featured: false,
|
||||
}
|
||||
```
|
||||
|
||||
### Change Featured Items
|
||||
Set `featured: true` on items you want to appear on the homepage.
|
||||
|
||||
### Adjust Prices
|
||||
Modify the `price` field for any item.
|
||||
|
||||
---
|
||||
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
### Error: Cannot connect to MongoDB
|
||||
```
|
||||
❌ Error: connect ECONNREFUSED 127.0.0.1:27017
|
||||
```
|
||||
**Solution**: Start MongoDB first
|
||||
```bash
|
||||
mongod
|
||||
```
|
||||
|
||||
### Error: No admin user created
|
||||
**Solution**: The script creates one automatically. If issues persist:
|
||||
```bash
|
||||
mongosh
|
||||
use turbotrades
|
||||
db.users.findOne({ staffLevel: { $gte: 3 } })
|
||||
```
|
||||
|
||||
### Items not showing in frontend
|
||||
1. **Check backend is running**: `http://localhost:3000/health`
|
||||
2. **Check API returns items**: `http://localhost:3000/market/items`
|
||||
3. **Check browser console** for errors
|
||||
4. **Verify MongoDB has data**: `db.items.countDocuments()`
|
||||
|
||||
### Images not loading
|
||||
The seed script uses placeholder Steam CDN URLs. Some may not work. You can:
|
||||
1. Update image URLs in `seed.js`
|
||||
2. Use your own hosted images
|
||||
3. Replace with placeholder services like `https://via.placeholder.com/330x192`
|
||||
|
||||
---
|
||||
|
||||
## 📝 Seed Script Details
|
||||
|
||||
### What It Does
|
||||
1. Connects to MongoDB
|
||||
2. Clears existing items (`Item.deleteMany({})`)
|
||||
3. Finds or creates an admin user
|
||||
4. Inserts all items with random listing dates
|
||||
5. Displays summary statistics
|
||||
6. Disconnects from MongoDB
|
||||
|
||||
### Safe to Run Multiple Times
|
||||
Yes! The script clears old data first, so you can run it anytime to refresh your data.
|
||||
|
||||
### Script Location
|
||||
- **File**: `TurboTrades/seed.js`
|
||||
- **Model**: `TurboTrades/models/Item.js`
|
||||
- **Command**: `npm run seed`
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Production Considerations
|
||||
|
||||
### DO NOT Use Seed Data in Production
|
||||
This seed data is for **development and testing only**.
|
||||
|
||||
For production:
|
||||
1. Remove seed script or restrict access
|
||||
2. Implement proper item creation via admin interface
|
||||
3. Use real Steam inventory integration
|
||||
4. Add proper image hosting/CDN
|
||||
5. Implement trade bot integration
|
||||
|
||||
### Backup Before Seeding
|
||||
If you have real data:
|
||||
```bash
|
||||
# Backup
|
||||
mongodump --db turbotrades --out ./backup
|
||||
|
||||
# Restore if needed
|
||||
mongorestore --db turbotrades ./backup/turbotrades
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Success Checklist
|
||||
|
||||
After seeding, verify:
|
||||
|
||||
- [ ] Seed script completed without errors
|
||||
- [ ] MongoDB contains 24+ items
|
||||
- [ ] Admin user exists in database
|
||||
- [ ] Backend starts successfully
|
||||
- [ ] `/market/items` API endpoint returns data
|
||||
- [ ] Frontend displays items on homepage
|
||||
- [ ] Featured items show on homepage
|
||||
- [ ] Market page shows full item list
|
||||
- [ ] Filters work (game, category, rarity)
|
||||
- [ ] Search works (try "AK-47" or "Dragon")
|
||||
- [ ] Item details page loads
|
||||
|
||||
---
|
||||
|
||||
## 🎉 You're All Set!
|
||||
|
||||
Your marketplace now has sample data and is ready to use!
|
||||
|
||||
**Next Steps:**
|
||||
1. Explore the marketplace in your browser
|
||||
2. Test purchasing (requires Steam login)
|
||||
3. Try different filters and search
|
||||
4. Check item detail pages
|
||||
5. Start building new features!
|
||||
|
||||
---
|
||||
|
||||
**Created**: January 2025
|
||||
**Version**: 1.0.0
|
||||
**Seed Data**: 24+ items, 1 admin user
|
||||
Reference in New Issue
Block a user