Skip to main content

Django Multi-Platform Scraper Management CLI (dj.sh)

A comprehensive command-line interface for managing your Django multi-platform scraper application with integrated development environment management, testing, and database operations.

Table of Contents

Quick Start

# First time setup
./dj.sh mig              # Apply database migrations
./dj.sh devstart         # Set up development environment
./dj.sh run              # Start development server

# Check everything is working
./dj.sh test_auth        # Test authentication
./dj.sh devstatus        # Check environment status

Basic Django Commands

Standard Django management commands for development operations.

run - Start Development Server

Starts the Django development server.
./dj.sh run [options]
OptionDescriptionExample
--portSpecify port number./dj.sh run --port 8080
--hostSpecify host address./dj.sh run --host 0.0.0.0
Use Cases:
  • Daily development server startup
  • Testing with different ports
  • Making server accessible to network

mkmig - Create Migrations

Creates Django database migrations for model changes.
./dj.sh mkmig [app_name]
ParameterRequiredDescriptionExample
app_nameNoSpecific app to migrate./dj.sh mkmig scraper
Use Cases:
  • After modifying Django models
  • Creating initial migrations for new apps
  • Preparing database schema changes

mig - Apply Migrations

Applies pending database migrations.
./dj.sh mig [app_name] [migration_name]
ParameterRequiredDescriptionExample
app_nameNoSpecific app to migrate./dj.sh mig scraper
migration_nameNoSpecific migration to apply./dj.sh mig scraper 0001
Use Cases:
  • Initial database setup
  • Applying schema changes
  • Updating database structure

sudo - Create Superuser

Creates a Django superuser account for admin access.
./dj.sh sudo
Interactive Prompts:
  • Username
  • Email address
  • Password (entered twice)
Use Cases:
  • Initial admin account creation
  • Creating additional admin users
  • Accessing Django admin interface

shell - Django Shell

Opens an interactive Django shell with project context loaded.
./dj.sh shell
Use Cases:
  • Interactive model testing
  • Data manipulation
  • Debugging database queries
  • Testing Django functionality

check - System Check

Runs Django’s system check framework to identify potential issues.
./dj.sh check
Use Cases:
  • Pre-deployment validation
  • Identifying configuration issues
  • Checking for deprecated code

test - Run Tests

Executes Django test suite.
./dj.sh test [app_name] [test_class] [test_method]
ParameterRequiredDescriptionExample
app_nameNoSpecific app to test./dj.sh test scraper
test_classNoSpecific test class./dj.sh test scraper.TestModels
test_methodNoSpecific test method./dj.sh test scraper.TestModels.test_application
Use Cases:
  • Running full test suite
  • Testing specific functionality
  • Continuous integration validation

Development Environment Management

Commands for setting up, managing, and maintaining development environments with multi-platform scraper data.

devstart / setup - Setup Development Environment

Creates a complete development environment with test data, users, and platform configurations.
./dj.sh devstart [options]
OptionDefaultDescriptionExample
--tierproSubscription tier./dj.sh devstart --tier enterprise
--usernamedevuserUsername to create./dj.sh devstart --username testdev
--email{username}@example.comUser email./dj.sh devstart --email dev@company.com
--passworddevpassword123User password./dj.sh devstart --password mypass
--notion-tokenENV varNotion API token./dj.sh devstart --notion-token secret_xxx
--feature-db-idENV varFeatures database ID./dj.sh devstart --feature-db-id abc123
--skip-existingNoSkip if user exists./dj.sh devstart --skip-existing
Environment Variables:
  • NOTION_TOKEN - Notion API token
  • FEATURE_DB_ID - Notion features database ID
  • TIER_DB_ID - Notion tiers database ID
  • IO_DB_ID - Notion I/O database ID
  • TAG_DB_ID - Notion tags database ID
  • KEYWORD_DB_ID - Notion keywords database ID
What Gets Created:
  • User account with specified tier subscription
  • Platform (Notion workspace) configuration
  • Two sample applications (Skyflow, Nexus)
  • Data source connections
  • Platform access permissions
Use Cases:
  • Initial development setup
  • Creating test environments
  • Onboarding new developers

devstart_full - Full Development Setup

