Skip to content

Instantly share code, notes, and snippets.

@untainsYD
Created June 12, 2025 00:54
Show Gist options
  • Save untainsYD/b8783dc0615a4fd0b56e48a0fc5b0fff to your computer and use it in GitHub Desktop.
Save untainsYD/b8783dc0615a4fd0b56e48a0fc5b0fff to your computer and use it in GitHub Desktop.
Deployment and infrastructure
graph TB
    subgraph "Client Devices"
        Browser[Web Browser]
        Mobile[Mobile Device]
        AdminDevice[Admin Workstation]
    end
    
    subgraph "Load Balancer/CDN"
        LB[Nginx Load Balancer<br/>SSL Termination]
    end
    
    subgraph "Docker Host Server"
        subgraph "Application Containers"
            APIContainer[heyhomie-api<br/>Rails 7.0<br/>Port: 3000]
            AdminContainer[heyhomie-admin<br/>Rails 7.0<br/>Port: 3001]
            RecoveryContainer[heyhomie-payment-recovery<br/>Ruby Service<br/>Port: 3002]
            ClientContainer[heyhomie-client<br/>React.js 3<br/>Port: 8080]
        end
        
        subgraph "Database Containers"
            PostgreSQLContainer[PostgreSQL 13<br/>with PostGIS<br/>Port: 5432]
            RedisContainer[Redis 6<br/>Port: 6379]
        end
        
        subgraph "Shared Volumes"
            DBVolume[Database Volume]
            LogsVolume[Logs Volume]
            UploadsVolume[File Uploads Volume]
        end
    end
    
    subgraph "External Services"
        StripeAPI[Stripe API<br/>payments.stripe.com]
        EmailService[Email Provider<br/>SMTP/API]
        SMSService[SMS Gateway<br/>API]
    end
    
    %% Client connections
    Browser -->|HTTPS:443| LB
    Mobile -->|HTTPS:443| LB
    AdminDevice -->|HTTPS:443| LB
    
    %% Load balancer routing
    LB -->|/api/*| APIContainer
    LB -->|/admin/*| AdminContainer
    LB -->|/recovery/*| RecoveryContainer
    LB -->|/*| ClientContainer
    
    %% Internal service connections
    APIContainer <-->|TCP:5432| PostgreSQLContainer
    AdminContainer <-->|TCP:5432| PostgreSQLContainer
    RecoveryContainer <-->|TCP:5432| PostgreSQLContainer
    
    APIContainer <-->|TCP:6379| RedisContainer
    AdminContainer <-->|TCP:6379| RedisContainer
    
    APIContainer <-->|HTTP API| RecoveryContainer
    
    %% External API connections
    APIContainer -->|HTTPS API| StripeAPI
    RecoveryContainer -->|HTTPS API| StripeAPI
    APIContainer -->|SMTP/API| EmailService
    RecoveryContainer -->|SMTP/API| EmailService
    APIContainer -->|HTTP API| SMSService
    
    %% Volume mounts
    PostgreSQLContainer -.->|mount| DBVolume
    APIContainer -.->|mount| LogsVolume
    AdminContainer -.->|mount| LogsVolume
    RecoveryContainer -.->|mount| LogsVolume
    APIContainer -.->|mount| UploadsVolume
    
    classDef client fill:#e3f2fd
    classDef infrastructure fill:#f3e5f5
    classDef application fill:#e8f5e8
    classDef database fill:#fff3e0
    classDef external fill:#ffebee
    classDef storage fill:#f5f5f5
    
    class Browser,Mobile,AdminDevice client
    class LB infrastructure
    class APIContainer,AdminContainer,RecoveryContainer,ClientContainer application
    class PostgreSQLContainer,RedisContainer database
    class StripeAPI,EmailService,SMSService external
    class DBVolume,LogsVolume,UploadsVolume storage
Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment