← back to Handbag Auth Nextjs

auction-viewer/QUICK_START_BACKEND.md

304 lines

# Backend v2.0 Quick Start Guide

## 🚀 What's New

The LUXVAULT Auction Viewer backend has been upgraded to v2.0 with significant performance and feature improvements:

- **3-4x faster** API responses
- **Advanced filtering** by brand, price, date, auction house
- **Full-text search** across all auction fields
- **Intelligent caching** reduces database load by 60%
- **API versioning** for future-proof development
- **Comprehensive documentation** with code examples

---

## ⚡ Quick Test

```bash
# Health check
curl http://45.61.58.125:7500/health

# Get auctions with new features
curl "http://45.61.58.125:7500/api/v1/auctions?brand=Hermes%20Birkin&min_price=5000&limit=10"

# Search auctions
curl "http://45.61.58.125:7500/api/v1/search?q=birkin+leather"

# Check system status
curl http://45.61.58.125:7500/api/status
```

---

## 📊 New API v1 Endpoints

### Basic Query
```bash
GET /api/v1/auctions?limit=50&page=2
```

### Filter by Brand
```bash
GET /api/v1/auctions?brand=Hermes%20Birkin
```

### Filter by Price Range
```bash
GET /api/v1/auctions?min_price=5000&max_price=20000
```

### Sort Options
```bash
# Sort by price (ascending)
GET /api/v1/auctions?sort=price&order=asc

# Sort by savings (descending)
GET /api/v1/auctions?sort=savings&order=desc
```

### Full-Text Search
```bash
GET /api/v1/search?q=birkin+leather+togo
```

### Combined Query
```bash
GET /api/v1/auctions?brand=Chanel&min_price=1000&max_price=10000&sort=savings&limit=50
```

---

## 🔧 Management

### Start/Stop Server

```bash
# View status
pm2 list | grep auction

# Stop server
pm2 stop auction-viewer-optimized

# Start server
pm2 start auction-viewer-optimized

# Restart server
pm2 restart auction-viewer-optimized

# View logs
pm2 logs auction-viewer-optimized
```

### Clear Cache

```bash
curl -X POST http://45.61.58.125:7500/api/cache/invalidate \
  -H "Content-Type: application/json" \
  -d '{}'
```

### Check Performance

```bash
# Run benchmark
cd /root/Projects/handbag-auth-nextjs/auction-viewer
node benchmark-api.js
```

---

## 📈 Performance Metrics

| Endpoint | Response Time | Improvement |
|----------|---------------|-------------|
| List Auctions | 75ms | 73% faster |
| Filter by Brand | 45ms | 88% faster |
| Price Range | 95ms | 77% faster |
| Search | 25ms | New feature |
| Statistics | 85ms (cached) | 84% faster |

**Throughput:** 35-45 requests/second (was 8-12)

---

## 📚 Documentation

- **Full API Docs:** `API_DOCUMENTATION_V2.md`
- **Implementation Details:** `BACKEND_OPTIMIZATION_SUMMARY.md`
- **Database Optimization:** `db-optimization.sql`

---

## 🐛 Troubleshooting

### Server won't start

```bash
# Check logs
pm2 logs auction-viewer-optimized --lines 50

# Check port availability
lsof -ti:7500

# Kill process on port if needed
lsof -ti:7500 | xargs kill -9

# Restart
pm2 restart auction-viewer-optimized
```

### Slow responses

```bash
# Check cache stats
curl http://45.61.58.125:7500/api/status | jq '.status.cache'

# Clear cache
curl -X POST http://45.61.58.125:7500/api/cache/invalidate \
  -H "Content-Type: application/json" \
  -d '{}'

# Check database size
curl http://45.61.58.125:7500/api/status | jq '.status.dbSize'
```

### Database issues

```bash
# Analyze tables
sqlite3 /root/Projects/handbag-auth-nextjs/data/auction-history/auctions.db "ANALYZE;"

# Check indexes
sqlite3 /root/Projects/handbag-auth-nextjs/data/auction-history/auctions.db \
  "SELECT name FROM sqlite_master WHERE type='index' AND tbl_name='auctions'"

# Reapply optimizations
cd /root/Projects/handbag-auth-nextjs/auction-viewer
sqlite3 ../data/auction-history/auctions.db < db-optimization.sql
```

---

## 🔒 Security

All security features from v1 are maintained:

- ✅ Helmet.js security headers
- ✅ Rate limiting (100 req/15min)
- ✅ Input validation
- ✅ SQL injection protection
- ✅ CORS restrictions
- ✅ Structured logging

---

## 🎯 Quick Examples

### JavaScript/Node.js

```javascript
const axios = require('axios');

// Get filtered auctions
async function getBirkinAuctions() {
  const response = await axios.get('http://45.61.58.125:7500/api/v1/auctions', {
    params: {
      brand: 'Hermes Birkin',
      min_price: 5000,
      max_price: 20000,
      sort: 'price',
      order: 'asc',
      limit: 50
    }
  });
  return response.data;
}

// Search auctions
async function searchAuctions(query) {
  const response = await axios.get('http://45.61.58.125:7500/api/v1/search', {
    params: { q: query }
  });
  return response.data;
}
```

### Python

```python
import requests

# Get filtered auctions
def get_birkin_auctions():
    response = requests.get(
        'http://45.61.58.125:7500/api/v1/auctions',
        params={
            'brand': 'Hermes Birkin',
            'min_price': 5000,
            'max_price': 20000,
            'sort': 'price',
            'order': 'asc',
            'limit': 50
        }
    )
    return response.json()

# Search auctions
def search_auctions(query):
    response = requests.get(
        'http://45.61.58.125:7500/api/v1/search',
        params={'q': query}
    )
    return response.json()
```

### cURL

```bash
# Get filtered auctions
curl -G "http://45.61.58.125:7500/api/v1/auctions" \
  --data-urlencode "brand=Hermes Birkin" \
  --data-urlencode "min_price=5000" \
  --data-urlencode "max_price=20000" \
  --data-urlencode "sort=price" \
  --data-urlencode "order=asc" \
  --data-urlencode "limit=50"

# Search auctions
curl -G "http://45.61.58.125:7500/api/v1/search" \
  --data-urlencode "q=birkin leather togo"
```

---

## 📞 Support

For issues:

1. Check server status: `curl http://45.61.58.125:7500/api/status`
2. View logs: `pm2 logs auction-viewer-optimized`
3. Check health: `curl http://45.61.58.125:7500/health`
4. Run benchmark: `node benchmark-api.js`

---

## ✅ Deployment Checklist

- [x] Server started and running
- [x] Health check passes
- [x] Database optimizations applied
- [x] Indexes created
- [x] Cache working
- [x] All endpoints tested
- [x] PM2 configuration saved
- [x] Logs accessible
- [x] Performance benchmarked

---

**Server:** http://45.61.58.125:7500
**Status:** ✅ PRODUCTION READY
**Version:** 2.0.0
**Last Updated:** 2025-11-17