Sets up a comprehensive PRO-tier development environment with all features enabled.
./dj.sh devstart_full [additional_options]
Equivalent to:
./dj.sh devstart --tier pro --username devuser --clear-cache
Use Cases:
  • Complete feature testing
  • Demo environments
  • Full integration testing

devstart_minimal - Minimal Development Setup

Creates a basic FREE-tier environment for testing limitations and basic functionality.
./dj.sh devstart_minimal [additional_options]
Equivalent to:
./dj.sh devstart --tier free --username testuser
Use Cases:
  • Testing tier limitations
  • Basic functionality verification
  • Minimal resource usage

devclear / clear - Clear Development Data

Removes all development data including users, applications, platforms, and related records.
./dj.sh devclear [options]
OptionDescriptionExample
--all-usersClear all test users./dj.sh devclear --all-users
--usernameClear specific user./dj.sh devclear --username testuser
--keep-userKeep user but clear data./dj.sh devclear --keep-user
--clear-cacheAlso clear cache/logs./dj.sh devclear --clear-cache
What Gets Deleted:
  • Applications and data sources
  • Platform access permissions
  • User subscriptions
  • Cache entries (if specified)
  • API logs (if specified)
Use Cases:
  • Clean slate development
  • Removing test data
  • Preparing for fresh setup

dryclear / preview - Preview Cleanup

Shows what data would be deleted without actually performing the deletion.
./dj.sh dryclear [options]
Output Includes:
  • Users and their applications
  • Platform connections
  • Subscription details
  • Data source counts
Use Cases:
  • Verifying cleanup scope
  • Understanding data relationships
  • Safe exploration of cleanup impact

devclear_user - Clear Specific User

Removes data for a specific user only.
./dj.sh devclear_user <username> [options]
ParameterRequiredDescriptionExample
usernameYesUsername to clear./dj.sh devclear_user testuser
Use Cases:
  • Removing specific test users
  • Targeted data cleanup
  • User account management

devstatus / status - Development Status

Shows comprehensive development environment status with detailed information.
./dj.sh devstatus [options]
OptionDescriptionExample
--usernameCheck specific user./dj.sh devstatus --username testuser
--detailedShow detailed info./dj.sh devstatus --detailed
Information Displayed:
  • User accounts and permissions
  • Subscription tiers and usage
  • Applications and data sources
  • Platform connections
  • Global system statistics
Use Cases:
  • Environment health checks
  • Understanding current setup
  • Debugging configuration issues

devstatus_quick - Quick Status Check

Shows condensed status information for rapid assessment.
./dj.sh devstatus_quick
Use Cases:
  • Quick health checks
  • Daily status verification
  • Rapid troubleshooting

Platform & Application Management

Commands for inspecting and managing the multi-platform architecture components.

apps - List Applications

Displays all applications organized by user with data source information.
./dj.sh apps
Output Format:
Applications by User:
========================================
devuser: 2 apps
  - Skyflow (skyflow): 2 sources
  - Nexus (nexus): 1 sources
testuser: No applications
Use Cases:
  • Understanding application structure
  • Verifying data source connections
  • Application inventory

platforms - List Platforms

Shows all platforms with their datasets and connected applications.
./dj.sh platforms
Output Format:
Platforms and Datasets:
========================================
Dev Notion Workspace (notion): 2 datasets
  - Features Database: 2 connected apps
  - Analytics Database: 1 connected apps
Use Cases:
  • Platform inventory
  • Dataset usage analysis
  • Connection relationship mapping

users - List Users with Details

Comprehensive user listing with subscription and application information.
./dj.sh users
Output Format:
Users and Subscriptions:
========================================
devuser | pro | 0/50000 | 2 apps | staff=True | active=True
testuser | free | 0/1000 | 0 apps | staff=False | active=True
Information Displayed:
  • Username
  • Subscription tier
  • Request usage (used/limit)
  • Application count
  • Staff status
  • Active status
Use Cases:
  • User management
  • Subscription monitoring
  • Access level verification

Testing & Validation

Comprehensive testing commands for validating system functionality and integration.

test_integration - Comprehensive Integration Test

Runs the complete integration test suite with detailed reporting.
./dj.sh test_integration [options]
OptionDescriptionExample
--verboseDetailed output./dj.sh test_integration --verbose
--skip-apiSkip API tests./dj.sh test_integration --skip-api
Test Categories:
  • Data structure validation
  • Registry integration
  • Application data access
  • Filtering system functionality
  • Data source connections
  • API endpoint testing
  • Backward compatibility
  • Error handling
