wokring models and image genration model and admin apges
This commit is contained in:
@@ -0,0 +1,360 @@
|
||||
# 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/"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Related Documentation
|
||||
|
||||
- [TWO-REPO-ARCHITECTURE.md](TWO-REPO-ARCHITECTURE.md) - Why this structure
|
||||
- [INFRASTRUCTURE-STACK.md](INFRASTRUCTURE-STACK.md) - Stack repo details
|
||||
- [DOCKER-DEPLOYMENT.md](DOCKER-DEPLOYMENT.md) - Container details
|
||||
- [ARCHITECTURE.md](../00-SYSTEM/ARCHITECTURE.md) - System architecture
|
||||
Reference in New Issue
Block a user