diff --git a/windows-installer.ps1 b/windows-installer.ps1
new file mode 100644
index 0000000..714615a
--- /dev/null
+++ b/windows-installer.ps1
@@ -0,0 +1,141 @@
+$ErrorActionPreference = "Stop"
+
+# Step 1: Ensure WSL is installed
+Write-Host "Checking for WSL installation..."
+try {
+    wsl --list | Out-Null
+    Write-Host "WSL is already installed."
+} catch {
+    Write-Host "WSL is not installed. Checking system compatibility..."
+    
+    # Check if the system supports virtualization
+    $virtSupport = Get-WmiObject -Class Win32_Processor | Select-Object -ExpandProperty VirtualizationFirmwareEnabled
+    if (-not $virtSupport) {
+        Write-Host "System does not support virtualization. WSL cannot be installed. Exiting."
+        pause
+        exit
+    }
+    
+    # Install WSL
+    Write-Host "Installing WSL..."
+    wsl --install
+    Write-Host "WSL installation completed. Please restart your system and rerun the script."
+    pause
+    exit
+}
+
+# Step 2: Ensure Windows Package Manager (winget) is available
+Write-Host "Checking for Windows Package Manager (winget)..."
+if (!(Get-Command "winget" -ErrorAction SilentlyContinue)) {
+    Write-Host "Windows Package Manager (winget) is not available. Please update your system to Windows 10 (2004) or later."
+    pause
+    exit
+} else {
+    Write-Host "Windows Package Manager (winget) is available."
+}
+
+# Step 3: Install Docker Desktop using winget
+Write-Host "Checking for Docker Desktop installation..."
+if (!(Get-Command "docker" -ErrorAction SilentlyContinue)) {
+    Write-Host "Docker Desktop is not installed. Installing Docker Desktop via winget..."
+
+    $wingetProcess = Start-Process -FilePath "winget" -ArgumentList "install -e --id Docker.DockerDesktop --accept-source-agreements --accept-package-agreements" -NoNewWindow -PassThru -Wait
+
+    if ($wingetProcess.ExitCode -eq 0) {
+        Write-Host "Docker Desktop installation completed successfully."
+    } else {
+        Write-Host "Docker Desktop installation failed or requires manual steps. Exit code: $($wingetProcess.ExitCode)"
+        pause
+        exit
+    }
+} else {
+    Write-Host "Docker Desktop is already installed."
+}
+
+# Step 4: Ensure Docker Desktop is running
+Write-Host "Ensuring Docker Desktop is running..."
+$dockerDesktopPath = "$env:ProgramFiles\Docker\Docker\Docker Desktop.exe"
+if (!(Get-Process "Docker Desktop" -ErrorAction SilentlyContinue)) {
+    if (Test-Path $dockerDesktopPath) {
+        Start-Process -FilePath $dockerDesktopPath
+        Write-Host "Starting Docker Desktop..."
+    } else {
+        Write-Host "Docker Desktop executable not found. Please start it manually."
+        pause
+        exit
+    }
+} else {
+    Write-Host "Docker Desktop is already running."
+}
+
+# Step 5: Wait for Docker Daemon to be ready
+Write-Host "Checking for Docker Daemon availability..."
+$maxRetries = 30  
+$retryInterval = 10  
+$attempt = 0
+$dockerReady = $false
+
+while ($attempt -lt $maxRetries -and -not $dockerReady) {
+    try {
+        # Check if 'docker' command is available
+        if (!(Get-Command "docker" -ErrorAction SilentlyContinue)) {
+            Write-Host "Docker CLI is not available in PATH. Retrying in $retryInterval seconds... (Attempt $($attempt + 1) of $maxRetries)"
+            $env:PATH = [System.Environment]::GetEnvironmentVariable("PATH", "Machine")
+            Start-Sleep -Seconds $retryInterval
+            $attempt++
+            continue
+        }
+
+        docker version | Out-Null
+        $exitCode = $LASTEXITCODE
+
+        if ($exitCode -eq 0) {
+            $dockerReady = $true
+            Write-Host "Docker Daemon is ready."
+        } else {
+            Write-Host "Docker Daemon is not ready yet. Retrying in $retryInterval seconds... (Attempt $($attempt + 1) of $maxRetries)"
+            Start-Sleep -Seconds $retryInterval
+            $attempt++
+        }
+    } catch {
+        Start-Sleep -Seconds $retryInterval
+        $attempt++
+    }
+}
+
+if (-not $dockerReady) {
+    Write-Host "Docker Daemon did not become ready within the expected time. Please check Docker Desktop and try again."
+    pause
+    exit
+}
+
+
+# Step 6: Run docker-compose to deploy the cluster
+Write-Host "Starting the Docker cluster using docker-compose..."
+$composeFile = ".\docker-compose.yml"
+
+if (!(Test-Path $composeFile)) {
+    Write-Host "docker-compose.yml file not found in the current directory. Please create it and try again."
+    pause
+    exit
+}
+
+try {
+    docker-compose up -d
+    Write-Host "Docker cluster started successfully."
+} catch {
+    Write-Host "Failed to start the cluster. Error: $_"
+    pause
+    exit
+}
+
+# Step 7: Verify the deployment
+Write-Host "Verifying the cluster deployment..."
+$runningContainers = docker ps
+if ($runningContainers -match "cloudbeaver") {
+    Write-Host "Cluster is running successfully!"
+    docker-compose logs -f
+} else {
+    Write-Host "Cluster deployment might have issues. Check the logs:"
+    docker-compose logs
+}