Use Cases:
  • Pre-deployment validation
  • Feature development verification
  • System health assessment

test_quick - Quick Integration Test

Runs essential integration tests with minimal output.
./dj.sh test_quick
Use Cases:
  • Rapid functionality check
  • Daily development validation
  • Quick smoke testing

validate - Validate Setup

Performs comprehensive validation of development environment setup.
./dj.sh validate
Validation Checks:
  • User accounts and subscriptions
  • Platform configurations
  • Application and data source connections
  • Registry functionality
  • Database consistency
Use Cases:
  • Post-setup verification
  • Troubleshooting configuration issues
  • Environment health assessment

test_auth - Test Authentication

Validates authentication system functionality with test requests.
./dj.sh test_auth
Authentication Tests:
  • User login capability
  • Session management
  • API request authentication
  • Permission verification
Output Example:
Status: 200
Success: True
Apps: 2
Use Cases:
  • Authentication troubleshooting
  • Permission verification
  • API access testing

api_test - Test API Endpoints

Comprehensive testing of all API endpoints with authentication.
./dj.sh api_test
Endpoints Tested:
  • /scrape/apps/ - Applications list
  • /scrape/platforms/ - Platforms list
  • /scrape/features/ - Features data
  • /scrape/tiers/ - Tiers data
Output Format:
/scrape/apps/: OK (200)
/scrape/platforms/: OK (200)
/scrape/features/: OK (200)
/scrape/tiers/: FAIL (404)
Use Cases:
  • API functionality verification
  • Endpoint availability checking
  • Integration testing

Database Management

Commands for database operations, backup, and maintenance.

reset_db - Reset Database

Completely resets the database by deleting and recreating it.
./dj.sh reset_db
Safety Features:
  • Interactive confirmation required
  • Complete data loss warning
  • Suggests follow-up commands
Process:
  1. Prompts for confirmation
  2. Deletes database file
  3. Runs migrations to recreate schema
  4. Suggests running devstart for test data
Use Cases:
  • Complete environment reset
  • Resolving migration conflicts
  • Starting with clean database

backup - Backup Database

Creates a timestamped JSON backup of the entire database.
./dj.sh backup
Backup Details:
  • Location: /tmp/db_backup_YYYYMMDD_HHMMSS.json
  • Format: Django fixtures JSON
  • Includes all data and relationships
Output Example:
Backing up database to: /tmp/db_backup_20250909_143052.json
Backup complete: /tmp/db_backup_20250909_143052.json
Use Cases:
  • Pre-deployment backups
  • Development snapshots
  • Data preservation before major changes

restore - Restore Database

Restores database from a backup file.
./dj.sh restore <backup_file>
ParameterRequiredDescriptionExample
backup_fileYesPath to backup file./dj.sh restore /tmp/db_backup_20250909_143052.json
Safety Features:
  • Lists available backups if no file specified
  • Interactive confirmation for data overwrite
  • Validates backup file exists
Use Cases:
  • Disaster recovery
  • Rolling back changes
  • Environment restoration

Development Workflows

High-level workflow commands that combine multiple operations for common development scenarios.

dev_reset - Complete Development Reset

Performs a complete reset and fresh setup of the development environment.
./dj.sh dev_reset
Process Flow:
  1. Clear existing data (all users, platforms, applications)
  2. Set up fresh PRO environment with devuser
  3. Validate setup completeness
  4. Run integration tests
  5. Report completion status
Use Cases:
  • Major environment corruption
  • Starting fresh development cycle
  • Resolving complex configuration issues

dev_check - Development Environment Check

Quick comprehensive health check of the development environment.
./dj.sh dev_check
Check Components:
  1. Detailed status report
  2. Setup validation
  3. Authentication test
Use Cases:
  • Daily environment verification
  • Quick troubleshooting
  • Development readiness check

Tier-Specific Setup Commands

Commands for creating users with specific subscription tiers for testing different feature sets.

setup_free - FREE Tier Setup

./dj.sh setup_free
Creates:
  • User: freeuser
  • Tier: FREE (1,000 requests/month)
  • Limitations: 1 platform, 1 dataset, no analytics/export

setup_basic - BASIC Tier Setup

