diff --git a/Igny8-phase-2-plan.md b/Igny8-phase-2-plan.md new file mode 100644 index 00000000..e7f3e42f --- /dev/null +++ b/Igny8-phase-2-plan.md @@ -0,0 +1,1711 @@ +✅ IGNY8 SITE BUILDER – Full Implementation Document +Module 1 of 5 +Status: Detailed Technical Specification +Container: igny8_site_builder_frontend (React/Vite) +Backend dependency: IGNY8 App (Django API) +Integration: Site definitions → IGNY8 Sites container +________________________________________ +1. PURPOSE & POSITION IN SYSTEM +The IGNY8 Site Builder is the AI-driven site creation system inside the IGNY8 ecosystem. +It enables users to generate: +• Blog sites +• Company sites +• Ecommerce sites +using IGNY8’s existing: +• Keyword → Cluster → Ideas → Writer → Image pipelines +• User accounts, tenants, sites +• Branding, colors, typography +• SEO structures and strategies +The builder lives inside the IGNY8 App, but runs in a separate frontend container because it: +• Uses a different router +• Requires live preview +• Needs its own static build +• Must not interfere with the dashboard UI +________________________________________ +2. HIGH-LEVEL FLOW +User → Builder Wizard → Structure Definition → AI Page Generation → Preview → Publish to IGNY8 Sites +Backend participation: +IGNY8 Backend: +- Receives builder config +- Generates site structure JSON +- Generates page content via Writer +- Generates image prompts + images +- Stores site definitions in DB +- Provides APIs to fetch site data +Renderer participation: +IGNY8 Sites Container: +- Receives final site definition +- Builds marketing + client sites +- Serves live sites publicly +________________________________________ +3. CORE FEATURES +1. Wizard Interface +2. AI-Generated Site Structure +3. Page Templates + Blocks +4. Preview Renderer +5. Site Settings Management +6. Deploy to “IGNY8 Sites” +7. Regeneration per section or page +8. Full integration with Planner/Writer/Image modules +9. Multi-tenant and multi-site support +________________________________________ +4. FRONTEND ARCHITECTURE (Site Builder Container) +Folder Layout +/site-builder-frontend/ + src/ + pages/ + wizard/ + preview/ + dashboard/ + components/ + layout/ + blocks/ + forms/ + preview-canvas/ + state/ + builderStore.ts (Zustand) + siteDefinitionStore.ts + api/ + builder.api.ts + sites.api.ts + utils/ + validation.ts + templates.ts + config/ + themePresets.ts + siteTypes.ts +Required Libraries +• React +• Vite +• Zustand +• React Router +• Tailwind +• ShadCN for UI +• Toast + Modal system (shared with main app) +• Monaco editor (optional for raw JSON editing) +• CodeMirror (optional for templates) +• Markdown/HTML parser for previews +________________________________________ +5. BACKEND ARCHITECTURE (Inside IGNY8 App) +New Module +Add to: +/backend/igny8_core/modules/site_builder/ +Files: +models.py +serializers.py +views.py +generator.py +structure.py +deployment.py +validations.py +New Django Models +1. SiteBlueprint +Stores AI-generated site structure. +Fields: +• tenant +• site +• config_json (wizard choices) +• structure_json (pages, blocks, menus) +• status (draft, generating, ready) +• created_at, updated_at +2. PageBlueprint +Stores individual page definitions. +• site_blueprint +• slug +• type (home, about, blog-index, post, ecommerce, etc.) +• blocks_json +• status +3. DeploymentRecord +Tracks deployment to IGNY8 Sites renderer. +• site_blueprint +• version +• status +• build_url +• deployed_at +API Endpoints +Base route: +/api/v1/site-builder/ +Endpoints: +POST /wizard/start/ → create initial blueprint +POST /wizard/structure/ → AI structure generation +POST /wizard/generate-pages/ → generate all page content +POST /wizard/preview/ → return preview JSON +POST /deploy/ → deploy to IGNY8 Sites +GET /blueprints/{id}/ → fetch blueprint +GET /page/{id}/ → fetch page +PATCH /page/{id}/regenerate/ → regenerate single page +Uses Planner/Writer/Image pipelines internally: +• cluster data +• ideas +• image prompts +• images +• content generation rules +All credit usage is logged through the IGNY8 billing module. +________________________________________ +6. AI INTEGRATION LOGIC +Phase 1: Site Structure Generation +Prompt uses: +• Business summary +• Site type +• Objectives +• Industry sector (from Planner) +• Cluster summaries +• IGNY8 layout rules +Outputs: +• page list +• sections per page +• block-level metadata +• SEO structure (titles, slugs, meta) +Phase 2: Page Content Generation +Uses Writer (existing code) but wrapped for: +• non-blog pages +• company pages +• ecommerce pages +• hero sections +• feature sections +• contact pages +Phase 3: Image Prompt Generation +Reuses your Thinker module’s image prompt extraction. +Phase 4: Deploy +Uploads: +• JSON site definition +• assets +• images +To IGNY8 Sites container. +________________________________________ +7. PREVIEW SYSTEM (In Builder Container) +• Builder renders JSON-driven pages using reusable components +• Each block component reads from structure JSON +• Preview uses a local "fake" renderer identical to the real IGNY8 Sites renderer +Preview path: +/preview?page=home +State: +• All content stored in siteDefinitionStore +• Live re-render on edit +________________________________________ +8. DEPLOYMENT TO IGNY8 SITES +Builder → Backend → Sites container +Steps: +1. Builder sends POST /deploy/ +2. Backend converts blueprints → renderer schema +3. Backend uploads files to: +o /igny8-sites/clients/{site-id}/v{version}/ +4. Sites container builds static output (if needed) +5. Caddy routes: +o clientdomain.com → site folder +o mysite.stuys.com → site folder +________________________________________ +9. MULTI-TENANCY +All builder blueprints must respect: +• Tenant ID +• Site ID +• Permissions +• Credit limits +So that each user can generate unlimited sites without conflict. +________________________________________ +10. EXECUTION PHASES +Phase 0 — Setup +• New Docker container +• New repo folder +• Domain: builder.igny8.com +• Vite + Tailwind environment +Phase 1 — Wizard +• Site type selection +• Business brief +• Objectives +• Sector selection +• Style presets (colors, fonts) +Phase 2 — Structure Generation +• Server-side AI logic +• Create SiteBlueprint and PageBlueprint models +• Store structure JSON +Phase 3 — Page Generation +• Generate content via Writer +• Extract image prompts +• Generate images +• Populate blueprint pages +Phase 4 — Preview +• Render blueprint JSON +• Allow editing +• Regenerate single sections +Phase 5 — Deploy to IGNY8 Sites +• Convert blueprint to renderer schema +• Push site version +• Done +________________________________________ +11. DELIVERABLES CHECKLIST +Backend +• Models (3) +• Endpoints (7) +• Page generator wrapper +• Structure generator +• Deployment engine +• Permissions + credit usage +Frontend (Builder) +• Wizard flow (Step-based) +• Preview renderer +• Page/block components +• JSON editing tools +• State management (Zustand) +• Publish/deploy dialog +Integration +• Writer function reuse +• Image generator reuse +• Thinker prompts reuse +• Renderer (Sites container) integration +________________________________________ +  +✅ IGNY8 SITES (Renderer + Marketing) – Full Implementation Document +Module 2 of 5 +Container: igny8_sites_frontend +Purpose: Host igny8.com + all client websites generated by IGNY8 Site Builder +Integration: Builder → Backend → Renderer +Type: Static/React rendering & hosting layer +________________________________________ +1. PURPOSE & ROLE IN THE TOTAL SYSTEM +IGNY8 Sites is the public website hosting engine for: +1. Marketing Website (igny8.com) +2. All Stuys/IGNY8-generated client sites +3. Any public output via IGNY8 Site Builder +It consolidates everything into one frontend container equal to: +• Webflow’s published sites +• Wix’s live sites +• Framer’s publishing engine +• Vercel’s multi-project host +IGNY8 Sites is NOT tied to the IGNY8 App UI or dashboard. +It is a separate rendering system whose only job is: +READ site JSON → RENDER → SERVE PUBLIC WEBSITE +________________________________________ +2. FINAL ARCHITECTURAL IDENTITY +✔ Dedicated container +igny8_sites_frontend +✔ Serves multiple domains +• Main domain: igny8.com +• Builder preview domains +• Client custom domains +✔ Uses static generation + dynamic JSON fetch +• React/Vite or Next.js (recommended) +• Loads site definition JSON at runtime +• Renders pages using block components +✔ Compatible with: +• SEO +• Caddy routing +• Multi-site deployments +• Cached CDN delivery +________________________________________ +3. HIGH-LEVEL PIPELINE +Builder → Backend Storage → IGNY8 Sites Renderer → Caddy Routing → Public Site +Detailed steps: +1. User builds site via IGNY8 Site Builder +2. Backend stores: +o SiteBlueprint +o PageBlueprints +o Images +3. Backend transforms blueprint JSON → Renderer Schema +4. Renderer receives versioned site folder: +5. /clients/{site-id}/v1/ +6. site.json +7. pages/ +8. images/ +9. assets/ +10. Caddy routes: +o clientdomain.com → folder +o mysite.igny8.com → folder +o igny8.com → marketing folder +________________________________________ +4. FOLDER + FILE STRUCTURE (Renderer Repo) +/igny8-sites/ + marketing/ (igny8.com) + index.html + assets/ + static/ + ... + + clients/ + 001/ + v1/ + site.json + pages/ + home.json + about.json + contact.json + blog-index.json + blog-post-1.json + assets/ + images/ + hero.webp + product1.webp + seo/ + sitemap.xml + robots.txt + + 002/ + v3/ + ... + + src/ + renderer/ + index.html + main.tsx + router.tsx + components/ + Layout/ + Blocks/ + UI/ + loaders/ + loadSiteDefinition.ts + utils/ + resolveRoutes.ts + mergeTheme.ts + hooks/ + useSiteVersion.ts + usePageData.ts + config/ + themes/ + block-schema/ + seo/ + pages/ + [dynamic Next.js or React Router structure] + + Dockerfile + vite.config.js or next.config.js +Renderer template uses: +• React 18 +• React Router / Next.js (recommended for SEO) +• Tailwind +• ShadCN/UI +• File-based component system +________________________________________ +5. RENDERER LOGIC +A. Load Site Definition +GET /clients/{siteId}/{version}/site.json +Includes: +• Global theme +• Typography +• Colors +• Navigation +• Footer layout +• Page map +• SEO settings +B. Load Page Definition +GET /clients/{siteId}/{version}/pages/{slug}.json +Contains: +• Page name +• Path +• Blocks array (json schema) +• SEO meta +• Image references +• Dynamic content (blog posts etc.) +C. Render Blocks +Each block has a type: +{ + type: "hero", + props: {...} +} +Mapped to component: + +Blocks library: +• Hero +• Features +• Services +• Product grid +• Stats +• Testimonials +• Blog list +• Contact form +• Footer +________________________________________ +6. MARKETING WEBSITE (igny8.com) +IGNY8 Sites will host your marketing website under: +/igny8-sites/marketing/ +Upgradation path: +• Controlled by the same block/renderer architecture +• Designed using IGNY8 Sites component library +• Built with same visual system as client sites +• Easily editable and extensible +This unifies your branding across all layers. +________________________________________ +7. DEPLOYMENT MECHANISM +A. Builder triggers deploy → Backend pushes new version +Backend stores: +/clients/{site-id}/v{n}/site.json +/pages/ +assets/ +Renderer automatically detects new version at runtime. +B. Caddy routing rules +Routes: +# Marketing +igny8.com → /igny8-sites/marketing/ + +# Client sites +mysalon.igny8.com → /clients/342/v4/ +amazingcars.com → /clients/417/v2/ +How Caddy resolves it: +Use: +• reverse_proxy for dynamic parts +• file_server for static +• try_files for routing +________________________________________ +8. MULTI-TENANCY LOGIC +Each site belongs to: +• Tenant +• Optional domain +• Site ID +• Version number +Backend sets: +siteId = uuid +version = incremental +Renderer resolves folder path: +/clients/{siteId}/v{version}/ +Caddy aliases domain → correct folder +________________________________________ +9. SEO FEATURES +Renderer handles: +• Meta tags +• OpenGraph +• Breadcrumb analysis +• Article schema +• LocalBusiness schema +• Product schema +• Blog posting schema +• Sitemap generation +• robots.txt per site +Backend provides SEO JSON per page. +Renderer applies: +{seo.title} + + +________________________________________ +10. RUNTIME REQUIREMENTS +• Caddy for multi-domain routing +• Local volume for sites storage +• Container-level static serving +• High caching +• SSR optional with Next.js +________________________________________ +11. DELIVERABLES CHECKLIST +Renderer Container +• Dockerfile +• Vite/Next.js setup +• Component library +• Block engine +• Theming system +• Page renderer +• SEO engine +• Custom domain resolver +• Site version resolver +• Error screens +Backend Module +• DeploymentRecord model +• Renderer schema converter +• Static asset uploader +• Version manager +• Caddy integration hooks +• Multi-site registry +Builder Integration +• Deploy button → triggers new version +• Version check → preview update +• Domain management +• Rebuild capability +________________________________________ +12. EXECUTION PHASES +Phase 1 +• Renderer skeleton +• Routing + dynamic loading +• Marketing home → Functional +• Basic block engine +Phase 2 +• Full component library +• SEO engine +• Theming system +Phase 3 +• Multi-site deployment system +• Versioned folder architecture +• Page types (home, about, blog, ecom) +Phase 4 +• Custom domain mapping +• Caddy rule automation +Phase 5 +• Full launch + integration with Site Builder +________________________________________ +  +✅ IGNY8 WORDPRESS PLUGIN – Full Implementation Document +Module 3 of 5 +Location: WordPress Container +Repo: /igny8-wp-plugin/ +Purpose: Bridge between IGNY8 App and WordPress for content publishing, media sync, site sync, semantic mapping, and two-way data flow. +This plugin is the official connector that enables: +• IGNY8 → WordPress content publishing +• WordPress → IGNY8 post status + metadata sync +• Media upload sync +• Keyword/Cluster metadata injection +• Full/Incremental site scans +• User authentication with IGNY8 App +• IGNY8 API client +• WP hooks integration +• Two-way sync events +Everything below references actual APIs in WORDPRESS-PLUGIN-INTEGRATION.md. +________________________________________ +1. PURPOSE IN THE IGNY8 ECOSYSTEM +IGNY8 WP Plugin represents all IGNY8-generated content inside WordPress. +Its responsibilities: +A. From IGNY8 → WordPress +• Create posts/pages from IGNY8 Writer output +• Attach images from IGNY8 Image Generator +• Map cluster/keyword metadata +• Assign category = cluster +• Insert block-structured HTML +• Maintain post-task relationship (task_id, content_id) +B. From WordPress → IGNY8 +• Sync post status (publish, draft, trash) +• Notify IGNY8 when user edits content +• Update keyword status (mapped) +• Sync assigned_post_id and post_url +• Batch sync posts via Cron +• WooCommerce product sync (optional) +C. WP Site → IGNY8 (Semantic Mapping Pipeline) +Using REST API and IGNY8 API: +• Fetch all posts +• Fetch taxonomies +• Fetch WooCommerce products +• Send complete site structure to IGNY8 +• Receive restructuring suggestions +• Track site import/sync jobs +________________________________________ +2. PLUGIN ARCHITECTURE +/igny8-wp-plugin/ + igny8.php + /admin/ + settings-page.php + notices.php + /api/ + class-igny8-api.php (API client) + /lib/ + sync-posts.php + sync-status.php + sync-products.php + sync-taxonomies.php + site-import.php + semantic-mapper.php + /hooks/ + post-hooks.php + cron-hooks.php + publish-hooks.php + /routes/ + wp-rest.php + /views/ + settings-form.php + sync-dashboard.php +________________________________________ +3. PLUGIN MODULES (Required) +A. Authentication Module +• Email + password login to IGNY8 API +• Stores access + refresh tokens in WordPress options +• Token auto-refresh system +• Error handling + user messages +API endpoints used: +POST /api/v1/auth/login/ +POST /api/v1/auth/refresh/ +________________________________________ +B. IGNY8 API Client (Core Class) +Class: Igny8API +Functions: +Function Purpose +login() Authenticate WP with IGNY8 +refresh_token() Refresh JWT +get() GET requests +post() POST requests +put() Update task data, keyword status, sync info +delete() Remove mappings or posts +parse_response() Unified API response parsing +get_headers() Bearer auth + JSON headers +All responses must follow your unified IGNY8 format. +________________________________________ +C. Content Publishing Module +(IGNY8 → WP) +Triggered when IGNY8 generates content and sends a “publish” action. +Flow: +1. Receive content JSON from IGNY8: +o title +o html_content (already block-optimized by IGNY8’s block parser) +o featured_image +o in-article images +o task_id +o cluster_id +o primary_keyword, secondary_keywords +2. Create WordPress post using: +wp_insert_post() +3. Save IGNY8 metadata: +_meta: + _igny8_task_id + _igny8_content_id + _igny8_primary_keyword + _igny8_secondary_keywords + _igny8_cluster_id +4. Assign cluster as category: +wp_set_post_terms($post_id, [$cluster_term_id], 'category') +5. Upload images with WordPress media API: +media_sideload_image() +________________________________________ +D. Post Status Sync Module +(WP → IGNY8) +Uses WP hooks: +save_post +publish_post +transition_post_status +draft_to_publish +future_to_publish +trash_post +Maps WordPress status → IGNY8 status: +WP IGNY8 +publish completed +draft draft +pending pending +private completed +future scheduled +trash archived +Sends request: +PUT /writer/tasks/{task_id}/ +Payload: +{ + "status": "completed", + "assigned_post_id": 123, + "post_url": "https://mysite.com/post-title" +} +________________________________________ +E. Keyword Sync Module +Triggered on publish: +publish_post +draft_to_publish +future_to_publish +Action: +• Fetch cluster_id from task +• Fetch all keywords in that cluster via: +GET /planner/keywords/?cluster_id=ID +• Update each to: +PUT /planner/keywords/{id}/ { "status": "mapped" } +________________________________________ +F. Full Site Import Module +(WP → IGNY8 Site Map) +Collects: +• All posts +• Pages +• Custom post types +• Categories +• Tags +• WooCommerce products +• Product categories +• Product attributes +Then sends: +POST /system/sites/{site_id}/import/ +Payload includes: +• site_data +• posts +• taxonomies +• products +• product_attributes +________________________________________ +G. Incremental Sync Module +Daily cron: +wp_schedule_event('daily') +Sends modified posts since last sync: +POST /system/sites/{site_id}/sync/ +For AI restructuring and semantic updates. +________________________________________ +H. IGNY8 → WP Events +Hook triggered when IGNY8 pushes content: +do_action('igny8_content_published', $content_data) +Then: +wp_insert_post($content_data) +update task in IGNY8 with post_url +________________________________________ +4. REQUIRED WORDPRESS ADMIN PAGES +1. IGNY8 Settings Page +• API login +• Test connection +• Token status +• Last sync timestamp +• Site ID +• Manual sync button +2. IGNY8 Content Dashboard +• List all IGNY8-managed posts +• Task status +• Keyword mapping +• Cluster assignment +• Manual re-sync button +3. IGNY8 Site Sync Dashboard +• Full scan +• Incremental scan +• Last run status +• Semantic map display +• Restructuring recommendations +________________________________________ +5. ENDPOINTS REQUIRED BY THE PLUGIN (IGNY8 API v1) +From your API documentation + integration file: +Authentication +POST /auth/login/ +POST /auth/refresh/ +Planner +GET /planner/keywords/ +PUT /planner/keywords/{id}/ +Writer +GET /writer/tasks/{task_id}/ +PUT /writer/tasks/{task_id}/ +POST /writer/tasks/{task_id}/publish/ +System (Site Import) +POST /system/sites/{site_id}/import/ +POST /system/sites/{site_id}/sync/ +GET /system/sites/{site_id}/recommendations/ +POST /system/sites/{site_id}/restructure/ +Misc +GET /auth/user/ +________________________________________ +6. PLUGIN EXECUTION PHASES +Phase 0: Setup +• Create repo +• Basic plugin file +• Register admin menu +• Enqueue scripts +• Create activation hooks +Phase 1: IGNY8 API Client +• Authentication +• Token refresh +• Unified response handler +• Error system +Phase 2: Content Publishing +• WordPress → IGNY8 mapping +• IGNY8 → WP post insertion +• Media download +• Metadata storage +Phase 3: Status Sync +• Post hooks (save_post, publish_post) +• Status mapping +• Keyword “mapped” update +Phase 4: Full Site Sync +• REST fetch: posts, pages, CPTs +• REST fetch: taxonomies +• WooCommerce (if available) +• Combined site_data +• Send to IGNY8 +Phase 5: Incremental Sync +• Cron job +• Modified posts +• Update IGNY8 +Phase 6: UI/UX for WP Dashboard +• IGNY8 settings +• Content dashboard +• Sync dashboard +Phase 7: Testing + Validation +• Unit tests for API client +• Post creation tests +• Sync tests +________________________________________ +7. WHAT THIS PLUGIN ACHIEVES +IGNY8 becomes a complete WordPress publishing engine. +WordPress becomes: +• A destination for content +• A “live CMS” for IGNY8 content +• A signal source for IGNY8 semantic restructuring +This plugin is the official bridge connecting two systems: +• IGNY8 App (AI-first CMS) +• WordPress (display CMS) +________________________________________ +  +IGNY8 WORDPRESS THEME +Full Implementation Document +Module 4 of 5 +1. Role in the IGNY8 Ecosystem +The IGNY8 WordPress Theme is the visual and structural layer for any site where: +• Content is generated by IGNY8 App +• Content is delivered into WordPress via the IGNY8 WP Plugin +• WordPress is used as the final display CMS +The theme: +• Does not run any AI logic +• Does not call IGNY8 APIs directly +• Does not manage jobs, credits, or clusters +It is a pure representation layer that: +1. Understands the content structure and metadata IGNY8 Plugin writes into WordPress. +2. Renders that content using consistent layouts optimized for IGNY8’s SEO strategy. +3. Provides predictable templates for cluster hubs, supporting posts, and product pages. +IGNY8 App and plugin handle logic. +The theme handles presentation, aligned to that logic. +________________________________________ +2. Design and Technical Principles +1. Gutenberg native block theme +o Uses theme.json +o Templates are block templates (.html files) under /templates +o Template parts under /parts +2. Content first +o Layout and styling assume IGNY8 structured content: long form editorial sections, internal links, images, FAQs +o No heavy reliance on shortcodes +3. Metadata aware +o Knows about these meta fields created by plugin: + _igny8_task_id + _igny8_content_id + _igny8_primary_keyword + _igny8_secondary_keywords + _igny8_cluster_id +o Uses categories and tags produced via plugin and app +4. Cluster aware +o Treats certain categories as cluster hubs +o Builds predictable layout for hub vs supporting posts +5. Minimal logic, maximum compatibility +o Theme must not break when content is not IGNY8 generated +o Works fine for manual posts, pages, and WooCommerce if activated +________________________________________ +3. Theme Folder Structure +Repository: /igny8-wp-theme/ +/igny8-wp-theme/ + style.css + functions.php + theme.json + + /templates/ + index.html + front-page.html + home.html + single.html + single-post.html + page.html + archive.html + category.html + category-cluster.html (custom template, selected by category) + tag.html + search.html + 404.html + + /parts/ + header.html + footer.html + hero.html + post-meta.html + sidebar.html + related-posts.html + cluster-nav.html + breadcrumbs.html + + /patterns/ + hero-featured.php + longform-article.php + cluster-hub-layout.php + faq-section.php + comparison-table.php + product-feature-list.php + call-to-action.php + + /assets/ + /css/ + /js/ + /images/ +________________________________________ +4. Data Contract With IGNY8 WP Plugin +The theme assumes the plugin has already: +1. Created the post with: +o Title +o Full HTML content +o Correct categories and tags +o Featured image +o Optional excerpt +2. Stored IGNY8 specific meta: +Meta key Meaning +_igny8_task_id Link back to Writer task in IGNY8 +_igny8_content_id Internal IGNY8 content identifier +_igny8_primary_keyword Main keyword used for SEO and layout decisions +_igny8_secondary_keywords Comma separated list or JSON string +_igny8_cluster_id Cluster taxonomy term used as category +3. Assigned cluster category as WordPress category: +o wp_set_post_terms($post_id, [$cluster_term_id], 'category') +4. Injected already block friendly markup: +o Paragraphs, headings, lists, blockquotes, tables +o Gutenberg compatible markup +The theme does not rebuild or parse raw AI output. +It only renders and enhances what is there. +________________________________________ +5. Templates and Their Purpose +5.1 front page and home +• front-page.html +For sites where homepage is a static page: +o Hero section +o Key benefits +o Featured clusters +o Latest blogs +• home.html +For standard blog listing: +o Blog list with excerpt and meta +o Optional cluster filters +5.2 single post +• single.html or single-post.html +Structure: +1. Hero section +o Title +o Meta (date, reading time, category) +o Featured image +2. Content body +o Renders Gutenberg blocks as generated by IGNY8 +o Uses a content wrapper with a class like .igny8-article-content +3. In article elements +o Styles for: + Images and captions + Blockquotes + Tables + Lists + FAQ sections + Comparison elements +4. Cluster navigation +o If _igny8_cluster_id exists: + Show cluster name + Show related posts from same cluster + Optional cluster breadcrumb (Cluster > Post) +5.3 category and cluster hubs +• category.html for generic categories +• category-cluster.html for IGNY8 clusters +category-cluster.html is used when: +• Category has meta key _igny8_is_cluster or +• Category is explicitly configured in theme options as cluster type +Layout: +1. Cluster hero +o Cluster name +o Intro text (manual or IGNY8 generated) +o Primary keyword +2. Supporting posts section +o Grid or list of posts in cluster +o Highlight key roles: + Beginner guide + Comparison post + Use case posts +o Make it easy for IGNY8 to map these conventional roles +3. Optional CTA: +o Contact +o Book consultation +o Download resource +5.4 page template +• page.html +For generic static pages (about, contact, services) where IGNY8 content is occasionally used. +5.5 archive, search, 404 +Standard WordPress structures but visually consistent with IGNY8 overall design system. +________________________________________ +6. Block Patterns and Styles +To match IGNY8 generated content, create patterns that correspond to how the app structures text. +6.1 Core patterns +1. hero-featured.php +o Featured image +o Large title +o Subtitle +o CTA button +2. longform-article.php +o Pre configured layout: + Article header + Table of contents + Main content area + Related posts / CTAs +3. cluster-hub-layout.php +o Cluster summary text block +o Supporting post list blocks +o Internal links to key posts +4. faq-section.php +o Repeated question answer blocks +o FAQ heading +o Schema ready markup friendly structure +5. comparison-table.php +o Table styled to match IGNY8 comparison posts +6. product-feature-list.php +o Short bullet feature list +o Icons or checkmarks +7. call-to-action.php +o Section with heading +o Subheading +o Button +These patterns are used both for: +• Manual content tweaking in Gutenberg +• Consistency with AI generated layout designs +________________________________________ +7. Styling System +Use theme.json as the single source of truth for styles. +Key elements: +• Color palette that can map to IGNY8 brand tokens: +o Primary, secondary, accent, background, surface, success, warning, danger +• Typography: +o Base font family +o Heading font +o Sizes and spacing aligned with IGNY8 App styles +• Spacing: +o Small, normal, large section padding and margins +• Block level styles: +o core/paragraph +o core/heading +o core/list +o core/table +o core/quote +o core/image +Ensure: +• Long form content stays readable +• Headings are visually layered +• Tables and lists are clean and clear +• Quote blocks stand out but remain simple +________________________________________ +8. SEO and Performance +The theme does not override SEO plugins, but must be compatible with: +• Yoast +• Rank Math +• All in One SEO +Requirements: +• Proper use of
,
,