Product Documentation v4.2 Enterprise
SWOT DAM Logo Documentation

SWOT DAM Product Documentation

Welcome to the official documentation for SWOT DAM. This guide provides detailed information on system architecture, operational modules, database collectors, and compliance frameworks. Whether you're setting up SWOT DAM for the first time or managing a large-scale enterprise deployment, you'll find everything you need here.

01 Executive Overview & Value Proposition

Database Activity Monitoring (DAM) involves tracking and analyzing database events in real time. Unlike legacy approaches, SWOT DAM integrates security posture management, forensic auditing, and behavioral analytics into a single platform.

Core Feature: Dual Security & Operations Control Plane SWOT DAM is a self-hosted platform that binds Security Posture, Forensic Audit Activity, Behavioral Risk Analytics, Regulatory Compliance, and Database Operational Resilience into one unified cockpit across heterogeneous enterprise database fleets.
SWOT DAM Secure Login Interface
Figure 1.0 — Secure Enterprise Authentication
Enterprise single sign-on and role-based access control authentication gateway. Click to expand
SWOT DAM Primary Home Dashboard
Figure 1.1 — SWOT DAM Primary Home Dashboard
Main executive dashboard displaying real-time security posture and threat intelligence. Click to expand
SWOT DAM Live Application Dashboard with Real Audit Events
Figure 1.2 — SWOT DAM Unified Forensic Explorer
Production SWOT DAM cockpit displaying live multi-database monitoring, 16 captured audit events, risk metrics (0-100), and status telemetry. Click to expand

Heterogeneous Fleet Coverage

Native integration with Oracle (Unified/FGA), PostgreSQL (pgAudit), MSSQL (Server Audit), and MySQL, alongside Cloud RDS and Aurora.

Non-Invasive Architecture

Zero kernel hooks or invasive inline proxies. SWOT DAM pulls audit streams via native high-performance read loops without impacting transactional TPS.

AI & Behavioral Baselines

Detects anomalous after-hours queries, massive export spikes, privilege escalation, and classifies sensitive PII/Financial columns via LLM intelligence.

Turnkey CIS & Frameworks

Automated compliance mapping for PCI-DSS 4.0, HIPAA, SOX 404, and GDPR Article 32 with one-click tamper-evident auditor evidence packs.

02 System Physical & Logical Architecture

SWOT DAM is engineered as a resilient, two-tier modular architecture designed for high event throughput and minimal resource footprint on monitored production instances.

1
Target Databases
Oracle, PG, MSSQL, MySQL
→
2
Collector Workers
ThreadPoolExecutor & Watermarks
→
3
FastAPI Backend
Uvicorn Async & Deduplication
→
4
Metadata Lake
Normalized Event Store
→
5
React UI Client
Real-time Cockpit

Physical Components

  • Central Audit Backend (`central_audit_backend`): Python 3.10+ service utilizing FastAPI and Uvicorn for high-concurrency REST endpoints. Background jobs are managed by APScheduler executing inside a dedicated ThreadPoolExecutor pool.
  • Metadata & Normalized Event Lake: Managed through SQLAlchemy with SQLite or PostgreSQL backend. Stores collector definitions, normalized audit logs, alerts, user profiles, and configuration flags. Target business data is never stored.
  • Dam_Frontend (Vite / React SPA): A lightweight single-page application utilizing TailwindCSS, Lucide icons, and React Query for sub-second reactive state hydration.

Addressing Concurrency & Synchronous Drivers

Standard enterprise database drivers (such as cx_Oracle, pymssql, and psycopg2) are synchronous and blocking. If executed directly inside an asynchronous async def route, they would freeze the entire Python asyncio event loop.

# FastAPI Non-Blocking ThreadPool Execution Pattern
from starlette.concurrency import run_in_threadpool
from fastapi import APIRouter, Depends

router = APIRouter()

