Skip to main content

🌐 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 deployment
  • QM_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

  • 📘 Build - Site building and deployment
  • 📗 Purge - Site cleanup and deletion

⚙️ 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

  1. Template Selection: Choose base template
  2. Content Injection: Insert customer data
  3. Asset Upload: Upload logos, images
  4. Style Customization: Apply color schemes, fonts
  5. Platform Deployment: Deploy to Duda
  6. Domain Configuration: Map custom domain
  7. SSL Setup: Enable HTTPS
  8. Verification: Test site accessibility
  9. 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

  1. Identify Candidates: Query sites meeting purge criteria
  2. Backup Data: Archive site configuration and content
  3. Remove from Platform: Delete from Duda
  4. Clean Assets: Remove S3 files
  5. Release Domain: Free up custom domain
  6. Update Records: Mark as purged in database
  7. 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


Module Status: Active
Execution Pattern: High-frequency polling
Last Updated: 2025-10-10

💬

Documentation Assistant

Ask me anything about the docs

Hi! I'm your documentation assistant. Ask me anything about the docs!

I can help you with:
- Code examples
- Configuration details
- Troubleshooting
- Best practices

Try asking: How do I configure the API?
09:31 AM