# Development & Production Environment Setup This guide explains how to use the new development and production environment setup for the Visual AI QC application. ## Quick Start ### 1. Azure AD Setup (One-time) - Go to Azure Portal → Azure Active Directory → App registrations - Create new registration: "Visual AI QC - Development" - Set redirect URI: `http://localhost:7183` (SPA type) - Copy the client ID and update `config/development.env` ### 2. Update Development Config Edit `config/development.env` and replace: ``` AZURE_CLIENT_ID=REPLACE-WITH-YOUR-NEW-DEV-CLIENT-ID ``` ### 3. Run Local Development ```bash # Start development server ./scripts/run-local.sh # Or manually export ENVIRONMENT=development python api_server.py ``` Access at: http://localhost:7183 ### 4. Deploy to Production ```bash # Test first ./scripts/test-system.sh # Deploy to production ./scripts/deploy-to-prod.sh ``` ## Environment Structure ``` config/ ├── development.env # Local development settings ├── production.env # Production server settings └── .env.template # Template for new environments uploads-dev/ # Development uploads (separate from production) output-dev/ # Development output (separate from production) scripts/ ├── run-local.sh # Start local development ├── deploy-to-prod.sh # Deploy to production └── test-system.sh # Validate system before deployment ``` ## Configuration Details ### Development Environment - **Port**: 7183 (same as before for consistency) - **Folders**: `uploads-dev/`, `output-dev/` - **Azure AD**: Separate app registration for localhost - **Debug**: Enabled - **API Keys**: Same as production (or separate if preferred) ### Production Environment - **Port**: 7184 (or configured port) - **Folders**: `uploads/`, `output/` (existing) - **Azure AD**: Existing production registration - **Debug**: Disabled - **API Keys**: Existing production keys ## Development Workflow ### Making Changes Locally 1. **Start development server**: `./scripts/run-local.sh` 2. **Make your changes** to the code 3. **Test locally** at http://localhost:7183 4. **Run validation**: `./scripts/test-system.sh` 5. **Deploy when ready**: `./scripts/deploy-to-prod.sh` ### Benefits of This Setup - ✅ **Safe Testing**: Changes don't affect production - ✅ **Separate Data**: Dev uploads/output don't mix with production - ✅ **Easy Deployment**: One command to push to production - ✅ **Automated Testing**: Validation before deployment - ✅ **Quick Rollback**: Automatic backups before deployment ## Environment Detection The application automatically detects which environment to use based on: 1. **`ENVIRONMENT` environment variable** (development/production) 2. **Config file existence** in `config/` folder 3. **Fallback to legacy** `config.env` if new structure not found ## Scripts Overview ### `run-local.sh` - Sets environment to development - Starts server on port 7183 - Uses development config and folders - Activates virtual environment if available ### `deploy-to-prod.sh` - Runs pre-deployment tests - Creates production backup - Syncs files to production server - Restarts production service - **Note**: Update server details in script ### `test-system.sh` - Python syntax validation - Core module import testing - Profile system validation - QC module testing - Configuration validation - Brand guidelines database testing ## Troubleshooting ### "Config file not found" - Ensure `config/development.env` exists - Check `AZURE_CLIENT_ID` is set correctly - Verify Azure AD app registration created ### "Authentication not working" - Check Azure AD redirect URI: `http://localhost:7183` - Verify client ID in development config - Clear browser cache/cookies ### "Tests failing" - Run individual tests: `python -c "import api_server"` - Check virtual environment activated - Verify all dependencies installed ## Migration Notes This setup is **backward compatible**: - Existing `config.env` still works - Production behavior unchanged - No disruption to current production setup The application will automatically use the new environment system when `config/` folder is detected, otherwise falls back to the original `config.env` setup.