@router.get("/api/admin/audit-logs")
async def fetch_audit_logs(source_id: int, limit: int = 50):
    # Offload blocking database I/O to background OS threads
    # Preserves 100% responsiveness of the asyncio event loop
    logs = await run_in_threadpool(
        blocking_fetch_logs_from_engine, 
        source_id=source_id, 
        limit=limit
    )
    return {"status": "success", "data": logs}
# Incremental Oracle SCN / Timestamp Watermark Polling
def poll_oracle_unified_audit(connection, last_watermark_scn: int):
    query = """
        SELECT SCN, EVENT_TIMESTAMP, DBUSERNAME, ACTION_NAME, OBJECT_SCHEMA, OBJECT_NAME, SQL_TEXT 
        FROM UNIFIED_AUDIT_TRAIL 
        WHERE SCN > :scn_watermark 
        ORDER BY SCN ASC 
        FETCH FIRST 5000 ROWS ONLY
    """
    cursor = connection.cursor()
    cursor.execute(query, {"scn_watermark": last_watermark_scn})
    rows = cursor.fetchall()
    # Advance high-water mark to prevent duplicates and missed events
    new_watermark = rows[-1][0] if rows else last_watermark_scn
    return rows, new_watermark

03 Security Boundaries & Data Isolation

SWOT DAM is engineered with strict cryptographic boundaries to guarantee that target database credentials and audit logs remain strictly under customer control.

Boundary Domain Implementation Mechanism Security Guarantee
Target DB Credentials Fernet Symmetric Encryption (AES-128-CBC + HMAC-SHA256) Master key stored via environment variable (`FERNET_SECRET_KEY`); passwords never stored in cleartext.
User Authentication Bcrypt Password Hashing (12 salt rounds) + Signed JWTs Tokens expire in 8 hours (`SESSION_SECRET`); zero reversible password hashes.
Multi-Tenant Isolation Organization Units (OUs) & Collector Group Assignment Non-admin users can strictly query audit logs from collectors mapped to their assigned groups.
Audit Trail Integrity HMAC-SHA256 Cryptographic Watermarking Guarantees mathematical tamper-evidence for forensic export packages.
Data Sovereignty Guarantee SWOT DAM never connects to target user data tables or replicates production business records. It only retrieves catalog metadata (`DBA_TAB_COLUMNS`), native audit views (`UNIFIED_AUDIT_TRAIL`, `pgaudit`), and system DMVs (`V$SESSION`, `sys.dm_exec_requests`).

04 Monitoring Deck & Fleet Topology

The Monitoring Deck (`dashboard.html`) serves as the mission-control cockpit for the enterprise database fleet. It consolidates real-time telemetry across all configured database engines.

Monitoring Deck Real-Time Fleet Overview
Figure 4.1 — Monitoring Deck Real-Time Fleet Overview
Live fleet deck displaying 22/22 online database instances, host resource gauges (CPU, RAM, Disks), and alert distribution. Click to expand

22/22 Online Fleet Indicator

Active ping heartbeat verifies network connectivity, socket response time, and credentials every 30 seconds.

Host Telemetry Gauges

Real-time CPU, RAM, and Disk metrics (e.g. C: 89.3%, D: 53.1%) with live auto-refresh sync toggles.

Active Alert Counters

Aggregated counters displaying active alerts (1,275 total) and prioritized Critical tier anomalies (722 critical incidents).

Interactive Instance Cards

Cards displaying engine type (MSSQL, Oracle, PG, MySQL), polling cadence (30s), activity counts, and host IP addresses.

05 LiveOps Real-Time Telemetry & Lock Analysis

The LiveOps module (`liveops.html`) delivers sub-second operational observability. It bridges database security with DBA operational health, identifying rogue transactions, lock starvation, and long-running exfiltration attempts.

LiveOps Real-Time Query Stream and Lock Analysis
Figure 5.1 — LiveOps Real-Time Query Stream & Lock Hierarchy
Real-time transaction monitors, active blocker trees, executing SQL statements, and emergency session kill actions. Click to expand

