Deployment Architecture

graph TB
    subgraph "Development Environment"
        DevMachine[Developer Machine]
        LocalVenv[Virtual Environment]
        LocalFiles[Local File System]
        DevTools[Development Tools<br/>IDE, Git, Testing]
    end

    subgraph "Production Environment"
        ProdServer[Production Server]
        ProdVenv[Production Virtual Environment]

        subgraph "File Storage"
            NewsDir[../News/ Directory]
            CapcatsDir[../Capcats/ Directory]
            LogDir[Log Files]
            ConfigDir[Configuration Files]
        end

        subgraph "Process Management"
            CronJobs[Cron Jobs]
            SystemdService[Systemd Service]
            ProcessMonitor[Process Monitoring]
        end
    end

    subgraph "CI/CD Pipeline"
        GitRepo[Git Repository]
        GithubActions[GitHub Actions]

        subgraph "Build Pipeline"
            LintCheck[Code Linting]
            UnitTests[Unit Tests]
            DocGeneration[Documentation Generation]
            PackageBuilding[Package Building]
            PyPIPublish[PyPI Publish]
        end
    end

    subgraph "External Dependencies"
        NewsSourcesExt[News Sources APIs]
        NetworkExt[Internet Access]
        DNSExt[DNS Resolution]
    end

    %% Development flow
    DevMachine --> LocalVenv
    LocalVenv --> LocalFiles
    DevMachine --> DevTools

    %% Production deployment
    ProdServer --> ProdVenv
    ProdVenv --> NewsDir
    ProdVenv --> CapcatsDir
    ProdVenv --> LogDir
    ProdVenv --> ConfigDir

    ProdServer --> CronJobs
    ProdServer --> SystemdService
    ProdServer --> ProcessMonitor

    %% CI/CD flow
    GitRepo --> GithubActions
    GithubActions --> LintCheck
    LintCheck --> UnitTests
    UnitTests --> DocGeneration
    DocGeneration --> PackageBuilding
    PackageBuilding --> PyPIPublish

    %% External dependencies
    ProdVenv --> NewsSourcesExt
    ProdServer --> NetworkExt
    NetworkExt --> DNSExt

    %% Styling
    classDef dev fill:#e3f2fd
    classDef prod fill:#e8f5e8
    classDef docker fill:#fff3e0
    classDef cicd fill:#f3e5f5
    classDef external fill:#fce4ec

    class DevMachine,LocalVenv,LocalFiles,DevTools dev
    class ProdServer,ProdVenv,NewsDir,CapcatsDir,LogDir,ConfigDir,CronJobs,SystemdService,ProcessMonitor prod
    class DockerContainer,VolumeMount,NetworkConfig,HealthChecks docker
    class GitRepo,GithubActions,LintCheck,UnitTests,DocGeneration,PackageBuilding,PyPIPublish cicd
    class NewsSourcesExt,NetworkExt,DNSExt external

Deployment Options

1. Direct Installation

# System-wide installation
sudo pip install capcat
capcat bundle tech --count 10

# User installation
pip install --user capcat
~/.local/bin/capcat bundle tech --count 10

2. Virtual Environment

# Development setup
python3 -m venv capcat-env
source capcat-env/bin/activate
pip install -r requirements.txt
capcat bundle tech --count 10

3. Systemd Service

[Unit]
Description=Capcat News Archiver
After=network.target

[Service]
Type=oneshot
User=capcat
WorkingDirectory=/opt/capcat
ExecStart=/opt/capcat/venv/bin/capcat bundle tech --count 30
Environment=CAPCAT_OUTPUT_DIR=/var/lib/capcat/news

[Install]
WantedBy=multi-user.target

4. Cron Job

# Daily news archiving at 6 AM
0 6 * * * /opt/capcat/venv/bin/capcat bundle tech --count 30

Security Considerations

  • File Permissions: Restrict write access to output directories
  • Network Access: Firewall rules for external connections
  • User Isolation: Run under dedicated service account
  • Log Security: Secure log file access and rotation
  • Dependency Management: Regular security updates