Files

3.0 KiB

7. Deployment View

Describes:

  1. Technical infrastructure used to execute your system, with infrastructure elements like geographical locations, environments, computers, processors, channels and net topologies.
  2. Mapping of (software) building blocks to that infrastructure elements.

See: Coolify Deployment Guide for detailed instructions.

Infrastructure Level 1

Hosted on a single VM running docker containers, deployed via Coolify with Nixpacks to 192.168.88.18 for production.

Containers run behind nginx at 192.168.88.11 which handles TLS termination and reverse proxying to the frontend on port 12016 and backend on port 12015. The database is a file on the host filesystem at data/app.db accessed by the backend service.

graph TD
      Users[Users / Internet]
      Nginx[nginx reverse proxy\nTLS termination]
      Users -->|HTTPS| Nginx

      subgraph Coolify Server
         direction TB
         subgraph AI Frontend
            AI_Frontend[AI Frontend\nFlask\nServes HTML/CSS/JS UI]
         end
         subgraph AI Backend
            AI_Backend[AI Backend\nFastAPI\nCommunicates with openrouter.ai API]
            db[(DuckDB Database\nFile: data/app.db)]
            AI_Backend --> db
         end
         AI_Frontend -->|BACKEND_URL:12015| AI_Backend
      end
      Nginx -->|12016| AI_Frontend

Motivation: All three components run as Docker containers for simplicity and low operational overhead.

Quality and/or Performance Features: The frontend and backend are stateless; DuckDB persists data on the host filesystem.

Mapping of Building Blocks to Infrastructure:

Building Block Container / Process Port
Nginx nginx 80/443 (public)
Coolify Server coolify
Flask frontend frontend 12016
FastAPI backend backend 12015
DuckDB File on host (data/app.db)

Infrastructure Level 2

Coolify with Nixpacks (Production)

Both services are deployed as separate Nixpacks resources in Coolify, which results in two separate containers running on the same host. The database is a file on the host filesystem, mounted as a volume in the backend container.

Frontend

graph TD
   subgraph Coolify Server
      direction TB
      subgraph AI Frontend
         AI_Frontend[AI Frontend\nNixpacks\nBase Dir: /frontend]
      end
   end
   Users[Users / Internet] -->|HTTPS| AI_Frontend

Backend

graph TD
   subgraph Coolify Server
      direction TB
      subgraph AI Backend
         AI_Backend[AI Backend\nNixpacks\nBase Dir: /backend]
         db[(DuckDB Database\nVolume: /app/data)]
         AI_Backend --> db
      end
   end
   Frontend[Frontend Container] -->|BACKEND_URL:12015| AI_Backend