← back to Glassbeadedwallpaper
DEPLOYMENT.md
517 lines
# GlassBeadedWallpaper.com - Deployment Summary
## Status: ✅ DEPLOYED AND RUNNING
**Deployment Date:** October 15, 2025
**Port:** 3012
**Status:** Online
**PM2 Process:** Running with auto-restart enabled
**Firewall:** Port 3012 open
---
## 🚀 Deployment Details
### Server Configuration
- **URL:** http://localhost:3012/
- **Health Check:** http://localhost:3012/health
- **Process Manager:** PM2 (glassbeadedwallpaper)
- **Auto-restart:** Enabled (immediate restart on crash)
- **Daily Restart:** 4:00 AM (prevents memory leaks)
- **Max Restarts:** Unlimited (NEVER goes down)
### Files Created
```
/root/DW-Websites/glassbeadedwallpaper/
├── PRD.md # Product Requirements Document
├── DEPLOYMENT.md # This file
├── package.json # Project dependencies
├── ecosystem.config.js # PM2 configuration
├── server.js # HTTP server (port 3012)
├── index.html # Main website (SEO optimized)
├── styles.css # Glass bead themed styles
├── fetch-glass-bead-products.js # Shopify integration script
├── logs/ # PM2 logs directory
│ ├── out.log
│ ├── err.log
│ └── combined.log
└── node_modules/ # Dependencies (77 packages)
```
---
## 🎯 Core Features Implemented
### ✅ SEO Optimization
- Comprehensive meta tags (title, description, keywords)
- Open Graph tags for social media sharing
- Twitter Card integration
- Structured data (JSON-LD) for search engines
- Semantic HTML5 structure
- Canonical URLs
- Mobile-first responsive design
### ✅ Class "A" Fire Rated Compliance
- Fire rating badge in hero section
- Fire rating badge on every product card
- Prominent compliance notice section
- Fire rating information in footer
- All products marked as Class "A" Fire Rated in data structure
### ✅ Product Data Integration
- Shopify Admin API integration
- Multi-keyword filtering: "glass bead", "glass beaded", "sequin", "glitter"
- Automatic deduplication of products
- Color-based sorting and filtering
- Category tagging (Glass Beaded, Sequin, Glitter)
### ✅ Design & UX
- Modern glass bead theme with gold/silver accents
- Dark header with gold highlights
- Responsive grid layout (4 columns → 2 → 1 on mobile)
- Hover effects with gold borders
- Loading animations
- Infinite scroll for product browsing
- Mobile hamburger menu
### ✅ Infrastructure
- PM2 process management
- Aggressive auto-restart policy
- Health check endpoint (/health)
- Error logging to files
- Graceful shutdown handling
- Firewall configured (port 3012 open)
---
## 📋 Next Steps
### IMMEDIATE ACTIONS REQUIRED:
#### 1. Fetch Product Data from Shopify
```bash
cd /root/DW-Websites/glassbeadedwallpaper
npm run fetch-products
```
This will:
- Connect to your Shopify store
- Search for products matching "glass bead", "sequin", "glitter"
- Filter and categorize products
- Save to `glass-bead-products.json`
- Mark all products as Class "A" Fire Rated
**Required:** Make sure `.env` file has valid Shopify credentials:
```
SHOPIFY_STORE_NAME=your-store-name
SHOPIFY_ACCESS_TOKEN=your-access-token
SHOPIFY_API_VERSION=2024-10
```
#### 2. Crawl Content from DesignerWallcoverings.com
Create a web scraping script to extract content from:
```
https://www.designerwallcoverings.com/search?q=Glass+Beaded+dws&type=article
```
**Script to create:** `crawl-content.js`
```javascript
const axios = require('axios');
const cheerio = require('cheerio');
const fs = require('fs');
async function crawlGlassBeadContent() {
const url = 'https://www.designerwallcoverings.com/search?q=Glass+Beaded+dws&type=article';
const response = await axios.get(url);
const $ = cheerio.load(response.data);
const articles = [];
// Extract article content here
fs.writeFileSync('./content/articles.json', JSON.stringify(articles, null, 2));
}
crawlGlassBeadContent();
```
Then create pages:
- `/about-glass-bead.html` - Educational content about glass beaded wallpaper
- `/fire-rating.html` - Detailed fire rating information
- `/gallery.html` - Instagram integration page
#### 3. Instagram Video Integration
**Option A: Manual Embed (Quick)**
- Get embed codes from instagram.com/designerwallcoverings
- Add to `/gallery.html` or homepage
**Option B: API Integration (Advanced)**
- Set up Instagram Basic Display API
- Create `instagram-feed.js` script
- Fetch videos and embed dynamically
Example gallery section structure:
```html
<div class="instagram-gallery">
<iframe src="https://www.instagram.com/p/[POST_ID]/embed"
width="400" height="480" frameborder="0"></iframe>
<!-- Repeat for each video -->
</div>
```
#### 4. Domain Configuration
Point `glassbeadedwallpaper.com` to your server:
- **DNS A Record:** Point to server IP
- **Web Server:** Configure reverse proxy (Nginx/Apache)
- **SSL Certificate:** Install Let's Encrypt
Example Nginx configuration:
```nginx
server {
listen 80;
server_name glassbeadedwallpaper.com www.glassbeadedwallpaper.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name glassbeadedwallpaper.com www.glassbeadedwallpaper.com;
ssl_certificate /etc/letsencrypt/live/glassbeadedwallpaper.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/glassbeadedwallpaper.com/privkey.pem;
location / {
proxy_pass http://localhost:3012;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
```
#### 5. Testing & Quality Assurance
**Test Checklist:**
- [ ] Homepage loads correctly
- [ ] Products display (after running fetch script)
- [ ] Class "A" Fire Rated badges visible
- [ ] Mobile responsive design works
- [ ] Links navigate correctly
- [ ] Health check endpoint responds
- [ ] PM2 auto-restart works (test with `pm2 stop glassbeadedwallpaper`)
**SEO Testing:**
- [ ] Run Google PageSpeed Insights
- [ ] Test with Google Rich Results Test
- [ ] Validate structured data
- [ ] Check mobile-friendliness
- [ ] Test social media previews (Facebook, Twitter)
---
## 🔧 Management Commands
### PM2 Process Management
```bash
# View status
pm2 list
pm2 show glassbeadedwallpaper
# View logs
pm2 logs glassbeadedwallpaper
pm2 logs glassbeadedwallpaper --lines 100
# Restart process
pm2 restart glassbeadedwallpaper
# Stop process
pm2 stop glassbeadedwallpaper
# Delete process
pm2 delete glassbeadedwallpaper
# Monitor in real-time
pm2 monit
```
### Fetch Products from Shopify
```bash
cd /root/DW-Websites/glassbeadedwallpaper
npm run fetch-products
```
### Start/Restart Server
```bash
cd /root/DW-Websites/glassbeadedwallpaper
pm2 restart ecosystem.config.js
```
### View Server Logs
```bash
cd /root/DW-Websites/glassbeadedwallpaper
tail -f logs/combined.log
tail -f logs/err.log
```
### Test Health Endpoint
```bash
curl http://localhost:3012/health
```
---
## 📊 Monitoring & Maintenance
### Health Checks
- **Endpoint:** http://localhost:3012/health
- **Expected Response:**
```json
{
"status": "healthy",
"service": "glassbeadedwallpaper.com",
"port": "3012",
"timestamp": "2025-10-15T15:51:19.250Z",
"uptime": 85.842648222
}
```
### PM2 Configuration Highlights
- **Auto-restart on crash:** ✅ Enabled
- **Auto-restart on freeze (5 min):** ✅ Enabled via kill_timeout
- **Max restarts:** ∞ Unlimited
- **Daily restart:** 4:00 AM (prevents memory leaks)
- **Restart delay:** 1 second (immediate)
- **Max memory:** 1GB (restart if exceeded)
### Log Rotation
PM2 automatically rotates logs. To manually manage:
```bash
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
```
---
## 🔒 Security Considerations
### Implemented
- [x] Firewall configured (port 3012 open)
- [x] Environment variables for sensitive data
- [x] CORS headers configured
- [x] Health check endpoint for monitoring
### Recommended
- [ ] Install SSL certificate (Let's Encrypt)
- [ ] Configure rate limiting (Nginx/Cloudflare)
- [ ] Enable DDoS protection
- [ ] Set up monitoring alerts
- [ ] Regular security updates (npm audit)
- [ ] Backup strategy for product data
---
## 📱 Mobile Optimization
The site is fully responsive with breakpoints at:
- **Desktop:** 1400px+ (4 column grid)
- **Laptop:** 1200px - 900px (3 column grid)
- **Tablet:** 900px - 768px (2 column grid)
- **Mobile:** 768px - 480px (2 column grid, smaller)
- **Small Mobile:** < 480px (1 column grid)
Mobile features:
- Hamburger menu
- Touch-friendly buttons
- Optimized images
- Fast load times
- Responsive typography
---
## 🎨 Design Theme
### Color Palette
- **Primary Gold:** #FFD700 (accents, highlights)
- **Primary Silver:** #C0C0C0 (secondary accents)
- **Dark Background:** #1a1a2e (header, footer)
- **Fire Rating Red:** #DC143C (badges)
- **White:** #FFFFFF (content background)
### Typography
- **Headings:** Playfair Display (serif, elegant)
- **Body:** Montserrat (sans-serif, clean)
### Visual Style
- Luxury aesthetic with gold accents
- Shimmering, elegant feel
- High contrast for readability
- Prominent fire rating badges
- Glass bead/sequin imagery
---
## 📈 SEO Strategy
### Target Keywords
1. glass beaded wallpaper
2. glass bead wallcovering
3. sequin wallpaper
4. glitter wallpaper
5. fire rated wallpaper
6. luxury wallpaper
7. metallic wallpaper
8. commercial wallpaper
9. Class A fire rated wallcovering
### Content Strategy
- Product-focused content (main)
- Educational articles (about glass bead)
- Installation guides
- Fire safety information
- Project galleries (Instagram)
- Blog posts from scraped content
### Technical SEO
- Fast page load (< 3 seconds)
- Mobile-first design
- Structured data (Product, Organization)
- XML sitemap (to be generated)
- Robots.txt (to be created)
- Canonical URLs
- Image alt text
- Internal linking
---
## 🆘 Troubleshooting
### Server Won't Start
```bash
# Check if port is in use
lsof -i :3012
# Check PM2 logs
pm2 logs glassbeadedwallpaper --err
# Restart PM2
pm2 restart glassbeadedwallpaper
# Nuclear option: delete and restart
pm2 delete glassbeadedwallpaper
pm2 start ecosystem.config.js
```
### Products Not Showing
```bash
# Check if products file exists
ls -lh glass-bead-products.json
# Run fetch script
npm run fetch-products
# Check if .env file has valid credentials
cat .env
```
### Firewall Issues
```bash
# Check firewall status
sudo ufw status
# Re-open port 3012
sudo ufw allow 3012/tcp
# Check if server is listening
netstat -tlnp | grep 3012
```
### PM2 Not Auto-Restarting
```bash
# Check PM2 configuration
pm2 show glassbeadedwallpaper
# Verify ecosystem config
cat ecosystem.config.js
# Save PM2 process list
pm2 save
# Check systemd service
systemctl status pm2-root
```
---
## ✅ Completion Checklist
### Core Implementation (DONE)
- [x] Project structure created
- [x] Package.json with dependencies
- [x] Server running on port 3012
- [x] PM2 process manager configured
- [x] Auto-restart enabled (crash + freeze detection)
- [x] Firewall configured (port 3012 open)
- [x] Logs directory created
- [x] SEO-optimized HTML
- [x] Class "A" Fire Rated badges
- [x] Responsive CSS styling
- [x] Shopify fetch script created
- [x] Health check endpoint
### Remaining Tasks
- [ ] Run Shopify fetch script to populate products
- [ ] Crawl content from designerwallcoverings.com
- [ ] Integrate Instagram videos
- [ ] Create additional pages (about, fire rating, gallery)
- [ ] Configure domain (glassbeadedwallpaper.com)
- [ ] Install SSL certificate
- [ ] Set up monitoring/alerting
- [ ] Test on mobile devices
- [ ] Run SEO audit
- [ ] Submit sitemap to Google Search Console
---
## 🎉 Success Metrics
### Technical
- ✅ Server running: **YES**
- ✅ Port 3012 open: **YES**
- ✅ PM2 auto-restart: **YES**
- ✅ Health check working: **YES**
- ⏳ Uptime target: **99.9%** (to be measured)
### Content
- ⏳ Products loaded: **Pending** (need to run fetch script)
- ⏳ Class A badges visible: **YES** (when products load)
- ⏳ Mobile responsive: **YES**
- ⏳ SEO optimized: **YES**
### Business
- ⏳ Domain live: **Pending** (DNS configuration needed)
- ⏳ SSL installed: **Pending**
- ⏳ Instagram integrated: **Pending**
- ⏳ Content crawled: **Pending**
---
## 📞 Support
For issues or questions:
1. Check PM2 logs: `pm2 logs glassbeadedwallpaper`
2. Check server logs: `tail -f logs/combined.log`
3. Test health endpoint: `curl http://localhost:3012/health`
4. Review this documentation
5. Check PRD.md for requirements reference
---
**Deployment completed successfully! 🎉**
The server is running on port 3012 with PM2 managing the process. It will automatically restart on crashes and is configured to NEVER go down. Complete the remaining tasks above to make the site production-ready.