diff --git a/.env.production.template b/.env.production.template
index 9243985..db03b25 100644
--- a/.env.production.template
+++ b/.env.production.template
@@ -17,6 +17,10 @@ BTCPAY_WEBHOOK_SECRET=your-webhook-secret
# LOG_LEVEL=Information
# LOG_RETENTION_DAYS=30
+# TeleBot Integration (for customer order notifications)
+TELEBOT_API_URL=https://your-telebot-instance.com
+TELEBOT_API_KEY=your-telebot-api-key
+
# Optional: Application Configuration
# ASPNETCORE_ENVIRONMENT=Production
# ALLOWED_HOSTS=littleshop.silverlabs.uk
\ No newline at end of file
diff --git a/.env.template b/.env.template
new file mode 100644
index 0000000..db03b25
--- /dev/null
+++ b/.env.template
@@ -0,0 +1,26 @@
+# Production Environment Configuration
+# Copy this file to .env and fill in the actual values
+
+# JWT Configuration
+JWT_SECRET_KEY=your-super-secret-jwt-key-that-is-at-least-32-characters-long
+
+# BTCPay Server Configuration
+BTCPAY_SERVER_URL=https://your-btcpay-server.com
+BTCPAY_STORE_ID=your-store-id
+BTCPAY_API_KEY=your-api-key
+BTCPAY_WEBHOOK_SECRET=your-webhook-secret
+
+# Optional: Database Connection (defaults to SQLite in container)
+# CONNECTION_STRING=Data Source=/app/data/littleshop.db
+
+# Optional: Logging Configuration
+# LOG_LEVEL=Information
+# LOG_RETENTION_DAYS=30
+
+# TeleBot Integration (for customer order notifications)
+TELEBOT_API_URL=https://your-telebot-instance.com
+TELEBOT_API_KEY=your-telebot-api-key
+
+# Optional: Application Configuration
+# ASPNETCORE_ENVIRONMENT=Production
+# ALLOWED_HOSTS=littleshop.silverlabs.uk
\ No newline at end of file
diff --git a/Dockerfile.deploy b/Dockerfile.deploy
new file mode 100644
index 0000000..9deb8f8
--- /dev/null
+++ b/Dockerfile.deploy
@@ -0,0 +1,81 @@
+# Use the official ASP.NET Core runtime image (optimized)
+FROM mcr.microsoft.com/dotnet/aspnet:9.0-jammy-chiseled AS base
+WORKDIR /app
+EXPOSE 8080
+
+# Create non-root user for security
+USER $APP_UID
+
+# Use the SDK image for building
+FROM mcr.microsoft.com/dotnet/sdk:9.0-jammy AS build
+WORKDIR /src
+
+# Copy project files first for better layer caching
+COPY ["LittleShop/LittleShop.csproj", "LittleShop/"]
+COPY ["LittleShop.Client/LittleShop.Client.csproj", "LittleShop.Client/"]
+
+# Restore packages in a separate layer
+RUN dotnet restore "LittleShop/LittleShop.csproj" \
+ --runtime linux-x64 \
+ --no-cache \
+ --verbosity minimal
+
+# Copy source code
+COPY LittleShop/ LittleShop/
+COPY LittleShop.Client/ LittleShop.Client/
+WORKDIR "/src/LittleShop"
+
+# Build with optimizations
+RUN dotnet build "LittleShop.csproj" \
+ -c Release \
+ -o /app/build \
+ --no-restore \
+ --verbosity minimal
+
+# Publish stage with optimizations
+FROM build AS publish
+RUN dotnet publish "LittleShop.csproj" \
+ -c Release \
+ -o /app/publish \
+ --no-restore \
+ --no-build \
+ --runtime linux-x64 \
+ --self-contained false \
+ /p:PublishTrimmed=false \
+ /p:PublishSingleFile=false \
+ /p:DebugType=None \
+ /p:DebugSymbols=false
+
+# Final optimized stage
+FROM base AS final
+WORKDIR /app
+
+# Switch to root to create directories and set permissions
+USER root
+
+# Create directories with proper ownership
+RUN mkdir -p /app/wwwroot/uploads/products \
+ && mkdir -p /app/data \
+ && mkdir -p /app/logs \
+ && chown -R $APP_UID:$APP_UID /app \
+ && chmod -R 755 /app/wwwroot/uploads \
+ && chmod -R 755 /app/data \
+ && chmod -R 755 /app/logs
+
+# Copy published app
+COPY --from=publish --chown=$APP_UID:$APP_UID /app/publish .
+
+# Switch back to non-root user
+USER $APP_UID
+
+# Health check
+HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
+ CMD curl -f http://localhost:8080/health || exit 1
+
+# Optimize runtime
+ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 \
+ DOTNET_RUNNING_IN_CONTAINER=true \
+ DOTNET_USE_POLLING_FILE_WATCHER=true \
+ ASPNETCORE_FORWARDEDHEADERS_ENABLED=true
+
+ENTRYPOINT ["dotnet", "LittleShop.dll"]
\ No newline at end of file
diff --git a/LittleShop/Areas/Admin/Controllers/BotRecoveryController.cs b/LittleShop/Areas/Admin/Controllers/BotRecoveryController.cs
index 07a132d..119356b 100644
--- a/LittleShop/Areas/Admin/Controllers/BotRecoveryController.cs
+++ b/LittleShop/Areas/Admin/Controllers/BotRecoveryController.cs
@@ -80,7 +80,7 @@ public class BotRecoveryController : Controller
}
// Update bot statuses
- await _botService.UpdateBotStatusAsync(fromBotId, Enums.BotStatus.Retired);
+ await _botService.UpdateBotStatusAsync(fromBotId, Enums.BotStatus.Deleted);
TempData["Success"] = $"Successfully migrated contacts from bot {fromBotId} to {toBotId}";
return RedirectToAction(nameof(Index));
diff --git a/LittleShop/Areas/Admin/Views/Shared/_Layout.cshtml b/LittleShop/Areas/Admin/Views/Shared/_Layout.cshtml
index 54a78f6..33e3ca7 100644
--- a/LittleShop/Areas/Admin/Views/Shared/_Layout.cshtml
+++ b/LittleShop/Areas/Admin/Views/Shared/_Layout.cshtml
@@ -122,6 +122,7 @@
+
@await RenderSectionAsync("Scripts", required: false)