Files
igny8/docs/50-DEPLOYMENT/final-clean-best-deployment-plan/IGNY8-APP-STRUCTURE.md
2026-01-03 17:28:18 +00:00

13 KiB

IGNY8 Application Repository

Repository Name: igny8-app Purpose: Custom application code for the IGNY8 Content AI Platform


Overview

This repository contains ONLY the custom business logic for IGNY8. It does not contain:

  • Dockerfiles (in stack repo)
  • package.json / requirements.txt (in stack repo)
  • Vite/TypeScript configs (in stack repo)
  • Docker compose files (in stack repo)

Complete Folder Structure

igny8-app/
│
├── README.md                           # App overview
├── CHANGELOG.md                        # Version history
├── .gitignore                          # Git ignore rules
├── .env.example                        # Environment template
│
├── backend/
│   └── igny8_core/                     # Django application
│       ├── __init__.py
│       ├── settings.py                 # Django settings
│       ├── urls.py                     # Root URL routing
│       ├── celery.py                   # Celery configuration
│       ├── wsgi.py                     # WSGI entry point
│       ├── asgi.py                     # ASGI entry point
│       ├── tasks.py                    # Root Celery tasks
│       │
│       ├── auth/                       # Authentication module
│       │   ├── __init__.py
│       │   ├── models.py               # User, Account, Site, Sector, Plan
│       │   ├── views.py                # Login, register, password reset
│       │   ├── serializers.py          # DRF serializers
│       │   ├── middleware.py           # AccountContextMiddleware
│       │   ├── urls.py                 # Auth URL routes
│       │   └── migrations/             # Database migrations
│       │
│       ├── api/                        # API infrastructure
│       │   ├── __init__.py
│       │   ├── base.py                 # Base ViewSets (AccountModelViewSet)
│       │   ├── authentication.py       # JWT, API key auth
│       │   ├── pagination.py           # Unified pagination
│       │   └── tests/                  # API tests
│       │
│       ├── ai/                         # AI engine
│       │   ├── __init__.py
│       │   ├── engine.py               # AIEngine orchestrator
│       │   ├── registry.py             # Function registry
│       │   ├── model_registry.py       # AI model configuration
│       │   ├── progress.py             # Progress tracking
│       │   └── functions/              # AI function implementations
│       │       ├── __init__.py
│       │       ├── auto_cluster.py
│       │       ├── generate_ideas.py
│       │       ├── generate_content.py
│       │       └── ...
│       │
│       ├── modules/                    # Feature modules (API layer)
│       │   ├── __init__.py
│       │   ├── planner/                # Keywords, Clusters, Ideas
│       │   │   ├── models.py
│       │   │   ├── views.py
│       │   │   ├── serializers.py
│       │   │   ├── urls.py
│       │   │   └── migrations/
│       │   ├── writer/                 # Tasks, Content, Images
│       │   ├── billing/                # Credits, usage, transactions
│       │   ├── integration/            # WordPress integration
│       │   ├── system/                 # Settings, prompts, AI config
│       │   ├── linker/                 # Internal linking
│       │   ├── optimizer/              # Content optimization
│       │   └── publisher/              # Publishing pipeline
│       │
│       ├── business/                   # Business logic (services)
│       │   ├── __init__.py
│       │   ├── automation/             # 7-stage automation pipeline
│       │   ├── billing/                # Credit service
│       │   ├── content/                # Content generation
│       │   ├── integration/            # Sync services
│       │   ├── linking/                # Link processing
│       │   ├── notifications/          # Notification system
│       │   ├── optimization/           # Content optimization
│       │   ├── planning/               # Clustering, ideas
│       │   └── publishing/             # Publishing orchestration
│       │
│       ├── middleware/                 # Custom middleware
│       │   ├── __init__.py
│       │   ├── request_id.py           # X-Request-ID header
│       │   └── resource_tracker.py     # Resource tracking
│       │
│       ├── tasks/                      # Celery background tasks
│       │   ├── __init__.py
│       │   └── *.py
│       │
│       ├── admin/                      # Django admin customization
│       ├── common/                     # Shared utilities
│       ├── management/                 # Django management commands
│       │   └── commands/
│       ├── utils/                      # Helper functions
│       ├── urls/                       # URL routing modules
│       ├── static/                     # App static files
│       └── templates/                  # Django templates
│
├── frontend/
│   └── src/                            # React application
│       ├── main.tsx                    # Entry point
│       ├── App.tsx                     # Root component, routing
│       ├── index.css                   # Global styles, Tailwind
│       ├── vite-env.d.ts               # Vite type definitions
│       ├── svg.d.ts                    # SVG type definitions
│       │
│       ├── api/                        # API client modules
│       │   ├── linker.api.ts
│       │   ├── optimizer.api.ts
│       │   └── ...
│       │
│       ├── services/                   # Core services
│       │   ├── api.ts                  # Main API service
│       │   └── notifications.api.ts    # Notification API
│       │
│       ├── store/                      # Zustand state stores
│       │   ├── authStore.ts            # Authentication state
│       │   ├── siteStore.ts            # Active site
│       │   ├── sectorStore.ts          # Active sector
│       │   ├── billingStore.ts         # Billing state
│       │   ├── moduleStore.ts          # Module enable/disable
│       │   ├── notificationStore.ts    # Notifications
│       │   └── ...
│       │
│       ├── pages/                      # Route pages
│       │   ├── Dashboard/
│       │   ├── Planner/
│       │   ├── Writer/
│       │   ├── Automation/
│       │   ├── Linker/
│       │   ├── Optimizer/
│       │   ├── Settings/
│       │   ├── Billing/
│       │   └── Auth/
│       │
│       ├── components/                 # Reusable components
│       │   ├── common/                 # Shared UI components
│       │   ├── dashboard/              # Dashboard widgets
│       │   ├── header/                 # Header components
│       │   └── shared/                 # Cross-feature components
│       │
│       ├── layout/                     # Layout components
│       │   ├── AppLayout.tsx
│       │   ├── AppHeader.tsx
│       │   └── AppSidebar.tsx
│       │
│       ├── hooks/                      # Custom React hooks
│       ├── context/                    # React contexts
│       ├── config/                     # App configuration
│       ├── icons/                      # Icon components
│       ├── styles/                     # CSS modules/styles
│       ├── utils/                      # Utility functions
│       ├── types/                      # TypeScript types
│       ├── templates/                  # Content templates
│       ├── modules/                    # Feature modules
│       ├── marketing/                  # Marketing site
│       │   ├── index.tsx
│       │   ├── MarketingApp.tsx
│       │   ├── config/
│       │   ├── components/
│       │   ├── layout/
│       │   ├── pages/
│       │   ├── images/
│       │   └── styles/
│       │
│       └── __tests__/                  # Test files
│
├── public/                             # Public static assets
│   ├── favicon.ico
│   ├── logo.svg
│   └── images/
│
└── docs/                               # Documentation
    ├── 00-SYSTEM/
    │   └── ARCHITECTURE.md
    ├── 10-MODULES/
    ├── 20-API/
    ├── 30-FRONTEND/
    ├── 40-WORKFLOWS/
    ├── 50-DEPLOYMENT/
    │   ├── TWO-REPO-ARCHITECTURE.md
    │   ├── INFRASTRUCTURE-STACK.md
    │   ├── IGNY8-APP-STRUCTURE.md      # This file
    │   ├── DOCKER-DEPLOYMENT.md
    │   └── ENVIRONMENT-SETUP.md
    ├── 90-REFERENCE/
    └── plans/