Core Operational Capabilities

  • Live Query Stream: Displays actively executing SQL statements across all engines with runtime duration, execution plan hash, and client machine name.
  • Blocking Lock Hierarchy: Automatically builds visual tree graphs identifying root-cause blocker sessions (`SID`, `SPID`, `PID`) holding exclusive row/table locks.
  • Emergency Session Termination: Provides an authenticated "Kill Session" button executing engine-native abort commands (`ALTER SYSTEM KILL SESSION`, `pg_terminate_backend`, `KILL `) with automated audit trails.
Anti-Accident Protection Emergency termination requires double-confirmation modals and automatically checks if the targeted session is an internal system process (`pmon`, `smon`, `walwriter`), preventing accidental database crashes.

06 Forensic Audit Log Explorer

The Audit Log Explorer (`audit-logs.html`) is the primary investigation interface for security analysts, incident responders, and compliance auditors.

Forensic Audit Log Explorer Interface
Figure 6.1 — Forensic Audit Log Explorer & Search Engine
Audit event inspection showing SQL text, execution timestamp, authenticated DB user, client IP address, and status codes. Click to expand
Filter Column Description Example Query Filters
Source Database Specific instance collector ID ORC_FINANCE_PROD, PG_CUSTOMER_PORTAL
Action / Command Normalized SQL operation type SELECT, DROP TABLE, CREATE USER, GRANT
Client IP Address Originating IPv4 or IPv6 network address 10.20.10.14, 192.168.1.105
DB Username Database identity authenticated on engine SYSTEM, app_payment_svc, reporting_ro
Return Code Engine return code (0 = success, non-zero = error) ORA-00942 (Table not found), ORA-01017 (Invalid credentials)

Tamper-Proof Export & Forensic Watermarking

Audit logs can be exported directly to cryptographically signed CSV or PDF formats. Each exported batch generates an audit receipt containing the SHA-256 hash of the dataset, ensuring non-repudiation during formal legal or regulatory inquiries.

07 Intelligent Alerting & Deduplication

To eliminate the debilitating "alert fatigue" common in large database deployments, SWOT DAM runs an in-memory Deduplication & Correlation Pipeline before publishing notifications.

Intelligent Security Alert Stream
Figure 7.1 — Security Incident & Threat Alert Stream
Security incident queue classifying critical schema modifications, suspicious privilege grants, and brute force logins. Click to expand
Rule Trigger 01

Unauthorized Schema Alteration

Fires immediately when DDL commands (`DROP`, `TRUNCATE`, `ALTER`) execute against production schemas during non-maintenance windows.

Rule Trigger 02

Privilege Escalation Events

Detects when accounts grant superuser roles (`GRANT DBA`, `SUPERUSER`, `sysadmin`) or alter security policies.

Rule Trigger 03

Brute-Force Authentication

Flags instances where >5 failed authentication attempts occur within 60 seconds from an identical IP or username.

Rule Trigger 04

Massive Data Exfiltration

Triggers when a single query reads or exports >50,000 rows on tables flagged as containing sensitive PII or Financial data.

08 Sensitive Data & Metadata Sentinel

The Data Sentinel module (`metadata.html`) scans the metadata catalog of every monitored database to identify and catalog sensitive columns across four critical classifications:

  • PII (Personally Identifiable Information): `SSN`, `NATIONAL_ID`, `PASSPORT`, `FIRST_NAME`, `LAST_NAME`, `PHONE_NUMBER`.
  • Financial & Payment Cards: `CREDIT_CARD_NUM`, `CVV`, `EXPIRY_DATE`, `BANK_IBAN`, `ROUTING_NUMBER`.
  • Protected Health Information (PHI): `DIAGNOSIS_CODE`, `PATIENT_MRN`, `PRESCRIPTION_RX`, `BLOOD_TYPE`.
  • Authentication & Cryptographic Secrets: `PASSWORD_HASH`, `API_TOKEN`, `SECRET_KEY`, `AUTH_SALT`.
