# GUI Planning Document Comprehensive mapping of all CLI commands, scripts, and their parameters to guide front-end GUI development. ## Main Workflows ### 1. Project Creation Workflow - Ingest CORA file → Create project → Create job file → Generate content → Deploy ### 2. Site Management Workflow - Discover/Provision sites → Sync sites → Manage domains → Deploy content ### 3. Content Generation Workflow - Create/Edit job file → Generate batch → Verify → Deploy → Export links ### 4. Maintenance Workflow - Update index pages → Add robots.txt → Verify deployments → Check status --- ## CLI Commands Reference ### System Commands #### `config` Show current configuration **Parameters:** None **Example:** ```bash uv run python main.py config ``` --- #### `health` Check system health **Parameters:** None **Example:** ```bash uv run python main.py health ``` --- #### `models` List available AI models **Parameters:** None **Example:** ```bash uv run python main.py models ``` --- ### User Management #### `add-user` Create a new user (requires admin authentication) **Parameters:** - `--username` (required) - Username for the new user - `--password` (required) - Password for the new user - `--role` (required) - Role: "Admin" or "User" - `--admin-user` (optional) - Admin username for authentication - `--admin-password` (optional) - Admin password for authentication **Example:** ```bash uv run python main.py add-user --username newuser --password pass123 --role Admin ``` --- #### `delete-user` Delete a user by username (requires admin authentication) **Parameters:** - `--username` (required) - Username to delete - `--admin-user` (optional) - Admin username for authentication - `--admin-password` (optional) - Admin password for authentication - `--yes` (flag) - Skip confirmation prompt **Example:** ```bash uv run python main.py delete-user --username olduser --yes ``` --- #### `list-users` List all users (requires admin authentication) **Parameters:** - `--admin-user` (optional) - Admin username for authentication - `--admin-password` (optional) - Admin password for authentication **Example:** ```bash uv run python main.py list-users ``` --- ### Site Management #### `provision-site` Provision a new site with Storage Zone and Pull Zone (requires admin) **Parameters:** - `--name` (required) - Site name - `--domain` (required) - Custom domain (FQDN, e.g., www.example.com) - `--storage-name` (required) - Storage Zone name (must be globally unique) - `--region` (required) - Storage region: "DE", "NY", "LA", "SG", "SYD" - `--admin-user` (optional) - Admin username for authentication - `--admin-password` (optional) - Admin password for authentication **Example:** ```bash uv run python main.py provision-site --name "My Site" --domain www.example.com --storage-name mysite-storage --region NY ``` --- #### `attach-domain` Attach a domain to an existing Storage Zone (requires admin) **Parameters:** - `--name` (required) - Site name - `--domain` (required) - Custom domain (FQDN, e.g., www.example.com) - `--storage-name` (required) - Existing Storage Zone name - `--admin-user` (optional) - Admin username for authentication - `--admin-password` (optional) - Admin password for authentication **Example:** ```bash uv run python main.py attach-domain --name "New Site" --domain new.example.com --storage-name existing-storage ``` --- #### `list-sites` List all site deployments (requires admin) **Parameters:** - `--admin-user` (optional) - Admin username for authentication - `--admin-password` (optional) - Admin password for authentication **Example:** ```bash uv run python main.py list-sites ``` --- #### `get-site` Get detailed information about a site deployment (requires admin) **Parameters:** - `--domain` (required) - Custom domain to lookup - `--admin-user` (optional) - Admin username for authentication - `--admin-password` (optional) - Admin password for authentication **Example:** ```bash uv run python main.py get-site --domain www.example.com ``` --- #### `remove-site` Remove a site deployment record (requires admin) **Parameters:** - `--domain` (required) - Custom domain to remove - `--admin-user` (optional) - Admin username for authentication - `--admin-password` (optional) - Admin password for authentication - `--yes` (flag) - Skip confirmation prompt **Example:** ```bash uv run python main.py remove-site --domain www.example.com --yes ``` --- #### `sync-sites` Sync existing bunny.net sites with custom domains to database (requires admin) **Parameters:** - `--admin-user` (optional) - Admin username for authentication - `--admin-password` (optional) - Admin password for authentication - `--dry-run` (flag) - Show what would be imported without making changes **Example:** ```bash uv run python main.py sync-sites --dry-run ``` --- #### `discover-s3-buckets` Discover and register AWS S3 buckets as site deployments **Parameters:** None (runs the discovery script) **Example:** ```bash uv run python main.py discover-s3-buckets ``` --- ### Project Management #### `ingest-cora` Ingest a CORA .xlsx report and create a new project **Parameters:** - `--file` / `-f` (required) - Path to CORA .xlsx file - `--name` / `-n` (required) - Project name - `--money-site-url` / `-m` (optional) - Money site URL (e.g., https://example.com) - `--custom-anchors` / `-a` (optional) - Comma-separated list of custom anchor text - `--tier1-branded-ratio` (optional) - Ratio of branded anchor text for tier1 (default: 0.75). When specified, prompts for branded anchor text and configures tier1 job with explicit anchor text terms achieving the specified ratio. - `--random-deployment-targets` / `-r` (optional) - Number of random deployment targets to select from available sites (default: random 2-3) - `--username` / `-u` (optional) - Username for authentication - `--password` / `-p` (optional) - Password for authentication **Example:** ```bash uv run python main.py ingest-cora --file report.xlsx --name "My Project" --money-site-url https://example.com ``` --- #### `ingest-simple` Ingest a simple spreadsheet and create a new project **Expected spreadsheet format:** - First row: Headers (main_keyword, project_name, related_searches, entities) - Second row: Data values **Required columns:** main_keyword, project_name, related_searches, entities **Optional columns:** word_count (default: 1500), term_frequency (default: 3) **Parameters:** - `--file` / `-f` (required) - Path to simple .xlsx spreadsheet file - `--name` / `-n` (optional) - Project name (overrides project_name from spreadsheet) - `--money-site-url` / `-m` (optional) - Money site URL (e.g., https://example.com) - `--username` / `-u` (optional) - Username for authentication - `--password` / `-p` (optional) - Password for authentication **Example:** ```bash uv run python main.py ingest-simple --file simple.xlsx ``` --- #### `list-projects` List all projects for the authenticated user **Parameters:** - `--username` / `-u` (optional) - Username for authentication - `--password` / `-p` (optional) - Password for authentication **Example:** ```bash uv run python main.py list-projects ``` --- #### `create-job` Create a job file from an existing project ID **Parameters:** - `--project-id` / `-p` (required) - Project ID to create job file for - `--deployment-targets` / `-d` (multiple, optional) - Deployment target hostnames (can specify multiple times) - `--tier1-count` (optional, default: 10) - Number of tier1 articles - `--tier2-count` (optional, default: 30) - Number of tier2 articles - `--output` / `-o` (optional) - Output file path (default: jobs/{project_name}.json) - `--username` / `-u` (optional) - Username for authentication - `--password` / `-pwd` (optional) - Password for authentication **Example:** ```bash uv run python main.py create-job --project-id 1 --tier1-count 15 --tier2-count 50 --deployment-targets www.site1.com --deployment-targets www.site2.com ``` --- ### Content Generation #### `generate-batch` Generate content batch from job file **Parameters:** - `--job-file` / `-j` (required) - Path to job JSON file - `--username` / `-u` (optional) - Username for authentication - `--password` / `-p` (optional) - Password for authentication - `--debug` (flag) - Save AI responses to debug_output/ - `--continue-on-error` (flag) - Continue processing if article generation fails - `--model` / `-m` (optional, default: "gpt-4o-mini") - AI model to use (gpt-4o-mini, x-ai/grok-4-fast) **Example:** ```bash uv run python main.py generate-batch --job-file jobs/my-project.json --debug --continue-on-error ``` --- ### Deployment #### `deploy-batch` Deploy all content in a batch to cloud storage **Parameters:** - `--batch-id` / `-b` (required) - Project/batch ID to deploy - `--username` / `-u` (optional) - Username for authentication - `--password` / `-p` (optional) - Password for authentication - `--continue-on-error` (flag, default: True) - Continue if file fails - `--dry-run` (flag) - Preview what would be deployed **Example:** ```bash uv run python main.py deploy-batch --batch-id 1 --dry-run ``` --- #### `verify-deployment` Verify deployed URLs return 200 OK status **Parameters:** - `--batch-id` / `-b` (required) - Project/batch ID to verify - `--sample` / `-s` (optional) - Number of random URLs to check (default: check all) - `--timeout` / `-t` (optional, default: 10) - Request timeout in seconds **Example:** ```bash uv run python main.py verify-deployment --batch-id 1 --sample 10 --timeout 15 ``` --- ### Link Export #### `get-links` Export article URLs with optional link details for a project and tier **Parameters:** - `--project-id` / `-p` (required) - Project ID to get links for - `--tier` / `-t` (required) - Tier to filter (e.g., "1" or "2+" for tier 2 and above) - `--with-anchor-text` (flag) - Include anchor text used for tiered links - `--with-destination-url` (flag) - Include destination URL that the article links to **Example:** ```bash uv run python main.py get-links --project-id 1 --tier 1 --with-anchor-text --with-destination-url ``` --- ## Scripts Reference ### Site Management Scripts #### `discover_s3_buckets.py` Discover and register AWS S3 buckets as site deployments **Parameters:** - `--auto-import-all` (flag) - Automatically import all unregistered buckets **Usage:** ```bash # Interactive mode (select buckets manually) uv run python scripts/discover_s3_buckets.py # Auto-import mode (import all unregistered buckets) uv run python scripts/discover_s3_buckets.py --auto-import-all ``` **Features:** - Discovers all S3 buckets in AWS account - Skips buckets already registered in database - Respects exclusion list in `s3_bucket_exclusions.txt` - Automatically detects bucket region --- #### `list_s3_fqdn_sites.py` List all S3 sites with custom domains (FQDNs) **Parameters:** None **Usage:** ```bash uv run python scripts/list_s3_fqdn_sites.py ``` --- #### `list_sites_by_id.py` List site deployments by specific IDs **Parameters:** None (edit script to set target_ids) **Usage:** ```bash # Edit the script to set target_ids, then: uv run python scripts/list_sites_by_id.py ``` --- #### `delete_sites.py` Delete site deployments by ID **Parameters:** None (edit script to set site_ids) **Usage:** ```bash # Edit the script to set site_ids, then: uv run python scripts/delete_sites.py ``` **Warning:** This permanently deletes site records from the database. --- #### `check_sites.py` Check site status **Parameters:** None **Usage:** ```bash uv run python scripts/check_sites.py ``` --- #### `check_specific_sites.py` Check specific sites **Parameters:** None **Usage:** ```bash uv run python scripts/check_specific_sites.py ``` --- ### Deployment Scripts #### `add_robots_txt_to_buckets.py` Add standardized `robots.txt` files to all storage buckets (both S3 and Bunny) **Parameters:** - `--dry-run` (flag) - Preview what would be done without actually uploading - `--provider` (optional) - Only process specific provider: "s3" or "bunny" **Usage:** ```bash # Preview what would be done (recommended first) uv run python scripts/add_robots_txt_to_buckets.py --dry-run # Upload to all buckets uv run python scripts/add_robots_txt_to_buckets.py # Only process S3 buckets uv run python scripts/add_robots_txt_to_buckets.py --provider s3 # Only process Bunny storage zones uv run python scripts/add_robots_txt_to_buckets.py --provider bunny ``` **robots.txt behavior:** - ✅ Allows: Google, Bing, Yahoo, DuckDuckGo, Baidu, Yandex - ✅ Allows: GPTBot, Claude, Common Crawl, Perplexity, ByteDance AI - ❌ Blocks: Ahrefs, Semrush, Moz, and other SEO tools - ❌ Blocks: HTTrack, Wget, and other scrapers/bad bots --- #### `update_index_pages.py` Automatically generate or update `index.html` and `sitemap.xml` files for all storage buckets **Parameters:** - `--dry-run` (flag) - Preview what would be updated without actually uploading - `--provider` (optional) - Only process specific provider: "s3" or "bunny" - `--force` (flag) - Force update even if no changes detected - `--limit` (optional, integer) - Limit number of sites to process (useful for testing) - `--hostname` (optional, string) - Process only specific hostname (exact match) **Usage:** ```bash # Preview what would be updated (recommended first) uv run python scripts/update_index_pages.py --dry-run # Update all buckets uv run python scripts/update_index_pages.py # Only process S3 buckets uv run python scripts/update_index_pages.py --provider s3 # Only process Bunny storage zones uv run python scripts/update_index_pages.py --provider bunny # Force update even if no changes detected uv run python scripts/update_index_pages.py --force # Test on specific site uv run python scripts/update_index_pages.py --hostname example.com # Limit number of sites (useful for testing) uv run python scripts/update_index_pages.py --limit 10 ``` **Features:** - Lists all HTML files in each bucket's root directory - Extracts titles from `` tags (or formats filenames as fallback) - Generates article listings sorted by most recent modification date - Creates or updates `index.html` with article links - Generates `sitemap.xml` with industry-standard settings - Tracks last run timestamps to avoid unnecessary updates - Excludes boilerplate pages: `index.html`, `about.html`, `privacy.html`, `contact.html` --- ### Database Scripts #### `init_db.py` Initialize or reset the database **Parameters:** None (or "reset" argument) **Usage:** ```bash # Initialize database uv run python scripts/init_db.py # Reset database (drops all data) uv run python scripts/init_db.py reset ``` --- #### `create_first_admin.py` Create the first admin user in the system **Parameters:** None (interactive) **Usage:** ```bash uv run python scripts/create_first_admin.py ``` --- #### `add_admin_direct.py` Add an admin user directly to the database (bypasses authentication) **Parameters:** None (interactive) **Usage:** ```bash uv run python scripts/add_admin_direct.py ``` **Use case:** When you're locked out or need to create an admin without existing admin credentials. --- #### `list_users.py` List all users in the database (direct database access) **Parameters:** None **Usage:** ```bash uv run python scripts/list_users.py ``` --- #### Migration Scripts Database schema migrations for various features **Scripts:** - `migrate_story_3.1_sqlite.py` - Site deployments - `migrate_add_anchor_text.py` - Anchor text - `migrate_add_template_fields.py` - Template fields - `migrate_add_site_pages.py` - Site pages - `migrate_add_deployment_fields.py` - Deployment fields - `migrate_add_multi_cloud_storage_fields.py` - Multi-cloud storage fields - `migrate_add_image_fields.py` - Image fields **Parameters:** None **Usage:** ```bash uv run python scripts/migrate_story_3.1_sqlite.py ``` --- #### `backfill_site_pages.py` Backfill site pages after running the site pages migration **Parameters:** None **Usage:** ```bash uv run python scripts/backfill_site_pages.py ``` --- #### `check_migration.py` Check the status of database migrations **Parameters:** None **Usage:** ```bash uv run python scripts/check_migration.py ``` --- #### `add_tier_to_projects.py` Add tier field to existing projects **Parameters:** None **Usage:** ```bash uv run python scripts/add_tier_to_projects.py ``` --- ### Content Management Scripts #### `check_last_gen.py` Check the last generated content batch **Parameters:** None **Usage:** ```bash uv run python check_last_gen.py ``` --- #### `check_project_url.py` Check project URL **Parameters:** None (edit script for project_id) **Usage:** ```bash # Edit the script to set project_id, then: uv run python scripts/check_project_url.py ``` --- #### `check_job_last_run.py` Check job last run **Parameters:** None (edit script for project_id) **Usage:** ```bash # Edit the script to set project_id, then: uv run python scripts/check_job_last_run.py ``` --- #### `fix_tier1_money_links.py` Fix tier1 money links **Parameters:** None (edit script for project_id) **Usage:** ```bash # Edit the script to set project_id, then: uv run python scripts/fix_tier1_money_links.py ``` --- #### `investigate_tier1_links.py` Investigate tier1 links **Parameters:** None (edit script for project_id) **Usage:** ```bash # Edit the script to set project_id, then: uv run python scripts/investigate_tier1_links.py ``` --- #### `list_t1_articles.py` List tier1 articles **Parameters:** None **Usage:** ```bash uv run python scripts/list_t1_articles.py ``` --- #### `check_orphaned_articles.py` Check for orphaned articles **Parameters:** None **Usage:** ```bash uv run python scripts/check_orphaned_articles.py ``` --- #### `fix_orphaned_articles.py` Fix orphaned articles **Parameters:** None **Usage:** ```bash uv run python scripts/fix_orphaned_articles.py ``` --- ### Utility Scripts #### `generate_cli_docs.py` Regenerate the CLI command reference documentation **Parameters:** None **Usage:** ```bash uv run python scripts/generate_cli_docs.py ``` Generates `docs/CLI_COMMAND_REFERENCE.md` from Click command definitions. --- #### Test Scripts Various testing and debugging scripts **Scripts:** - `test_image_generation.py` - Test image generation - `test_image_reinsertion.py` - Test image reinsertion - `test_s3_upload.py` - Test S3 upload - `test_s3_uploads_localtris.py` - Test S3 uploads for localtris - `test_s3_real.py` - Test real S3 upload - `test_story_6_3.py` - Test story 6.3 **Parameters:** Various (see individual scripts) --- ## Suggested GUI Structure ### Main Navigation #### 1. Dashboard - System health status - Recent activity feed - Quick stats: - Total projects - Total sites - Total content generated - Recent deployments - Quick actions: - Create new project - Provision new site - Generate content --- #### 2. Projects **List View:** - Table of all projects - Columns: ID, Name, Keyword, Created, Status - Filters: By user, by date, by status - Search: By name, keyword - Actions: View, Edit, Delete, Create Job, Generate **Create Project:** - Tab 1: CORA Ingestion - File upload (drag & drop or file picker) - Project name input - Money site URL input - Custom anchors (comma-separated) - Authentication fields - Tab 2: Simple Ingestion - File upload - Project name (optional, can override spreadsheet) - Money site URL - Authentication fields **Project Details:** - Project information display - Related content list - Job files list - Actions: - Create job file - Generate content - Export links - Edit project **Create Job File:** - Project selector (dropdown) - Deployment targets (multi-select with search) - Tier 1 count (number input) - Tier 2 count (number input) - Model selection (dropdown) - Output path (optional, file picker) - Authentication fields --- #### 3. Sites **List View:** - Table of all sites - Columns: ID, Site Name, Domain, Storage Zone, Region, Provider - Filters: By provider, by region, by status - Search: By name, domain - Actions: View, Edit, Delete, Sync **Provision Site:** - Site name input - Domain input (FQDN) - Storage name input (with uniqueness check) - Region selector (dropdown: DE, NY, LA, SG, SYD) - Authentication fields - DNS configuration instructions display **Attach Domain:** - Site name input - Domain input (FQDN) - Storage name selector (dropdown of existing) - Authentication fields **Discover S3 Buckets:** - Auto-import toggle - Bucket list display - Status indicators (Available, Registered, Excluded) - Bulk selection - Import button **Site Details:** - Site information display - Storage zone details - Pull zone details - DNS configuration - Deployed content count - Actions: Edit, Remove, View Content --- #### 4. Content **List View:** - Table of all generated content - Columns: ID, Title, Project, Tier, Site, Status, Created - Filters: By project, by tier, by site, by status - Search: By title - Actions: View, Deploy, Delete **Deploy Batch:** - Batch/Project selector (dropdown) - Continue on error (checkbox) - Dry run (checkbox) - Authentication fields - Progress bar - Results display **Verify Deployment:** - Batch/Project selector (dropdown) - Sample size (number input, optional) - Timeout (number input, default: 10) - Results display: - Total checked - Successful - Failed (with details) **Content Details:** - Content display (HTML preview) - Metadata display - Deployment status - Actions: Edit, Redeploy, Delete --- #### 5. Maintenance **Update Index Pages:** - Provider filter (dropdown: All, S3, Bunny) - Force update (checkbox) - Limit (number input, optional) - Hostname filter (text input, optional) - Dry run (checkbox) - Progress bar - Results display **Add Robots.txt:** - Provider filter (dropdown: All, S3, Bunny) - Dry run (checkbox) - Progress bar - Results display **Verify Deployment:** - Same as Content → Verify Deployment **Database Tools:** - Initialize database (with confirmation) - Reset database (with strong confirmation) - Run migrations (list with status) - Check migration status --- #### 6. Settings **User Management:** - List users (table) - Add user form - Edit user form - Delete user (with confirmation) - Role management **System Configuration:** - Display current config - API keys management (view/edit) - Model selection - Environment variables display **Authentication:** - Login/logout - Session management - Remember credentials option --- ## Key Forms/Components ### Project Creation Form **Fields:** - File upload (CORA or Simple) - Drag & drop zone - File picker button - File validation (must be .xlsx) - Project name (text input, required) - Money site URL (text input, URL validation) - Custom anchors (text input, comma-separated, CORA only) - Authentication (username/password, optional if session exists) **Validation:** - File format check - URL format validation - Required field validation --- ### Job Creation Form **Fields:** - Project selector (dropdown, required) - Deployment targets (multi-select with search, optional) - Tier 1 count (number input, default: 10) - Tier 2 count (number input, default: 30) - Model selection (dropdown, optional) - Output path (file picker, optional) - Authentication (username/password, optional if session exists) **Features:** - Real-time validation - Preview of job file structure - Save as template option --- ### Generate Batch Form **Fields:** - Job file selector (file picker, required) - Model override (dropdown, optional) - Debug mode (checkbox) - Continue on error (checkbox) - Authentication (username/password, optional if session exists) **Features:** - Progress bar with percentage - Live log streaming - Cancel button - Results summary --- ### Deploy Batch Form **Fields:** - Batch/Project selector (dropdown, required) - Continue on error (checkbox, default: checked) - Dry run (checkbox) - Authentication (username/password, optional if session exists) **Features:** - Progress bar - File-by-file status - Results summary - Error details --- ### Site Provision Form **Fields:** - Site name (text input, required) - Domain (text input, FQDN validation, required) - Storage name (text input, required, uniqueness check) - Region selector (dropdown, required) - Authentication (username/password, optional if session exists) **Features:** - Real-time domain validation - Storage name uniqueness check - DNS configuration instructions display - Copy DNS settings button --- ### Maintenance Tools #### Update Index Pages **Fields:** - Provider filter (dropdown: All, S3, Bunny) - Force update (checkbox) - Limit (number input, optional) - Hostname filter (text input, optional) - Dry run (checkbox) **Features:** - Progress bar - Site-by-site status - Results summary #### Add Robots.txt **Fields:** - Provider filter (dropdown: All, S3, Bunny) - Dry run (checkbox) **Features:** - Progress bar - Results summary --- ## Implementation Notes ### 1. Authentication Many commands require `--username`/`--password`. Consider: - **Session-based authentication** in GUI - Login page with remember option - JWT or session tokens - Auto-refresh tokens - **Remember credentials** option - Secure storage (encrypted local storage) - Optional "remember me" checkbox - **Admin vs User role handling** - Role-based UI visibility - Permission checks before actions - Clear error messages for unauthorized actions --- ### 2. File Operations - **File upload** for CORA/Simple ingestion - Drag & drop interface - File picker fallback - Progress indicator - File size validation - Format validation (.xlsx only) - **File picker** for job files - Recent files list - File browser - File validation (JSON format) - **File download** for link exports - CSV export - JSON export options - Download button with progress --- ### 3. Real-time Updates - **Progress bars** for generation/deployment - Percentage complete - Current item being processed - Estimated time remaining - Cancel button - **Live status updates** - WebSocket or polling for status - Real-time log streaming - Status badges (Pending, Processing, Complete, Failed) - **Log streaming** - Scrollable log viewer - Auto-scroll to bottom - Filter by log level - Export logs option --- ### 4. Validation - **File format validation** before upload - Check file extension - Validate file structure (for spreadsheets) - Show clear error messages - **URL/domain validation** - Real-time validation as user types - Format checking (http://, https://) - Domain format validation - **Job file JSON validation** - Schema validation - Syntax checking - Required field checking - Clear error messages with line numbers --- ### 5. Error Handling - **Display error messages clearly** - User-friendly error messages - Technical details in expandable section - Error codes for support - **Retry mechanisms** - Retry button for failed operations - Automatic retry with exponential backoff - Max retry limit - **Continue-on-error options** - Checkbox for batch operations - Summary of successes and failures - Detailed error log --- ### 6. Data Display - **Tables** for projects, sites, content - Sortable columns - Filterable rows - Pagination for large datasets - Row selection (multi-select) - Bulk actions - **Filters and search** - Text search with highlighting - Advanced filters (date range, status, etc.) - Saved filter presets - **Pagination** - Page size selector - Page navigation - Total count display - **Export to CSV/JSON** - Export current view (with filters applied) - Export all data - Custom field selection --- ### 7. User Experience Enhancements - **Confirmation dialogs** for destructive actions - Delete operations - Reset database - Remove sites - **Loading states** - Skeleton loaders - Spinners for buttons - Disable forms during submission - **Success notifications** - Toast notifications - Success banners - Confirmation messages - **Keyboard shortcuts** - Quick navigation - Common actions (Ctrl+S to save, etc.) - **Responsive design** - Mobile-friendly layouts - Tablet optimization - Desktop-first with mobile fallbacks --- ### 8. Performance Considerations - **Lazy loading** for large lists - Virtual scrolling - Infinite scroll option - Load on demand - **Caching** - Cache project/site lists - Cache user session - Cache configuration - **Optimistic updates** - Update UI immediately - Rollback on error - **Debouncing** for search/filter inputs - Reduce API calls - Improve performance --- ### 9. Accessibility - **Keyboard navigation** - Tab order - Focus management - Keyboard shortcuts - **Screen reader support** - ARIA labels - Semantic HTML - Alt text for images - **Color contrast** - WCAG AA compliance - High contrast mode - **Error announcements** - Screen reader announcements - Error message association --- ## Technology Recommendations ### Frontend Framework Options 1. **React + TypeScript** - Component library: Material-UI or Ant Design - State management: Redux or Zustand - Forms: React Hook Form - HTTP client: Axios 2. **Vue.js + TypeScript** - Component library: Vuetify or Element Plus - State management: Pinia - Forms: Vee-Validate - HTTP client: Axios 3. **Next.js (React)** - Full-stack option - Server-side rendering - API routes ### Backend Integration - **REST API** (if creating new API endpoints) - FastAPI (Python) to match existing codebase - OpenAPI/Swagger documentation - **Direct CLI execution** (simpler initial approach) - Execute CLI commands from backend - Parse output - Return structured data ### Additional Tools - **File upload**: react-dropzone or similar - **Tables**: react-table or ag-grid - **Charts**: Chart.js or Recharts - **Notifications**: react-toastify or similar - **Logs**: react-terminal or xterm.js --- ## Next Steps 1. **Choose technology stack** 2. **Set up project structure** 3. **Create API layer** (if needed) or CLI wrapper 4. **Build authentication system** 5. **Implement core pages** (Dashboard, Projects, Sites) 6. **Add forms and validation** 7. **Implement real-time updates** 8. **Add error handling and notifications** 9. **Testing and refinement** 10. **Deployment** --- ## Related Documentation - [CLI Command Reference](./CLI_COMMAND_REFERENCE.md) - Detailed CLI documentation - [Job Schema](./job-schema.md) - Job file structure and configuration - [Architecture](./architecture.md) - System architecture overview - [Scripts README](../scripts/README.md) - Scripts documentation