System Architecture
Overview
This system was designed and deployed using a modular containerised architecture hosted on a Dell OptiPlex 3050 Micro running Proxmox VE. The platform consists of multiple Linux containers (LXC), each handling a specific part of the system including data access, analysis, frontend, and routing. This structure supports independent development, scalability, and reliability across services.
Container Boot Order
- 1️⃣ PostgreSQL – Internal configuration DB and audit log storage
- 2️⃣ Abstraction Layer – ODBC/REST bridging between external databases and backend
- 3️⃣ Backend – Handles analysis engine and Redis caching
- 4️⃣ Frontend – Dash interface for data selection and result display
- 5️⃣ NGINX Proxy Manager – Routes user requests internally to each service
Software Stack
- Proxmox VE: Hypervisor for managing LXC containers
- Python: Used across backend, frontend, and abstraction layer
- Redis: In-memory caching layer to reduce repeated queries
- PostgreSQL: Internal configuration and audit logging database
- FastAPI: Backend REST API for routing and analysis endpoints
- Dash: Web-based interface for data interaction and visualisation
- WSGI & ASGI: Application servers for running Python web apps (Gunicorn, Uvicorn)
- NGINX Proxy Manager: Reverse proxy for request routing and domain binding
Deployment Environment
The project was developed and deployed on a local Dell OptiPlex 3050 Micro, configured with 8 CPU threads, 16GB RAM, and Ubuntu-based containers. Each container includes a Python virtual environment (venv) and is managed via systemd service scripts to ensure clean startup, shutdown, and isolation.
System Diagram
Below is a high-level diagram outlining how each container communicates with one another through internal HTTP and shared resources.