Sensitive Data Sentinel and Metadata Map
Figure 8.1 — Sensitive Data Discovery & Metadata Catalog
Catalog scanner detailing discovered tables, classified column types (Financial, PII, PHI), and relationship maps. Click to expand

Intelligent LLM Classification Flow

Every 24 hours, the background scheduler gathers newly created table and column definitions and queries the configured AI provider (`gpt-4o-mini`, Azure OpenAI, or local Ollama) using strict JSON structured outputs:

// JSON Response Schema returned by LLM Discovery Engine
{
  "table_name": "CUSTOMER_BILLING_LEDGER",
  "sensitive_columns": [
    {
      "column_name": "CARD_PRIMARY_NUM",
      "classification": "FINANCIAL",
      "confidence": 0.99,
      "regulatory_framework": ["PCI-DSS-4.0", "GDPR-Art32"]
    },
    {
      "column_name": "CLIENT_EMAIL_ADDR",
      "classification": "PII",
      "confidence": 0.95,
      "regulatory_framework": ["GDPR-Art6", "DPDP-2023"]
    }
  ]
}

09 Behavioral Analytics & Anomaly Radar

The Behavioral Analytics module (`behavior.html`) evaluates how identities interact with the database over time. Instead of relying on static signature rules, it computes a dynamic risk score between 0 and 100 based on statistical deviations from a 30-day rolling baseline.

Behavioral Risk Radar and Anomaly Timeline
Figure 9.1 — Behavioral Risk Radar & Identity Baseline Scorecards
Behavioral anomaly engine tracking user access patterns, working hours baselines, and risk score progression. Click to expand

Temporal Deviations

Flags accounts executing administrative queries outside normal operating hours (e.g. batch ETL service accounts querying at 3:00 AM on Sunday).

Source IP Geolocation / Subnet Drift

Identifies when a DBA identity normally connecting from the internal corporate VPN (`10.20.0.0/16`) suddenly authenticates from an unapproved public IP address.

Velocity & Volume Spikes

Detects automated scripts or ransomware attempts reading table catalogs at an abnormally high frequency (>50 queries per second).

10 AI Threat Insights & Autonomous Remediation

The AI Threat Insights module (`ai-insights.html`) transforms cryptic database logs into human-readable incident explanations and provides DBA-grade remediation scripts.

AI Threat Insights and Root Cause Analysis
Figure 10.1 — AI Threat Insights & Autonomous Remediation Playbooks
Natural language incident synthesis detailing root cause, severity justification, and copyable mitigation scripts. Click to expand
Autonomous Incident Synthesis "User reporting_app executed SELECT * FROM HR_SALARY_DATA from unapproved workstation 192.168.10.45. This query accessed 14,200 salary records, which deviates by +480% from this user's 30-day baseline."

One-Click Remediation Playbooks

For each detected incident, SWOT DAM prepares instant mitigation SQL commands ready to copy or dispatch:

  • Revoke Dangerous Role: REVOKE DBA FROM compromised_user;
  • Lock Account: ALTER USER compromised_user ACCOUNT LOCK; (Oracle) / ALTER ROLE compromised_user NOLOGIN; (Postgres)
  • Kill Active Sessions: Terminates all active connections associated with the suspicious IP address.

11 Database Security Posture Management (DSPM)

The Security Posture module (`posture.html`) continuously audits database configurations against the Center for Internet Security (CIS) benchmarks.

