29 KiB
IGNY8 Application Architecture
Last Updated: 2025-01-XX (Added 6 missing modules: Linker, Optimizer, Publisher, Site Builder, Automation, Integration)
Purpose: Complete application architecture documentation covering system hierarchy, user roles, access control, modules, workflows, data models, multi-tenancy, API architecture, and security.
Table of Contents
- System Overview
- System Hierarchy
- User Roles & Access Control
- Module Organization
- Complete Workflows
- Data Models & Relationships
- Multi-Tenancy Architecture
- API Architecture
- Security Architecture
- Integration Points
System Overview
IGNY8 is a full-stack SaaS platform for SEO keyword management and AI-driven content generation. The system provides a scalable, multi-account platform that enables users to manage keywords, generate content ideas, create AI-powered content, and publish to WordPress.
Platform Capabilities
| Capability | Description | Module |
|---|---|---|
| Keyword Management | Import, organize, filter, and manage SEO keywords | Planner |
| Keyword Clustering | AI-powered semantic clustering of related keywords | Planner |
| Content Ideas | Generate content ideas from keyword clusters | Planner |
| Content Generation | AI-powered blog post and article generation | Writer |
| Image Generation | AI-powered image generation (DALL-E, Runware) | Writer |
| WordPress Integration | Direct publishing to WordPress sites | Writer |
| Internal Linking | AI-powered internal linking suggestions | Linker |
| Content Optimization | Content scoring and optimization suggestions | Optimizer |
| Site Publishing | Publishing records and site deployment | Publisher |
| Site Blueprints | Site structure and page blueprint management | Site Builder |
| Automation | Automation rules and scheduled tasks | Automation |
| Site Integration | External platform integrations and sync | Integration |
| Account Management | Multi-account SaaS with user roles | Auth |
| Billing & Credits | Credit-based billing system | Billing |
| AI Configuration | Customizable AI prompts and settings | System |
System Hierarchy
Entity Relationships
Account (1) ──< (N) User
Account (1) ──< (1) Subscription ──> (1) Plan
Account (1) ──< (N) Site
Site (1) ──< (1-5) Sector
Sector (1) ──< (N) Keywords, Clusters, ContentIdeas, Tasks
Cluster (1) ──< (N) Keywords (Many-to-Many)
Cluster (1) ──< (N) ContentIdeas
ContentIdeas (1) ──< (N) Tasks
Task (1) ──> (1) Content
Task (1) ──< (N) Images
Hierarchy Details
Account Level:
- Top-level organization/workspace
- Contains users, sites, subscriptions, and all data
- Has credit balance and plan assignment
- Status: active, suspended, trial, cancelled
User Level:
- Individual user accounts within an account
- Has role (developer, owner, admin, editor, viewer)
- Can belong to only one account
- Access controlled by role and site permissions
Site Level:
- Workspace within an account (1-N relationship)
- Can have multiple active sites simultaneously
- Has WordPress integration settings (URL, username, password)
- Can be associated with an industry
- Status: active, inactive, suspended
Sector Level:
- Content category within a site (1-5 per site)
- Organizes keywords, clusters, ideas, and tasks
- Can reference an industry sector template
- Status: active, inactive
Content Level:
- Keywords, Clusters, ContentIdeas belong to Sector
- Tasks, Content, Images belong to Sector
- All content is automatically associated with Account and Site
User Roles & Access Control
User Roles
| Role | Access Level | Description | Permissions |
|---|---|---|---|
| Developer | System-wide | Full system access, bypasses all restrictions | All accounts, all sites, all data, system settings |
| Owner | Account-wide | Full account access, can manage users and billing | All sites in account, user management, billing |
| Admin | Account-wide | Account admin access, can manage content and users | All sites in account, content management, user management |
| Editor | Site-specific | Content editing access, can manage clusters/tasks | Granted sites only, content editing |
| Viewer | Site-specific | Read-only access | Granted sites only, read-only |
| System Bot | System-wide | System automation user | All accounts, all sites, all data |
Access Control Matrix
| User Role | Account Access | Site Access | Data Access | User Management | Billing |
|---|---|---|---|---|---|
| Developer | All accounts | All sites | All data | Yes | Yes |
| System Bot | All accounts | All sites | All data | No | No |
| Owner | Own account | All sites in account | All data in account | Yes | Yes |
| Admin | Own account | All sites in account | All data in account | Yes | No |
| Editor | Own account | Granted sites only | Data in granted sites | No | No |
| Viewer | Own account | Granted sites only | Read-only in granted sites | No | No |
Site Access Control
Automatic Access:
- Owners and Admins: Automatic access to all sites in their account
- Developers and System Bot: Access to all sites across all accounts
Explicit Access:
- Editors and Viewers: Require explicit
SiteUserAccessrecords - Access granted by Owner or Admin
- Access can be revoked at any time
Account Isolation
Principle: All data is automatically filtered by account.
Implementation:
- All models inherit
AccountBaseModelwithaccountForeignKey - All ViewSets inherit
AccountModelViewSetwith automatic filtering - Middleware sets
request.accountfrom JWT token - Queries automatically filter by account (except for Developer/System Bot)
Module Organization
Module Structure
| Module | Purpose | Models | ViewSets | Celery Tasks |
|---|---|---|---|---|
| Planner | Keyword management & content planning | Keywords, Clusters, ContentIdeas | KeywordViewSet, ClusterViewSet, ContentIdeasViewSet | auto_cluster_keywords_task, auto_generate_ideas_task |
| Writer | Content generation & management | Tasks, Content, Images | TasksViewSet, ContentViewSet, ImagesViewSet | auto_generate_content_task, auto_generate_images_task |
| Linker | Internal linking operations | - | LinkerViewSet | - |
| Optimizer | Content optimization & scoring | - | OptimizerViewSet | - |
| Publisher | Publishing records & site deployment | PublishingRecord, DeploymentRecord | PublishingRecordViewSet, DeploymentRecordViewSet, PublisherViewSet | - |
| Site Builder | Site blueprint management | SiteBlueprint, PageBlueprint, SiteBlueprintCluster, SiteBlueprintTaxonomy | SiteBlueprintViewSet, PageBlueprintViewSet, SiteAssetView, SiteBuilderMetadataView | - |
| Automation | Automation rules & scheduled tasks | AutomationRule, ScheduledTask | AutomationRuleViewSet, ScheduledTaskViewSet | - |
| Integration | External platform integrations | SiteIntegration | IntegrationViewSet | - |
| System | Settings, prompts, integrations | AIPrompt, IntegrationSettings, AuthorProfile, Strategy | AIPromptViewSet, IntegrationSettingsViewSet, AuthorProfileViewSet | - |
| Billing | Credits, transactions, usage | CreditTransaction, CreditUsageLog | CreditTransactionViewSet, CreditUsageLogViewSet | - |
| Auth | Multi-tenancy, users, accounts | Account, User, Plan, Site, Sector | AccountViewSet, UserViewSet, SiteViewSet, SectorViewSet | - |
Module Dependencies
Auth (Core)
├── Planner (depends on Auth)
├── Writer (depends on Auth, Planner)
├── Linker (depends on Auth, Writer)
├── Optimizer (depends on Auth, Writer)
├── Publisher (depends on Auth, Writer, Site Builder)
├── Site Builder (depends on Auth, Planner)
├── Automation (depends on Auth, Planner, Writer)
├── Integration (depends on Auth, Writer)
├── System (depends on Auth)
└── Billing (depends on Auth)
Module Features
Planner Module
Purpose: Keyword research, clustering, and content idea generation
Features:
- Keyword import (CSV/manual)
- Keyword filtering and organization
- AI-powered keyword clustering
- Content idea generation from clusters
- Keyword-to-cluster mapping
- Cluster metrics and analytics
Models:
Keywords: Individual keywords with metrics (volume, difficulty, intent)Clusters: Groups of related keywordsContentIdeas: Content ideas generated from clusters
Writer Module
Purpose: Content generation, image generation, and publishing
Features:
- Task creation from content ideas
- AI-powered content generation
- Content editing and review
- Image prompt extraction
- AI-powered image generation
- WordPress publishing
Models:
Tasks: Content generation tasksContent: Generated HTML contentImages: Generated images (featured, in-article)
System Module
Purpose: System configuration and AI settings
Features:
- AI prompt management
- Integration settings (OpenAI, Runware)
- Author profile management
- Content strategy management
- System status and monitoring
Models:
AIPrompt: AI prompt templatesIntegrationSettings: API keys and configurationAuthorProfile: Writing style profilesStrategy: Content strategies
Linker Module
Purpose: Internal linking operations for content
Features:
- AI-powered internal linking suggestions
- Content-to-content link analysis
- Cluster-based link recommendations
- Batch linking operations
- Link validation and management
ViewSets:
LinkerViewSet: Process content for internal linking
Optimizer Module
Purpose: Content optimization and scoring
Features:
- Content analysis and scoring
- SEO optimization suggestions
- Readability improvements
- Content quality metrics
- Batch optimization operations
ViewSets:
OptimizerViewSet: Optimize and analyze content
Publisher Module
Purpose: Publishing records and site deployment
Features:
- Publishing record tracking
- Deployment record management
- Site definition management
- Publishing status tracking
- Multi-destination publishing support
Models:
PublishingRecord: Records of content publishingDeploymentRecord: Site deployment records
ViewSets:
PublishingRecordViewSet: Manage publishing recordsDeploymentRecordViewSet: Manage deployment recordsPublisherViewSet: Publishing operations
Site Builder Module
Purpose: Site blueprint and structure management
Features:
- Site blueprint creation and management
- Page blueprint management
- Cluster attachment to blueprints
- Taxonomy management
- Site structure generation
- Page content generation
- Site asset management
Models:
SiteBlueprint: Site structure blueprintsPageBlueprint: Individual page blueprintsSiteBlueprintCluster: Cluster-to-blueprint linksSiteBlueprintTaxonomy: Taxonomy definitions
ViewSets:
SiteBlueprintViewSet: Manage site blueprintsPageBlueprintViewSet: Manage page blueprintsSiteAssetView: File management for site assetsSiteBuilderMetadataView: Metadata for site builder
Note: Site Builder Wizard UI has been removed. Blueprints can be managed via API.
Automation Module
Purpose: Automation rules and scheduled tasks
Features:
- Automation rule creation and management
- Scheduled task management
- Rule execution tracking
- Trigger-based automation
- Conditional automation workflows
Models:
AutomationRule: Automation rule definitionsScheduledTask: Scheduled task records
ViewSets:
AutomationRuleViewSet: Manage automation rulesScheduledTaskViewSet: Manage scheduled tasks
Integration Module
Purpose: External platform integrations and synchronization
Features:
- Site integration management (WordPress, etc.)
- Integration connection testing
- Content synchronization
- Sync health monitoring
- Multi-platform publishing support
Models:
SiteIntegration: Site-to-platform integration records
ViewSets:
IntegrationViewSet: Manage site integrations
Billing Module
Purpose: Credit management and usage tracking
Features:
- Credit balance tracking
- Credit transactions
- Usage logging
- Cost tracking
Models:
CreditTransaction: Credit additions and deductionsCreditUsageLog: Usage tracking with cost
Auth Module
Purpose: Multi-tenancy and user management
Features:
- Account management
- User management
- Plan management
- Site and sector management
- Industry templates
Models:
Account: Top-level organizationUser: User accountsPlan: Subscription plansSite: Sites within accountsSector: Sectors within sitesIndustry: Global industry templatesIndustrySector: Industry sector templates
Complete Workflows
1. Account Setup Workflow
Purpose: Onboard a new account and user
Steps:
- User signs up via
/signup - Account created with default plan
- Owner user created and linked to account
- User signs in via
/signin - JWT token generated and returned
- Frontend stores token and redirects to dashboard
- User creates first site (optional)
- User creates sectors (1-5 per site, optional)
- User configures integration settings (OpenAI, Runware)
- System ready for use
Data Created:
- 1 Account record
- 1 User record (owner role)
- 1 Subscription record (default plan)
- 0-N Site records
- 0-N Sector records (per site)
- 1 IntegrationSettings record (per integration type)
2. Keyword Management Workflow
Purpose: Import, organize, and cluster keywords
Steps:
- User navigates to
/planner/keywords - User imports keywords via CSV or manual entry
- Keywords validated and stored in database
- Keywords displayed in table with filters
- User filters keywords by sector, status, intent, etc.
- User selects keywords for clustering
- User clicks "Auto Cluster" action
- Backend validates keyword IDs
- Celery task queued (
auto_cluster_keywords_task) - Task ID returned to frontend
- Frontend polls progress endpoint
- Celery worker processes task:
- Loads keywords from database
- Builds AI prompt with keyword data
- Calls OpenAI API for clustering
- Parses cluster response
- Creates Cluster records
- Links keywords to clusters
- Progress updates sent to frontend
- Task completes
- Frontend displays new clusters
- User can view clusters, edit cluster names, add/remove keywords
Data Created:
- N Keyword records (if imported)
- M Cluster records (created by AI)
- N-M Keyword-to-Cluster relationships
AI Function: Auto Cluster Keywords
3. Content Idea Generation Workflow
Purpose: Generate content ideas from keyword clusters
Steps:
- User navigates to
/planner/clusters - User selects one or more clusters
- User clicks "Generate Ideas" action
- Backend validates cluster IDs
- Celery task queued (
auto_generate_ideas_task) - Task ID returned to frontend
- Frontend polls progress endpoint
- Celery worker processes task:
- Loads clusters and keywords
- Builds AI prompt with cluster data
- Calls OpenAI API for idea generation
- Parses idea response
- Creates ContentIdeas records
- Links ideas to clusters
- Progress updates sent to frontend
- Task completes
- Frontend displays new content ideas
- User can view ideas, edit titles, prioritize ideas
Data Created:
- N ContentIdeas records (created by AI)
- N ContentIdeas-to-Cluster relationships
AI Function: Generate Ideas
4. Content Generation Workflow
Purpose: Generate AI-powered content from content ideas
Steps:
- User navigates to
/planner/ideas - User selects one or more content ideas
- User clicks "Create Tasks" action
- Task records created for each idea
- User navigates to
/writer/tasks - User selects tasks for content generation
- User clicks "Generate Content" action
- Backend validates task IDs
- Celery task queued (
auto_generate_content_task) - Task ID returned to frontend
- Frontend polls progress endpoint
- Celery worker processes task:
- Loads tasks and related data (cluster, keywords, idea)
- Builds AI prompt with task data
- Calls OpenAI API for content generation
- Parses HTML content response
- Creates/updates Content records
- Updates task status
- Progress updates sent to frontend
- Task completes
- Frontend displays generated content
- User can review and edit content
- User navigates to
/writer/contentto view content
Data Created:
- N Task records (from ideas)
- N Content records (generated HTML)
AI Function: Generate Content
5. Image Generation Workflow
Purpose: Generate images for content
Steps:
- User navigates to
/writer/content - User selects content items
- User clicks "Generate Image Prompts" action (optional, can skip)
- Backend validates content IDs
- Celery task queued (
auto_generate_image_prompts_task) - Task processes:
- Loads content HTML
- Builds AI prompt for prompt extraction
- Calls OpenAI API
- Parses image prompts (featured, in-article)
- Creates/updates Images records with prompts
- User clicks "Generate Images" action
- Backend validates image IDs
- Celery task queued (
auto_generate_images_task) - Task processes:
- Loads images with prompts
- Builds image generation prompt
- Calls OpenAI DALL-E or Runware API
- Receives image URLs
- Updates Images records with URLs
- Images displayed in frontend
- User can view images, regenerate, or delete
Data Created:
- N Images records (with prompts)
- N Images records (with image URLs)
AI Functions: Generate Image Prompts, Generate Images
6. WordPress Publishing Workflow
Purpose: Publish content to WordPress
Steps:
- User navigates to
/writer/content - User selects content to publish
- User clicks "Publish to WordPress" action
- Backend validates:
- Site has WordPress URL configured
- Site has WordPress credentials
- Content is ready (status: review or draft)
- Backend calls WordPress REST API:
- Creates post with content HTML
- Uploads featured image (if available)
- Uploads in-article images (if available)
- Sets post status (draft, publish)
- WordPress post ID stored in Content record
- Content status updated to "published"
- Frontend displays success message
- User can view published content in WordPress
Data Updated:
- Content record:
wp_post_id,status= "published"
Integration: WordPress REST API
7. User Management Workflow
Purpose: Add users to account and manage permissions
Steps:
- Owner/Admin navigates to
/settings/users - User clicks "Add User" action
- User enters email and selects role
- Backend creates User record:
- Email validated (unique per account)
- Role assigned
- Account linked
- Password set (or invitation sent)
- If role is Editor/Viewer:
- Owner/Admin grants site access
- SiteUserAccess records created
- New user receives invitation email
- New user signs in and accesses granted sites
Data Created:
- 1 User record
- 0-N SiteUserAccess records (for Editor/Viewer roles)
8. Integration Configuration Workflow
Purpose: Configure AI service integrations
Steps:
- User navigates to
/settings/integration - User selects integration type (OpenAI, Runware)
- User enters API key
- User clicks "Test Connection" (optional)
- Backend validates API key:
- Makes test API call
- Returns connection status
- User saves integration settings
- Backend stores API key in IntegrationSettings
- Integration ready for use in AI functions
Data Created/Updated:
- 1 IntegrationSettings record (per integration type)
Test Functions: Test OpenAI, Test Runware
Data Models & Relationships
Core Models
Account Model:
- Fields: name, slug, owner, plan, credits, status
- Relationships: Users (1-N), Sites (1-N), Subscription (1-1)
User Model:
- Fields: email, account, role
- Relationships: Account (N-1), SiteUserAccess (N-M via SiteUserAccess)
Plan Model:
- Fields: name, price, limits (users, sites, keywords, clusters, etc.), credits
- Relationships: Accounts (1-N via Subscription)
Site Model:
- Fields: name, slug, domain, industry, status, wp_url, wp_username, wp_app_password
- Relationships: Account (N-1), Sectors (1-N), Industry (N-1)
Sector Model:
- Fields: name, slug, site, industry_sector, status
- Relationships: Site (N-1), IndustrySector (N-1), Keywords/Clusters/Ideas/Tasks (1-N)
Planner Models
Keywords Model:
- Fields: keyword, volume, difficulty, intent, cluster (M-N)
- Relationships: Sector (N-1), Clusters (M-N)
Clusters Model:
- Fields: name, description, keywords_count, volume
- Relationships: Sector (N-1), Keywords (M-N), ContentIdeas (1-N)
ContentIdeas Model:
- Fields: idea_title, description, cluster, status
- Relationships: Sector (N-1), Cluster (N-1), Tasks (1-N)
Writer Models
Tasks Model:
- Fields: title, description, cluster, idea, status, content
- Relationships: Sector (N-1), Cluster (N-1), ContentIdeas (N-1), Content (1-1), Images (1-N)
Content Model:
- Fields: task, html_content, word_count, status, wp_post_id
- Relationships: Task (1-1), Images (1-N)
Images Model:
- Fields: task, content, image_type, prompt, image_url, status
- Relationships: Task (N-1), Content (N-1)
System Models
AIPrompt Model:
- Fields: prompt_type, prompt_value, account
- Relationships: Account (N-1)
IntegrationSettings Model:
- Fields: integration_type, config (JSON), account
- Relationships: Account (N-1)
AuthorProfile Model:
- Fields: name, description, tone, language, account
- Relationships: Account (N-1)
Strategy Model:
- Fields: name, description, sector, prompt_types, account
- Relationships: Account (N-1), Sector (N-1)
Billing Models
CreditTransaction Model:
- Fields: account, transaction_type, amount, balance_after
- Relationships: Account (N-1)
CreditUsageLog Model:
- Fields: account, operation_type, credits_used, cost_usd
- Relationships: Account (N-1)
Multi-Tenancy Architecture
Account Isolation
Implementation Levels:
- Model Level: All models inherit
AccountBaseModelwithaccountForeignKey - ViewSet Level: All ViewSets inherit
AccountModelViewSetwith automatic filtering - Middleware Level:
AccountContextMiddlewaresetsrequest.accountfrom JWT
Filtering:
- All queries automatically filter by
account = request.account - Developer and System Bot users bypass account filtering
- System accounts bypass account filtering
Site/Sector Hierarchy
Purpose: Organize content within accounts
Structure:
Account
└── Site 1 (Active)
├── Sector 1 (Active)
│ ├── Keywords
│ ├── Clusters
│ ├── ContentIdeas
│ └── Tasks
├── Sector 2 (Active)
└── Sector 3 (Inactive)
└── Site 2 (Active)
└── Sector 1 (Active)
Constraints:
- Maximum 5 active sectors per site
- Multiple sites can be active simultaneously
- All content must belong to a site and sector
Data Isolation Flow
Request with JWT Token
↓
AccountContextMiddleware
├── Extract Account ID from JWT
├── Load Account Object
└── Set request.account
↓
ViewSet.get_queryset()
├── Check User Role
├── Filter by Account (if not admin/developer)
└── Filter by Accessible Sites (if not owner/admin)
↓
Database Query
↓
Results (Account-Isolated)
API Architecture
API Structure
Base URL: /api/v1/
Module Endpoints:
/api/v1/auth/- Accounts, users, sites, sectors, plans/api/v1/planner/- Keywords, clusters, ideas/api/v1/writer/- Tasks, content, images/api/v1/linker/- Internal linking operations/api/v1/optimizer/- Content optimization operations/api/v1/publisher/- Publishing records, deployment records/api/v1/site-builder/- Site blueprints, page blueprints, assets/api/v1/automation/- Automation rules, scheduled tasks/api/v1/integration/- Site integrations, sync operations/api/v1/system/- Prompts, integrations, author-profiles, strategies/api/v1/billing/- Credits, transactions, usage
Authentication Flow
1. User Signs In
↓
2. Backend Validates Credentials
↓
3. JWT Token Generated
↓
4. Token Returned to Frontend
↓
5. Frontend Stores Token (localStorage)
↓
6. Frontend Includes Token in Requests (Authorization: Bearer {token})
↓
7. Backend Validates Token
↓
8. Account Context Set
↓
9. Request Processed
Response Format
Success Response:
success: truedata: Response datamessage: Optional message
Error Response:
success: falsemessage: Error messageerrors: Validation errors (if applicable)
Pagination Response:
count: Total countnext: Next page URLprevious: Previous page URLresults: Array of results
Security Architecture
Authentication
Methods:
- JWT (JSON Web Tokens) - Primary method
- Session-based auth - Fallback for admin
Token Management:
- Tokens stored in localStorage
- Tokens included in
Authorization: Bearer {token}header - Token refresh mechanism (future implementation)
Authorization
Role-Based Access Control (RBAC):
- Role checked on every request
- Permissions enforced at ViewSet level
- Action-level permissions for sensitive operations
Data Access Control:
- Account-level: Automatic filtering by account
- Site-level: Filtering by accessible sites
- Action-level: Permission checks in ViewSet actions
Data Security
Account Isolation:
- All queries filtered by account
- Admin/Developer override for system accounts
- No cross-account data leakage
Site Access Control:
- Users can only access granted sites
- Admin/Developer override for all sites
- Explicit access grants for Editor/Viewer roles
API Security:
- CORS configured for frontend domain
- CSRF enabled for session-based auth
- Input validation via DRF serializers
- Rate limiting (future implementation)
Integration Points
OpenAI Integration
Purpose: Text generation and image generation
Configuration:
- API key stored per account in
IntegrationSettings - Model selection per account
- Cost tracking per request
Services Used:
- GPT models for text generation
- DALL-E for image generation
Runware Integration
Purpose: Alternative image generation service
Configuration:
- API key stored per account
- Model selection (e.g.,
runware:97@1) - Image type selection (realistic, artistic, cartoon)
WordPress Integration
Purpose: Content publishing
Configuration:
- WordPress URL per site
- Username and password stored per site
- REST API integration for publishing
Workflow:
- Content generated in IGNY8
- Images attached
- Content published to WordPress via REST API
- Status updated in IGNY8
Stripe Integration (Planned)
Purpose: Payment processing
Status: Planned for future implementation
Features:
- Subscription management
- Payment processing
- Webhook integration
Summary
The IGNY8 application architecture provides:
- Multi-Tenancy: Complete account isolation with automatic filtering
- Hierarchical Organization: Account > Site > Sector > Content structure
- Role-Based Access: Granular permissions for different user roles
- Module-Based Design: Clear separation of concerns across 10 backend modules
- Complete Workflows: End-to-end workflows from keyword import to publishing
- AI Integration: Unified AI framework for all AI operations
- Content Optimization: Internal linking and content optimization tools
- Publishing System: Multi-destination publishing with deployment tracking
- Site Builder: Site blueprint and structure management (API-based)
- Automation: Rule-based automation and scheduled tasks
- Integration: External platform integrations and synchronization
- WordPress Integration: Direct publishing to WordPress sites
- Credit System: Credit-based billing and usage tracking
- Security First: JWT auth, RBAC, data isolation
- Scalable Design: Supports multiple accounts, sites, and users
This architecture ensures scalability, maintainability, and extensibility while providing a robust foundation for the IGNY8 platform.