Deployment to New Server

Prerequisites

  • Stack already installed (see INFRASTRUCTURE-STACK.md)
  • Server has /data/stack/igny8-stack/ ready
  • Docker network igny8_net exists

Step-by-Step Deployment

1. Copy app code to server

   Option A: Git clone
   cd /data/app
   git clone https://github.com/yourorg/igny8-app.git igny8

   Option B: Rsync from existing server
   rsync -avz --exclude='.git' \
     --exclude='node_modules' \
     --exclude='__pycache__' \
     --exclude='*.pyc' \
     --exclude='staticfiles' \
     --exclude='dist' \
     old-server:/data/app/igny8/ /data/app/igny8/

2. Create symlinks to stack
   cd /data/stack/igny8-stack
   ./scripts/link-app.sh igny8

3. Configure environment
   cd /data/app/igny8
   cp .env.example .env
   nano .env    # Set your secrets

4. Install frontend dependencies
   docker exec igny8_frontend npm install

5. Run database migrations
   docker exec igny8_backend python manage.py migrate

6. Create superuser (first time only)
   docker exec -it igny8_backend python manage.py createsuperuser

7. Collect static files
   docker exec igny8_backend python manage.py collectstatic --noinput

8. Start all services
   docker compose -f docker-compose.app.yml up -d

9. Verify
   curl https://api.igny8.com/api/v1/system/status/

What Gets Copied vs Symlinked

Copied (Your Code)

Path Content
backend/igny8_core/ All Django app code
frontend/src/ All React code
public/ Static assets
docs/ Documentation
.env Environment config

Symlinked (From Stack)

App Path Stack Path
backend/Dockerfile stack/backend/Dockerfile
backend/requirements.txt stack/backend/requirements.txt
backend/manage.py stack/backend/manage.py
frontend/Dockerfile.dev stack/frontend/Dockerfile.dev
frontend/package.json stack/frontend/package.json
frontend/vite.config.ts stack/frontend/vite.config.ts
frontend/tsconfig*.json stack/frontend/tsconfig*.json
docker-compose.app.yml stack/docker/docker-compose.app.yml

Updating App on Existing Server

Code Update (Most Common)

cd /data/app/igny8
git pull                              # Get latest code

# If migrations changed:
docker exec igny8_backend python manage.py migrate

# If frontend deps changed:
docker exec igny8_frontend npm install

# Restart to apply:
docker compose restart

Full Rebuild (After Major Changes)

cd /data/app/igny8
docker compose down
docker compose build --no-cache
docker compose up -d

Backup Before Migration

What to Backup

Item Command/Method
Database pg_dump igny8_db > backup.sql
App code git push or rsync
Uploads Copy /data/app/igny8/backend/media/
Environment Copy .env file

Full Backup Script

# On old server
DATE=$(date +%Y%m%d)
mkdir -p /data/backups/$DATE

# Database
docker exec igny8_postgres pg_dump -U igny8 igny8_db > /data/backups/$DATE/db.sql

# App code (excluding generated files)
tar -czf /data/backups/$DATE/app.tar.gz \
  --exclude='node_modules' \
  --exclude='__pycache__' \
  --exclude='staticfiles' \
  --exclude='dist' \
  --exclude='.git' \
  /data/app/igny8/

# Environment
cp /data/app/igny8/.env /data/backups/$DATE/

echo "Backup complete: /data/backups/$DATE/"