Database Security Posture Management Scorecard
Figure 11.1 — Database Security Posture Management (DSPM) Scorecard
Overall security posture index (84/100), configuration drift alerts, encryption status, and privilege sprawl ratings. Click to expand
Benchmark Control CIS Benchmark ID Assessment Logic Severity
Default Passwords CIS Oracle 1.1 / CIS PG 1.2 Checks for unexpired default passwords (`SCOTT/TIGER`, `postgres/postgres`, `sa/password`). Critical
Transparent Data Encryption CIS Oracle 3.1 / MSSQL 2.1 Verifies encryption status of database tablespaces and WAL/transaction log files at rest. High
Excessive DBA Privileges CIS PG 2.3 / CIS MySQL 2.1 Flags application accounts granted superuser privileges instead of least-privilege roles. High
Remote Listener Security CIS Oracle 2.1 / CIS PG 1.4 Ensures TLS 1.3 encryption is enforced on listener ports and unencrypted cleartext access is blocked. Passed

12 Regulatory Compliance Frameworks

The Compliance modules (`compliance.html` & `frameworks.html`) map all database activity logs and configuration benchmarks directly to international compliance mandates:

Regulatory Compliance Frameworks Mapping
Figure 12.1 — Regulatory Frameworks Cockpit (PCI-DSS, HIPAA, SOX, GDPR)
Automated compliance evidence generator mapping database controls directly to PCI-DSS 4.0, HIPAA, and SOX 404 mandates. Click to expand
Payment Security

PCI-DSS 4.0

Enforces Requirements 10.2 and 10.3: Complete, tamper-evident audit trails for all actions taken by administrative users on cardholder databases.

Healthcare Protection

HIPAA Security Rule

Satisfies 45 CFR § 164.312(b): Audit controls recording all read, write, and deletion events across electronic Protected Health Information (ePHI).

Financial Reporting

SOX Section 404

Ensures the integrity of financial reporting systems by flagging any unauthorized schema changes (`DDL`) or manual updates to general ledger tables.

Data Privacy

GDPR & India DPDP Act

Fulfills GDPR Article 32 and DPDP Act 2023 mandates by logging processing activities and providing automated data breach notification timelines.

13 Database Collector Configuration Guides

SWOT DAM connects to target databases using native read-only collector credentials. Use the tabs below to view setup SQL scripts for your database engine:

Database Fleet Registry and Collectors
Figure 13.1 — Database Fleet Registry & Health Watermarks
Database registry dashboard tracking Oracle, PostgreSQL, MSSQL, and MySQL instances, polling intervals, and active connections. Click to expand
-- ============================================================================
-- Oracle 19c/21c/23c Unified Audit Setup for SWOT DAM Collector
-- ============================================================================

-- 1. Create Dedicated Read-Only Collector User
CREATE USER c##swot_dam_collector IDENTIFIED BY "StrongSecretPassword#2026";
GRANT CREATE SESSION TO c##swot_dam_collector;

-- 2. Grant Read-Only Privileges on Unified Audit Trail & Catalog Views
GRANT AUDIT_VIEWER TO c##swot_dam_collector;
GRANT SELECT ON AUDSYS.UNIFIED_AUDIT_TRAIL TO c##swot_dam_collector;
GRANT SELECT ON SYS.DBA_TAB_COLUMNS TO c##swot_dam_collector;
GRANT SELECT ON SYS.V_$SESSION TO c##swot_dam_collector;

-- 3. Define and Enable Enterprise Audit Policy
CREATE AUDIT POLICY swot_security_policy
  ACTIONS
    LOGON, LOGOFF, DROP TABLE, ALTER TABLE, CREATE USER, DROP USER, GRANT, REVOKE;

AUDIT POLICY swot_security_policy;
-- ============================================================================
-- PostgreSQL 14/15/16 pgAudit Setup for SWOT DAM Collector
-- ============================================================================

-- 1. Configure postgresql.conf Parameters
-- shared_preload_libraries = 'pgaudit'
-- pgaudit.log = 'ddl, write, role, privilege'
-- pgaudit.log_catalog = off

-- 2. Create Database User for SWOT Collector
CREATE ROLE swot_collector WITH LOGIN PASSWORD 'StrongPgPass#2026';