./dj.sh setup_basic
Creates:
  • User: basicuser
  • Tier: BASIC (10,000 requests/month)
  • Features: 2 platforms, 3 datasets, analytics enabled

setup_pro - PRO Tier Setup

./dj.sh setup_pro
Creates:
  • User: prouser
  • Tier: PRO (50,000 requests/month)
  • Features: 5 platforms, 10 datasets, all features enabled

setup_enterprise - ENTERPRISE Tier Setup

./dj.sh setup_enterprise
Creates:
  • User: enterpriseuser
  • Tier: ENTERPRISE (200,000 requests/month)
  • Features: Unlimited platforms/datasets, all features
Use Cases for Tier Testing:
  • Feature limitation verification
  • Subscription upgrade testing
  • User experience validation across tiers

API Testing

Dedicated commands for testing API functionality and endpoints.

api_test - Comprehensive API Testing

Tests all major API endpoints with proper authentication.
./dj.sh api_test
Test Coverage:
  • Authentication verification
  • Endpoint availability
  • Response format validation
  • Error handling
Endpoints Tested:
  • Applications management
  • Platform information
  • Legacy compatibility endpoints
  • Data retrieval endpoints
Use Cases:
  • API functionality verification
  • Integration testing
  • Deployment validation

Common Use Cases

First Time Project Setup

# 1. Apply database migrations
./dj.sh mig

# 2. Set up development environment
./dj.sh devstart

# 3. Create admin user (optional)
./dj.sh sudo

# 4. Verify setup
./dj.sh validate

# 5. Test authentication
./dj.sh test_auth

# 6. Start development server
./dj.sh run

Daily Development Workflow

# Quick environment check
./dj.sh devstatus_quick

# Test authentication still works
./dj.sh test_auth

# Start development server
./dj.sh run

Testing Different Subscription Tiers

# Set up users for each tier
./dj.sh setup_free
./dj.sh setup_basic
./dj.sh setup_pro
./dj.sh setup_enterprise

# View all test users
./dj.sh users

# Test API with different users
./dj.sh api_test

Preparing for Deployment

# Create backup
./dj.sh backup

# Run comprehensive tests
./dj.sh test_integration

# Validate environment
./dj.sh validate

# Check system health
./dj.sh check

Development Environment Maintenance

# Weekly cleanup and refresh
./dj.sh devclear
./dj.sh devstart

# Or complete reset if needed
./dj.sh dev_reset

Troubleshooting

Common Issues and Solutions

No Applications Showing

Problem: ./dj.sh apps shows no applications Solutions:
# Check if development data exists
./dj.sh devstatus

# If no data, set up development environment
./dj.sh devstart

# If data exists, check authentication
./dj.sh test_auth

Authentication Failures

Problem: API endpoints return authentication errors Solutions:
# Verify user exists
./dj.sh users

# Create development user if missing
./dj.sh devstart

# Test authentication specifically
./dj.sh test_auth

Database Migration Issues

Problem: Migration errors or conflicts Solutions:
# Check for issues
./dj.sh check

# Reset database completely
./dj.sh reset_db

# Reapply migrations
./dj.sh mig

# Set up fresh data
./dj.sh devstart

Environment Corruption

Problem: Multiple issues or inconsistent state Solutions:
# Nuclear option: complete reset
./dj.sh dev_reset

# Or step by step
./dj.sh backup  # Save current state first
./dj.sh devclear
./dj.sh devstart
./dj.sh validate

Diagnostic Commands

# Comprehensive environment check
./dj.sh dev_check

# Detailed validation
./dj.sh validate

# Integration testing
./dj.sh test_integration --verbose

# Preview cleanup impact
./dj.sh dryclear

Getting Help

# Show all available commands
./dj.sh help

# Django system check
./dj.sh check

# Run with verbose output for debugging
./dj.sh test_integration --verbose

Best Practices

  1. Always backup before major changes: Use ./dj.sh backup
  2. Use dry-run commands: Preview changes with ./dj.sh dryclear
  3. Regular validation: Run ./dj.sh validate after setup changes
  4. Test different tiers: Use tier-specific setup commands for comprehensive testing
  5. Clean environment: Use ./dj.sh dev_reset for fresh starts
  6. Monitor status: Regular ./dj.sh devstatus checks for environment health