🌐 InstaSites Processing
📖 Overview
The InstaSites module manages automated website building, cleanup operations, and site management tasks.
Environment Flags:
QM_INSTASITES_BUILD=true- Site building and deploymentQM_INSTASITES_PURGE=true- Site cleanup and purging
Source Location: queue-manager/crons/instasites/
Processing Pattern: High-frequency polling (every 30 seconds to 1 minute)
🗄️ Collections Used
instasites
- Operations: Read/Write
- Model:
shared/models/instasites.js - Usage: Site configurations and status
instasites-queue
- Operations: Read/Write
- Model:
shared/models/instasites-queue.js - Usage: Queue site build/purge jobs
sites
- Operations: Read/Write
- Model:
shared/models/site.js - Usage: Site metadata and deployment info
🔄 Processing Flow
graph TB
API[Internal API] -->|Create Job| QUEUE[instasites-queue]
BUILD_CRON[Build Cron<br/>Every 1min] -->|Query pending| QUEUE
PURGE_CRON[Purge Cron<br/>Every 30s] -->|Query pending| QUEUE
QUEUE -->|Build Jobs| BUILD_SVC[Build Service]
QUEUE -->|Purge Jobs| PURGE_SVC[Purge Service]
BUILD_SVC -->|Clone Template| TEMPLATE[(Template Files)]
BUILD_SVC -->|Customize| SITE_FILES[Site Files]
BUILD_SVC -->|Deploy| HOSTING[Hosting Platform]
BUILD_SVC -->|Update| DB[(instasites)]
PURGE_SVC -->|Delete| HOSTING
PURGE_SVC -->|Remove| DB
🔧 Jobs in This Module
Core Jobs
⚙️ Configuration
Required Environment Variables:
QM_INSTASITES_BUILD=true # Enable site building
QM_INSTASITES_PURGE=true # Enable site purging
# Hosting Integration
DUDA_API_KEY=... # Duda platform integration
AWS_S3_BUCKET=... # S3 for static assets
# Dependencies
MONGO_DB_URL=...
REDIS_HOST=localhost
REDIS_PORT=6379
📘 Build Processing
Overview
Builds and deploys InstaSites from templates with customer customizations.
Cron Schedule: */1 * * * * (Every 1 minute)
Source Files:
- Cron:
queue-manager/crons/instasites/build.js - Service:
queue-manager/services/instasites/build.js - Queue:
queue-manager/queues/instasites/build.js
Processing Flow
sequenceDiagram
participant API as Internal API
participant QUEUE as instasites-queue
participant CRON as Build Cron
participant SERVICE as Build Service
participant DUDA as Duda Platform
participant DB as MongoDB
API->>QUEUE: Create build job<br/>(template, customizations)
loop Every 1 minute
CRON->>SERVICE: Execute
SERVICE->>QUEUE: Query pending builds
QUEUE-->>SERVICE: Pending jobs
SERVICE->>DUDA: Clone template site
DUDA-->>SERVICE: Site ID
SERVICE->>DUDA: Apply customizations<br/>(content, images, colors)
SERVICE->>DUDA: Publish site
DUDA-->>SERVICE: Live URL
SERVICE->>DB: Update instasites record
SERVICE->>QUEUE: Mark completed
end
Key Features
- Template System: Pre-built website templates
- Customization: Logo, colors, content, images
- Multi-Platform: Duda integration
- Domain Mapping: Custom domain setup
- SSL Certificates: Automatic SSL provisioning
- Preview Mode: Staging before going live
- Rollback Support: Revert to previous versions
Build Steps
- Template Selection: Choose base template
- Content Injection: Insert customer data
- Asset Upload: Upload logos, images
- Style Customization: Apply color schemes, fonts
- Platform Deployment: Deploy to Duda
- Domain Configuration: Map custom domain
- SSL Setup: Enable HTTPS
- Verification: Test site accessibility
- Status Update: Mark as live
Customization Options
Visual Customizations:
- Logo and favicon
- Color scheme (primary, secondary, accent)
- Font selections
- Background images
Content Customizations:
- Business name and description
- Contact information
- Service offerings
- Testimonials
- Gallery images
SEO Customizations:
- Meta title and description
- Open Graph tags
- Schema markup
- Sitemap generation
Error Handling
Build Failures:
- Retry with exponential backoff
- Fallback to simpler template
- Notify customer support
- Preserve job for manual review
Partial Failures:
- Continue with defaults for missing data
- Log issues for later correction
- Deploy with warnings
📗 Purge Processing
Overview
Cleans up expired, cancelled, or deleted InstaSites.
Cron Schedule: */30 * * * * * (Every 30 seconds)
Source Files:
- Cron:
queue-manager/crons/instasites/purge.js - Service:
queue-manager/services/instasites/purge.js
Processing Flow
sequenceDiagram
participant CRON as Purge Cron
participant SERVICE as Purge Service
participant DB as instasites
participant DUDA as Duda Platform
loop Every 30 seconds
CRON->>SERVICE: Execute
SERVICE->>DB: Query sites to purge<br/>(status: 'deleted', expired)
DB-->>SERVICE: Sites to delete
SERVICE->>DUDA: Delete site
DUDA-->>SERVICE: Deleted
SERVICE->>DB: Remove record
DB-->>SERVICE: Removed
end
Key Features
- Automatic Cleanup: Removes expired sites
- Grace Period: 30-day retention before deletion
- Backup Creation: Archives before deletion
- Resource Cleanup: Removes assets, domains, SSL certs
- Billing Sync: Updates subscription status
Purge Criteria
Sites Deleted When:
- Subscription cancelled (after grace period)
- Trial expired without conversion
- Marked for deletion by user
- Account permanently closed
- Inactivity exceeds threshold (e.g., 180 days)
Cleanup Process
- Identify Candidates: Query sites meeting purge criteria
- Backup Data: Archive site configuration and content
- Remove from Platform: Delete from Duda
- Clean Assets: Remove S3 files
- Release Domain: Free up custom domain
- Update Records: Mark as purged in database
- Audit Log: Record deletion event
Data Retention
Preserved Data:
- Site configuration (for restore requests)
- Billing history
- Audit logs
Deleted Data:
- Live site on platform
- Asset files (images, videos)
- Custom domain mapping
- SSL certificates
🔗 Related Documentation
- Sites Processing
- Queue Manager Overview
- Architecture (documentation unavailable)
- Configuration
Module Status: Active
Execution Pattern: High-frequency polling
Last Updated: 2025-10-10