cawcenter fd9f428dcd Phase 1: Foundation & Stability Infrastructure
 BullMQ job queue system installed and configured
 Zod validation schemas for all collections
 Spintax validator with integrity checks
 Work log helper for centralized logging
 Transaction wrapper for safe database operations
 Batch operation utilities with rate limiting
 Circuit breaker for WordPress/Directus resilience
 Dry-run mode for preview generation
 Version management system
 Environment configuration

This establishes the bulletproof infrastructure for Spark Alpha.
2025-12-13 12:12:17 -05:00

Spark Platform

A powerful multi-tenant website platform with SEO automation, content generation, and lead capture.

🚀 Features

Multi-Tenant Website Engine

  • Domain-based site routing
  • Per-site content isolation
  • Global admin + tenant admin access

Page Builder

  • Hero Block - Full-width headers with CTAs
  • Rich Text Block - SEO-optimized prose content
  • Columns Block - Flexible multi-column layouts
  • Media Block - Images and videos with captions
  • Steps Block - Numbered process visualization
  • Quote Block - Testimonials and blockquotes
  • Gallery Block - Image grids with hover effects
  • FAQ Block - Collapsible accordions with schema.org markup
  • Posts Block - Blog listing with multiple layouts
  • Form Block - Lead capture with validation

Agentic SEO Content Engine

  • Campaign Management - Create SEO campaigns with spintax
  • Headline Generation - Cartesian product of spintax variations
  • Content Fragments - Modular 6-pillar content blocks
  • Article Assembly - Automated 2000+ word article generation
  • Location Targeting - Generate location-specific content

US Location Database

  • All 50 states + DC
  • All 3,143 counties
  • Top 50 cities per county by population

Feature Image Generation

  • SVG templates with variable substitution
  • Server-side rendering (node-canvas)
  • Queue-based batch processing

Lead Capture

  • Customizable forms
  • Newsletter subscriptions
  • Lead management dashboard

📁 Project Structure

spark/
├── frontend/                 # Astro SSR Frontend
│   ├── src/
│   │   ├── components/
│   │   │   ├── admin/       # Admin dashboard components
│   │   │   ├── blocks/      # Page builder blocks
│   │   │   └── ui/          # ShadCN-style UI components
│   │   ├── layouts/         # Page layouts
│   │   ├── lib/
│   │   │   └── directus/    # Directus SDK client
│   │   ├── pages/
│   │   │   ├── admin/       # Admin dashboard pages
│   │   │   └── api/         # API endpoints
│   │   └── types/           # TypeScript types
│   ├── Dockerfile
│   └── package.json
│
├── directus/                 # Directus Backend
│   ├── scripts/             # Import/automation scripts
│   ├── template/
│   │   └── src/             # Schema definitions
│   │       ├── collections.json
│   │       ├── fields.json
│   │       └── relations.json
│   └── Dockerfile
│
├── docker-compose.yaml       # Full stack orchestration
├── .env.example             # Environment template
└── README.md

🛠️ Quick Start

Prerequisites

  • Docker & Docker Compose
  • Node.js 20+ (for local development)

1. Clone and Configure

# Copy environment file
cp .env.example .env

# Edit .env with your settings
nano .env

2. Start with Docker

# Build and start all services
docker-compose up -d

# View logs
docker-compose logs -f

3. Import Schema

# Enter Directus container
docker-compose exec directus sh

# Install dependencies and import schema
cd /directus
npm install
node scripts/import_template.js

# Load US location data
node scripts/load_locations.js

4. Access the Platform

🔧 Development

Frontend Development

cd frontend
npm install
npm run dev

Directus Schema Updates

Edit the files in directus/template/src/ and run:

node scripts/import_template.js

📊 SEO Content Engine Usage

1. Create a Campaign

In Directus Admin:

  1. Go to SEO Engine → Campaign Masters
  2. Create a new campaign with:
    • Name: "Local Dental SEO"
    • Headline Spintax: {Best|Top|Leading} {Dentist|Dental Clinic} in {city}, {state}
    • Location Mode: "City"

2. Add Content Fragments

Create fragments for each pillar:

  • intro_hook (~200 words)
  • pillar_1_keyword (~300 words)
  • pillar_2_uniqueness (~300 words)
  • pillar_3_relevance (~300 words)
  • pillar_4_quality (~300 words)
  • pillar_5_authority (~300 words)
  • pillar_6_backlinks (~300 words)
  • faq_section (~200 words)

Use spintax and variables:

<p>Looking for the {best|top|leading} {service} in {city}? 
{Our team|We} {specialize in|focus on} {providing|delivering} 
{exceptional|outstanding} {results|outcomes}.</p>

3. Generate Headlines

Click "Generate Headlines" to create the headline inventory from spintax permutations.

4. Generate Articles

Select a campaign and click "Generate" to create unique SEO articles automatically.

🌐 Deployment

Coolify

  1. Create a new Docker Compose service
  2. Connect your Git repository
  3. Set environment variables
  4. Deploy

Manual Deployment

# Build images
docker-compose build

# Push to registry
docker tag spark-frontend your-registry/spark-frontend
docker push your-registry/spark-frontend

# Deploy on server
docker-compose -f docker-compose.prod.yaml up -d

📝 API Endpoints

Endpoint Method Description
/api/lead POST Submit lead form
/api/campaigns GET/POST Manage SEO campaigns
/api/seo/generate-headlines POST Generate headlines from spintax
/api/seo/generate-article POST Generate articles
/api/seo/articles GET List generated articles
/api/locations/states GET List US states
/api/locations/counties GET List counties by state
/api/locations/cities GET List cities by county
/api/media/templates GET/POST Manage image templates

🔐 Multi-Tenant Access Control

Role Access
Super Admin All sites, global settings, location database
Site Admin Own site only, content, SEO campaigns

📄 License

MIT License - See LICENSE file for details.


Built with ❤️ using Astro, React, Directus, and PostgreSQL.

Description
No description provided
Readme 3.8 MiB
Languages
TypeScript 74.5%
Astro 11.8%
JavaScript 9.8%
Shell 1.8%
Python 1.7%
Other 0.4%