-- 3. Grant Permissions to Read pg_stat_activity & pgAudit Logs
GRANT pg_read_all_stats TO swot_collector;
GRANT pg_monitor TO swot_collector;
GRANT USAGE ON SCHEMA public TO swot_collector;
-- ============================================================================
-- Microsoft SQL Server 2017/2019/2022 Server Audit Setup
-- ============================================================================

-- 1. Create Server Audit Writing to Secure Audit Files
CREATE SERVER AUDIT [SWOT_Server_Audit]
TO FILE (FILEPATH = 'C:\MSSQL\AuditLogs\', MAXSIZE = 100 MB, MAX_FILES = 50)
WITH (ON_FAILURE = CONTINUE);
ALTER SERVER AUDIT [SWOT_Server_Audit] WITH (STATE = ON);

-- 2. Create Audit Specification for Critical DDL and Security Events
CREATE SERVER AUDIT SPECIFICATION [SWOT_Audit_Spec]
FOR SERVER AUDIT [SWOT_Server_Audit]
ADD (FAILED_LOGIN_GROUP),
ADD (SERVER_ROLE_MEMBER_CHANGE_GROUP),
ADD (DATABASE_OBJECT_CHANGE_GROUP);
ALTER SERVER AUDIT SPECIFICATION [SWOT_Audit_Spec] WITH (STATE = ON);

-- 3. Grant View Server State to Collector User
CREATE LOGIN [swot_collector] WITH PASSWORD = 'StrongMssqlPass#2026';
GRANT VIEW SERVER STATE TO [swot_collector];
-- ============================================================================
-- MySQL 8.0 & MariaDB Enterprise Audit Plugin Setup
-- ============================================================================

-- 1. Install Audit Plugin (in my.cnf or via SQL)
INSTALL PLUGIN server_audit SONAME 'server_audit.so';
SET GLOBAL server_audit_events = 'CONNECT,QUERY,TABLE';
SET GLOBAL server_audit_logging = ON;

-- 2. Create Collector User with Least Privilege
CREATE USER 'swot_collector'@'%' IDENTIFIED BY 'StrongMySqlPass#2026';
GRANT PROCESS, SELECT ON performance_schema.* TO 'swot_collector'@'%';
GRANT SELECT ON mysql.* TO 'swot_collector'@'%';
# AWS RDS / Aurora CloudWatch Collector Ingestion Configuration
cloud_collector:
  provider: "aws-rds"
  engine: "aurora-postgresql"
  log_group: "/aws/rds/instance/prod-db-aurora/postgresql"
  auth_mechanism: "IAM_ROLE"
  role_arn: "arn:aws:iam::123456789012:role/SWOT_DAM_CloudWatch_Reader"
  polling_interval_seconds: 30
  batch_size: 5000
Cloud & Agentless Databases Overview
Figure 13.2 — Cloud Databases & Agentless Ingestion Streams
Managed Cloud DB connectors for Amazon RDS, AWS Aurora, Azure SQL, and Google Cloud SQL via native log streams. Click to expand

14 Fleet Administration & Enterprise SSO

Administrative workflows in SWOT DAM (`admin.html` and `settings.html`) provide multi-tenant isolation, background job diagnostics, and enterprise directory integrations.

Identity & Role-Based Access Control Administration
Figure 14.1 — Multi-Tenant RBAC & Collector Group Assignments
Role-based access control interface mapping security teams to specific database collector groups and organizational boundaries. Click to expand

Multi-Tenancy & RBAC Roles

  • Admin: Full platform control, collector lifecycle management, user management, and global security tuning.
  • Security Officer: Full audit log inspection, behavioral radar analysis, and alert incident triage.
  • Compliance Auditor: Read-only access to CIS benchmarks, compliance scorecards, and signed export binders.
  • Read-Only Operator: Real-time telemetry monitoring deck view without access to SQL query text or user identities.
Background Scheduler Diagnostics & ThreadPool
Figure 14.2 — APScheduler Worker Diagnostics & ThreadPool Utilization
Diagnostics dashboard showing active scheduler threads, collector polling frequencies, lag metrics, and error retries. Click to expand

Enterprise SSO (SAML 2.0 & OIDC)

SWOT DAM integrates with enterprise Identity Providers including Microsoft Entra ID (Azure AD), Okta, PingIdentity, and Keycloak:

  • SAML 2.0 SP-Initiated Flow: Redirects to IdP with signed AuthnRequests; validates SAML assertions using IdP X.509 certificates.
  • OpenID Connect (OIDC): Authorization Code flow with PKCE, auto-provisioning user accounts and syncing security groups.
Enterprise Settings, SSO, and Forwarders
Figure 14.3 — Enterprise Settings, SSO & SIEM Configuration
Settings configuration interface for external SSO identity providers, SMTP email alerts, AI API keys, and SIEM forwarders. Click to expand

SIEM & Webhook Forwarders

Normalized audit records and alerts can be forwarded in real time to corporate SIEM systems:

  • Splunk HEC: Token-authenticated JSON event forwarder with customizable source types.
  • IBM QRadar / ArcSight: Standard Common Event Format (CEF) over Syslog (TCP/TLS).
  • ITSM Ticketing: Instant incident creation via Webhook for ServiceNow, Jira Service Desk, and PagerDuty.

15 Deployment & Production Runbooks

SWOT DAM can be deployed either as containerized Docker microservices or as a native Windows service using the PyInstaller + WinSW wrapper.

Production Hardware Sizing Guidelines

Deployment Tier Monitored Databases Event Throughput Recommended Hardware
Small / PoC 1 – 5 DB Instances Up to 5,000 events / min 4 vCPU, 8 GB RAM, 100 GB NVMe Storage
Enterprise Medium 5 – 25 DB Instances Up to 25,000 events / min 8 vCPU, 16 GB RAM, 500 GB NVMe Storage
Enterprise High-Volume 25 – 100+ DB Instances 100,000+ events / min 16 vCPU, 32 GB RAM, 2 TB NVMe RAID-10

Docker Compose Production Deployment

# Complete Production docker-compose.yml for SWOT DAM
version: '3.8'

services:
  swot-backend:
    image: rudratic/swot-dam-backend:latest
    container_name: swot-dam-backend
    restart: always
    environment:
      - DATABASE_URL=postgresql://swot_admin:SecretPass@postgres-meta:5432/swot_dam_meta
      - SESSION_SECRET=c28f9d0e8a7146b38c201a4e9b7f6d5c
      - FERNET_SECRET_KEY=bW9ja19mZXJuZXRfa2V5XzMyX2NoYXJzXzEyMzQ1Njc4OTA=
      - SCHEDULER_THREAD_POOL_SIZE=20
    ports:
      - "8000:8000"
    depends_on:
      - postgres-meta

  swot-frontend:
    image: rudratic/swot-dam-frontend:latest
    container_name: swot-dam-frontend
    restart: always
    ports:
      - "80:80"
    depends_on:
      - swot-backend

  postgres-meta:
    image: postgres:15-alpine
    container_name: swot-dam-postgres-meta
    restart: always
    environment:
      - POSTGRES_USER=swot_admin
      - POSTGRES_PASSWORD=SecretPass
      - POSTGRES_DB=swot_dam_meta
    volumes:
      - swot_meta_data:/var/lib/postgresql/data

volumes:
  swot_meta_data:

Windows WinSW Native Service Deployment

For air-gapped enterprise environments running Windows Server 2019/2022, SWOT DAM is packaged as a standalone native service managed by WinSW.exe:

:: Run as Administrator in C:\SWOT-DAM\service
cd C:\SWOT-DAM\service
SWOT_DAM_Service.exe install
SWOT_DAM_Service.exe start
SWOT_DAM_Service.exe status

:: Auto-restart configuration inside SWOT_DAM_Service.xml
:: <onfailure action="restart" delay="10 sec"/>