diff --git a/app/docs/[[...slug]]/page.tsx b/app/[[...slug]]/page.tsx
similarity index 78%
rename from app/docs/[[...slug]]/page.tsx
rename to app/[[...slug]]/page.tsx
index e59fd03..94cd965 100644
--- a/app/docs/[[...slug]]/page.tsx
+++ b/app/[[...slug]]/page.tsx
@@ -1,12 +1,13 @@
import type { Metadata } from 'next';
+import { DocsLayout } from 'fumadocs-ui/layouts/docs';
import { DocsPage, DocsBody } from 'fumadocs-ui/page';
import { notFound } from 'next/navigation';
import { source } from '@/lib/source';
import { generatePageMetadata, getCanonicalUrl } from '@/lib/seo-utils';
-import { CustomNavbar } from '@/lib/components/CustomNavbar';
import { getFinalPageTitle } from '@/lib/h1-extractor';
import { readFile } from 'fs/promises';
import { getMDXComponents } from '@/mdx-components';
+import { baseOptions } from '../layout.config';
export default async function Page({
params,
@@ -23,12 +24,23 @@ export default async function Page({
const MDX = page.data.body;
return (
-
-
-
-
-
-
+
+
+
+
+
+
+
);
}
diff --git a/app/docs/layout.tsx b/app/docs/layout.tsx
deleted file mode 100644
index 818838e..0000000
--- a/app/docs/layout.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import { DocsLayout } from 'fumadocs-ui/layouts/docs';
-import type { ReactNode } from 'react';
-import { baseOptions } from '../layout.config';
-import { source } from '../../lib/source';
-
-export default function Layout({ children }: { children: ReactNode }) {
- return (
-
- {children}
-
- );
-}
diff --git a/app/docs/sitemap.xml/route.ts b/app/docs/sitemap.xml/route.ts
deleted file mode 100644
index 25f1e6e..0000000
--- a/app/docs/sitemap.xml/route.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import { source } from '@/lib/source';
-import { getCanonicalUrl } from '@/lib/seo-utils';
-
-export const dynamic = 'force-static';
-export const revalidate = false;
-
-export async function GET() {
- const pages = source.getPages();
-
- const sitemap = `
-
-${pages
- .map((page) => {
- const url = getCanonicalUrl(page.url);
- return `
- ${url}
- ${new Date().toISOString()}
- weekly
- 0.8
- `;
- })
- .join('\n')}
-`;
-
- return new Response(sitemap, {
- headers: {
- 'Content-Type': 'application/xml',
- },
- });
-}
diff --git a/app/layout.config.tsx b/app/layout.config.tsx
index 150504f..6a092c4 100644
--- a/app/layout.config.tsx
+++ b/app/layout.config.tsx
@@ -1,10 +1,10 @@
import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared';
export const baseOptions: BaseLayoutProps = {
- // Navigation bar configuration (now handled by CustomNavbar)
+ // Navigation bar configuration
nav: {
title: 'DeployStack Docs',
- url: '/docs',
+ url: '/',
},
// GitHub repository for edit links
diff --git a/check-links.js b/check-links.js
index 914131f..6d9d8fe 100644
--- a/check-links.js
+++ b/check-links.js
@@ -25,19 +25,35 @@ const extractLinks = (content) => {
// Check if a local file exists
const checkLocalFile = (linkPath, filePath) => {
- if (linkPath.startsWith('/docs/')) {
+ // Check for internal links (starting with / but not external URLs)
+ if (linkPath.startsWith('/') && !linkPath.startsWith('//') && !linkPath.startsWith('http')) {
// Remove hash fragment before checking file existence
const [baseUrl] = linkPath.split('#');
- const localPath = path.join(process.cwd(), baseUrl);
- try {
- fs.accessSync(localPath, fs.constants.F_OK);
- console.log(` ✅ ${linkPath}`);
- return true;
- } catch (err) {
- console.log(` ❌ ${linkPath} → File not found`);
- return false;
+ // Map the URL to the actual file location
+ // Since our URLs are now root-level but files are in docs/
+ const actualFilePath = path.join(process.cwd(), 'docs', baseUrl.substring(1));
+
+ // Try both .mdx and .md extensions
+ const possiblePaths = [
+ actualFilePath + '.mdx',
+ actualFilePath + '.md',
+ path.join(actualFilePath, 'index.mdx'),
+ path.join(actualFilePath, 'index.md')
+ ];
+
+ for (const possiblePath of possiblePaths) {
+ try {
+ fs.accessSync(possiblePath, fs.constants.F_OK);
+ console.log(` ✅ ${linkPath}`);
+ return true;
+ } catch (err) {
+ // Continue to next possible path
+ }
}
+
+ console.log(` ❌ ${linkPath} → File not found (checked: ${possiblePaths.map(p => path.relative(process.cwd(), p)).join(', ')})`);
+ return false;
}
return null; // not a local file
};
@@ -79,7 +95,8 @@ const processFile = async (filePath) => {
let allValid = true;
for (const link of links) {
- if (link.url.startsWith('/docs/')) {
+ if (link.url.startsWith('/') && !link.url.startsWith('//') && !link.url.startsWith('http')) {
+ // Internal link (root-level)
const isValid = checkLocalFile(link.url, filePath);
if (!isValid) allValid = false;
} else if (link.url.startsWith('http')) {
@@ -109,7 +126,7 @@ const processDirectory = async (dir) => {
if (stat.isDirectory()) {
const isValid = await processDirectory(filePath);
if (!isValid) allValid = false;
- } else if (file.endsWith('.md')) {
+ } else if (file.endsWith('.md') || file.endsWith('.mdx')) {
const isValid = await processFile(filePath);
if (!isValid) allValid = false;
}
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/application-logo-configuration.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/application-logo-configuration.mdx
new file mode 100644
index 0000000..5535809
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/application-logo-configuration.mdx
@@ -0,0 +1,60 @@
+---
+title: Application Logo Configuration
+description: DeployStack logo configuration guide. Add a custom logo to your application with automatic WebP conversion, CDN delivery, and square format optimization.
+---
+
+# Application Logo Configuration
+
+Add a custom logo to make your application stand out in the DeployStack catalog. Your logo will be automatically optimized and served through our CDN for the best performance.
+
+## Adding Your Logo
+
+Configure your logo in `.deploystack/config.yml` - [DeployStack Configuration File Reference](/docs/deploystack/deploystack-config-file):
+
+```yaml
+application:
+ logo: "https://example.com/path/to/logo.png"
+```
+
+## Logo Requirements
+
+### Supported Formats
+
+- PNG (`.png`)
+- JPEG (`.jpg`, `.jpeg`)
+- WebP (`.webp`)
+- SVG (`.svg`)
+
+### Size Guidelines
+
+- Maximum input: 2 MB.
+- Final output will be:
+ - Square format (1:1 aspect ratio)
+ - Maximum 500x500 pixels
+- Input images will be:
+ - Resized if larger than 500px in either dimension
+ - Centered and cropped to maintain 1:1 aspect ratio
+ - Padded with transparency if needed to achieve square format
+
+## Image Processing
+
+When you configure a logo, DeployStack automatically:
+
+1. Downloads your original image
+2. Optimizes it for web delivery
+3. Converts it to WebP format
+4. Stores it on our CDN
+5. Serves it through our global CDN network
+
+### Optimization Process
+
+- Images larger than 500px in either dimension are resized
+- Conversion to WebP for optimal compression
+- Automatic quality optimization for web delivery
+
+## Notes
+
+- The logo configuration is optional
+- You can update your logo at any time by modifying the config file
+- Logo changes are processed only when made on the default branch
+- Previous logo versions are automatically cleaned up
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/deploystack-config-file.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/deploystack-config-file.mdx
new file mode 100644
index 0000000..78d2686
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/deploystack-config-file.mdx
@@ -0,0 +1,259 @@
+---
+title: DeployStack Config File Reference
+description: Documentation for DeployStack's config.yml schema. Customize your application's presentation with automatic IDE validation and flexible repository metadata overrides.
+---
+
+# DeployStack Configuration File Reference
+
+The `.deploystack/config.yml` file allows you to customize how your application appears in the DeployStack catalog and deployment interfaces. This configuration file supports automatic validation in popular IDEs through SchemaStore integration.
+
+## Configuration File Location
+
+Create a `config.yml` file in your repository's `.deploystack` directory:
+
+```bash
+your-repository/
+├── .deploystack/
+│ ├── config.yml
+│ └── docker-compose.yml (example, or docker-run.txt)
+└── README.md
+```
+
+## Basic Configuration
+
+Here's a minimal configuration example:
+
+```yaml
+application:
+ name: "My Application"
+ description: "A scalable web application with Redis caching"
+ logo: "https://example.com/path/to/logo.png"
+```
+
+## Configuration Options
+
+### Application Settings
+
+When you submit a repository to DeployStack, we automatically use:
+
+- Repository name as the application name
+- Repository description as the application description
+
+You can override these values using the `config.yml` (only on your main branch) file:
+
+| Property | Type | Description | Constraints |
+|----------|------|-------------|-------------|
+| `mappings` | Array | Defines relationships between services for connection configuration | Required |
+| `mappings[].fromService` | String | Service that needs to connect to another service | Required |
+| `mappings[].toService` | String | Service being connected to | Required |
+| `mappings[].environmentVariables` | Array of Strings | Environment variable names that reference the target service | Required |
+| `mappings[].property` | String | Type of connection property to reference (e.g., 'connectionString', 'hostport') | Optional, defaults to 'hostport' |
+
+The override process follows this order:
+
+1. DeployStack first uses your repository name and description
+2. If present, values in `.deploystack/config.yml` override the repository metadata
+
+### Branch Deployment Settings
+
+Before configuring multiple branch deployments, ensure you have installed the [DeployStack Repository Sync GitHub App](/docs/deploystack/github-application), as it's required for branch monitoring and template updates.
+
+You can configure multiple branch deployments using the `deployment.branches` section:
+
+| Property | Type | Description | Constraints |
+|----------|------|-------------|-------------|
+| `label` | String | Display name for the branch | Maximum 20 characters |
+| `description` | String | Explain the branch's purpose or version | Maximum 100 characters |
+| `active` | Boolean | Whether this branch is available for deployment | Optional, defaults to true |
+| `priority` | Number | Order in which branches appear (lower numbers first) | Minimum value: 1 |
+| `exclude_providers` | Array | Optional list of cloud providers to exclude from template generation for this branch | Values must be valid provider codes: "aws", "rnd", "dop" |
+
+The default branch always has `priority: 0` and appears first in the deployment options, regardless of other branch priorities.
+
+Example configuration for multiple branches:
+
+```yaml
+application:
+ name: "My Application"
+ description: "A scalable web application"
+
+deployment:
+ branches:
+ v2:
+ label: "Beta (v2.x)"
+ description: "Preview of upcoming v2.x release"
+ priority: 1
+ exclude_providers:
+ - "aws" # Exclude AWS CloudFormation for this branch
+ v3:
+ label: "Alpha (v3.x)"
+ description: "Early preview of v3.x"
+ priority: 2
+```
+
+Each branch configuration allows you to:
+
+- Provide a user-friendly label for the version
+- Include a description explaining the branch's purpose
+- Control deployment availability with the `active` flag
+- Set display order using `priority`
+
+When multiple branches are configured:
+
+- DeployStack generates separate deployment templates for each branch
+- Users can choose which version to deploy
+- The GitHub App monitors all configured branches for updates
+- The default branch is always listed first with implicit `priority: 0`
+
+This is especially useful for projects that maintain multiple active versions simultaneously, such as stable and beta releases.
+
+The optional `exclude_providers` array allows you to specify which cloud providers should be excluded from template generation for particular branches. This is useful when certain features in a branch version may not be compatible with specific cloud providers. Valid provider codes are:
+
+Please check our [current supported provider list here](/docs/docker-to-iac/parser/index).
+
+For example, if your beta version uses features only supported in DigitalOcean, you might exclude the other providers:
+
+```yaml
+v2-beta:
+ label: "Beta"
+ description: "Beta version with DigitalOcean-specific features"
+ exclude_providers:
+ - "aws"
+ - "rnd"
+```
+
+If no providers are excluded, templates will be generated for all supported cloud providers.
+
+### Service Connections
+
+You can configure service-to-service communication for multi-container applications using the `serviceConnections` property within each branch configuration. This feature is particularly useful for applications where services need to communicate with each other (e.g., web apps connecting to databases).
+
+| Property | Type | Description | Constraints |
+|----------|------|-------------|-------------|
+| `mappings` | Array | Defines relationships between services for connection configuration | Required |
+| `mappings[].fromService` | String | Service that needs to connect to another service | Required |
+| `mappings[].toService` | String | Service being connected to | Required |
+| `mappings[].environmentVariables` | Array of Strings | Environment variable names that reference the target service | Required |
+
+Example configuration for service connections:
+
+```yaml
+deployment:
+ branches:
+ main:
+ label: "Production"
+ description: "Production release"
+ serviceConnections:
+ mappings:
+ - fromService: "app"
+ toService: "db"
+ environmentVariables:
+ - "DATABASE_HOST"
+ - "DATABASE_URL"
+ property: "connectionString"
+ - fromService: "frontend"
+ toService: "api"
+ environmentVariables:
+ - "API_URL"
+ property: "hostport"
+```
+
+This configuration tells DeployStack how to properly configure communication between:
+
+- The "app" service and the "db" service through the DATABASE_HOST and DATABASE_URL environment variables
+- The "frontend" service and the "api" service through the API_URL environment variable
+
+When templates are generated, DeployStack will transform these environment variables according to each cloud provider's specific service discovery mechanism:
+
+- For Render.com: Uses Blueprint's `fromService` syntax
+- For DigitalOcean App Platform: Uses direct service name references
+
+For example, if your docker-compose.yml contains:
+
+```yaml
+services:
+ app:
+ image: node:alpine
+ environment:
+ DATABASE_HOST: db
+ db:
+ image: mariadb:latest
+```
+
+The generated Render.com template would transform DATABASE_HOST to use their service discovery syntax:
+
+```yaml
+services:
+ - name: app
+ # ...other configuration...
+ envVars:
+ - key: DATABASE_HOST
+ fromService:
+ name: db
+ type: pserv
+ property: hostport
+```
+
+## Schema Validation
+
+The configuration file is automatically validated against our JSON Schema when using supported IDEs (VS Code, IntelliJ, etc.). The schema is available at:
+
+```bash
+https://cdnx.deploystack.io/schema/config.yml.json
+```
+
+## Notes
+
+- Changes to the configuration file are only processed when made on your repository's default branch
+- The logo URL must be accessible and point to a valid image file
+- All configuration properties are optional, but providing them improves your application's visibility in the DeployStack catalog
+
+## Usage Examples
+
+### Override Repository Metadata
+
+```yaml
+application:
+ name: "Redis Cache Manager" # Overrides repository name
+ description: "A more detailed description that better explains your application" # Overrides repository description
+ logo: "https://example.com/logos/redis-manager.png"
+```
+
+### Configure Multiple Branch Deployments with Service Connections
+
+```yaml
+deployment:
+ branches:
+ stable:
+ label: "Stable"
+ description: "Production-ready version"
+ priority: 1
+ serviceConnections:
+ mappings:
+ - fromService: "web"
+ toService: "api"
+ environmentVariables:
+ - "API_ENDPOINT"
+ - fromService: "api"
+ toService: "db"
+ environmentVariables:
+ - "DB_HOST"
+ - "DB_CONNECTION"
+
+ beta:
+ label: "Beta"
+ description: "Preview of upcoming features"
+ priority: 2
+ exclude_providers:
+ - "aws" # Beta version not supported on AWS
+ serviceConnections:
+ mappings:
+ - fromService: "web"
+ toService: "api"
+ environmentVariables:
+ - "API_ENDPOINT"
+```
+
+### Minimal Configuration example for logo update
+
+Please visit our [Application Logo Configuration](/docs/deploystack/application-logo-configuration) page.
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/deploystack-configuration-directory.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/deploystack-configuration-directory.mdx
new file mode 100644
index 0000000..fd13942
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/deploystack-configuration-directory.mdx
@@ -0,0 +1,71 @@
+---
+title: .deploystack Directory Reference
+description: Technical guide for setting up the .deploystack directory to manage Infrastructure as Code template generation and updates across your repository.
+---
+
+# .deploystack Directory Reference
+
+The `.deploystack` directory in your repository contains configuration files that DeployStack uses to generate and maintain your Infrastructure as Code templates. Creating this repo allows you to enable the [lifecycle of IaC](/docs/deploystack/iac-lifecycle). The deploystack configurations repo only makes sense if you also [install DeployStack GitHub app](/docs/deploystack/github-application). Otherwise, changes to DeployStack backend will not be recognized.
+
+
+`.deploystack` directory is optional. You don't need to create it to submit your repository to deploystack.io.
+
+
+## Directory Structure
+
+```bash
+.deploystack/
+├── docker-compose.yml # Docker Compose configuration
+├── docker-run.txt # Docker run command
+├── env # Environment variables (optional)
+```
+
+## Configuration Files
+
+### DeployStack Configuration File
+
+Please read more at [DeployStack Configuration File Reference](/docs/deploystack/deploystack-config-file).
+
+### Docker Configuration
+
+Choose one of the following:
+
+- `docker-compose.yml` - Standard Docker Compose configuration
+- `docker-run.txt` - Single Docker run command
+
+Example `docker-compose.yml`:
+
+```yaml
+version: '3'
+services:
+ web:
+ image: nginx:alpine
+ ports:
+ - "80:80"
+```
+
+Example `docker-run.txt`:
+
+```bash
+docker run -d -p 80:80 nginx:alpine
+```
+
+### Environment Variables
+
+Please read more from our [environment variables](/docs/deploystack/docker-environment-variables) page.
+
+## Automatic Updates
+
+When the [DeployStack GitHub App](/docs/deploystack/github-application) is installed:
+
+1. Changes to specific (`docker-compose.yml` & `docker-run.txt`) file in `.deploystack/` trigger template updates
+2. Updates only process when changes occur on the default branch
+3. New templates are generated and stored in the [deploy-templates](https://github.com/deploystackio/deploy-templates) repository
+
+## Important Notes
+
+- The `.deploystack` directory is **optional**
+- Without this directory, automatic template updates are **not** available
+- You can add the directory and install the [DeployStack GitHub Sync App](/docs/deploystack/github-application) at any time
+- [Environment variables](/docs/deploystack/docker-environment-variables) and [DeployStack config](/docs/deploystack/deploystack-config-file) are optional components
+- Only one Docker configuration file should be used (either compose or run)
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/docker-compose-requirements.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/docker-compose-requirements.mdx
new file mode 100644
index 0000000..a54cf11
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/docker-compose-requirements.mdx
@@ -0,0 +1,102 @@
+---
+title: Docker Compose Requirements
+description: Technical requirements for using Docker Compose with DeployStack's cloud deployment automation. Includes supported properties, registry options, and validation rules.
+---
+
+# Docker Compose Requirements
+
+DeployStack is designed to work with Docker Compose files that meet specific requirements. This page outlines what we support and what limitations you need to be aware of.
+
+## Core Requirements
+
+Your `docker-compose.yml` file must:
+
+1. Use pre-built Docker images
+2. Reference public images from Docker Hub or another registries -> check [Supported Registries](/docs/docker-to-iac/supported-registries)
+3. Be a valid Docker Compose file (version 3 and above)
+
+Your docker-compose file does not necessarily have to be called `docker-compose.yml` and does not have to be located in the root directory. You can rename your docker compose file and store it in any sub directory.
+
+If your docker compose file is not located in the root directory and has not `docker-compose.yml` as the filename, you must submit the full path name to us by using the submit form [deploystack.io/submit](https://deploystack.io/submit) i.e.: `https://github.com/vuejs/vitepress/tree/main/deployment/docker-compose.yaml`.
+
+## Image Requirements
+
+### Must Use Pre-built Images
+
+Your services must specify the `image` property. For example:
+
+```yaml title="docker-compose.yml"
+# ✅ Supported
+services:
+ app:
+ image: nginx:latest
+ ports:
+ - "80:80"
+```
+
+### Build Instructions Not Supported
+
+We do not support services that use the `build` directive:
+
+```yaml title="docker-compose.yml"
+# ❌ Not Supported
+services:
+ app:
+ build:
+ context: ./build/app
+ dockerfile: Dockerfile
+```
+
+## Why These Requirements?
+
+The infrastructure templates we generate require specific, immutable container images to ensure consistent deployments. Cloud providers need to know exactly which image to pull, which is why we require pre-built images.
+
+## Supported Docker Compose Properties
+
+We currently support these Docker Compose properties -> please check [Supported Docker Compose Variables](/docs/docker-to-iac/supported-docker-compose-variables).
+
+### Kubernetes/Helm
+
+When generating Helm charts for Kubernetes:
+
+- Database services (MySQL, PostgreSQL, Redis, etc.) are converted to Bitnami Helm chart dependencies
+- Environment variables are split between ConfigMaps (regular variables) and Secrets (sensitive data)
+- Each service in your Docker Compose becomes a separate Deployment and Service
+- Volume mounts are supported and configured as needed
+
+This allows for better security practices and easier management of your application on Kubernetes.
+
+## Multiple Services Support
+
+DeployStack can handle Docker Compose files with multiple services, but support varies by cloud provider:
+
+- Some providers support deploying all services at once
+- Others will only deploy the first service in your compose file
+- Kubernetes (Helm) supports multi-service deployments with each service becoming a separate Deployment
+
+Check the specific [Multi Services Support](/docs/docker-to-iac/multi-services-support) for details about multi-service support.
+
+## Working with Private Images
+
+Currently, DeployStack only supports public images from Docker Hub. If you need to use private images:
+
+1. Make your images public on Docker Hub or [other supported registries](/docs/docker-to-iac/supported-registries)
+2. Update your docker-compose.yml to reference the public images
+3. Submit your repository to DeployStack
+
+## Environment Variables
+
+Please read more from our [environment variables](/docs/deploystack/docker-environment-variables) page.
+
+## Validation
+
+When you submit your repository, we perform these checks:
+
+1. Valid Docker Compose syntax
+2. Presence of required `image` property
+3. Absence of unsupported features
+
+## Next Steps
+
+- See how [One-Click Deploy](/docs/deploystack/one-click-deploy) works
+- Check the [Troubleshooting](/docs/deploystack/troubleshooting) guide if you run into issues
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/getting-started.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/getting-started.mdx
new file mode 100644
index 0000000..19d10f4
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/getting-started.mdx
@@ -0,0 +1,194 @@
+---
+title: Getting Started with DeployStack
+description: Start deploying Docker applications across cloud providers with DeployStack. Step-by-step guide to generating infrastructure templates from Docker configurations.
+---
+
+# Getting Started with DeployStack
+
+DeployStack offers two distinct paths to transform your Docker projects into cloud-ready deployments: a Quick Start path for immediate results, and our Recommended path for enhanced control and automation. Let's explore both approaches in detail.
+
+## Understanding the Two Paths
+
+### 🚀 Quick Start Path
+
+The Quick Start path is designed for developers who want to immediately make their Docker projects deployable, with minimal setup required. This approach works with your existing repository structure.
+
+### Recommended Path
+
+The Recommended path provides additional features through a `.deploystack` configuration directory and GitHub app integration. This approach enables automatic updates, environment variable management, and project customization.
+
+## Quick Start Path: Detailed Guide
+
+### For Docker Compose Projects
+
+#### Requirements
+
+- A public GitHub repository
+- A `docker-compose.yml` or `docker-compose.yaml` file in your repository's root directory
+- Container images must be:
+ - Pre-built and available in supported registries
+ - Publicly accessible
+ - Referenced using the `image` directive
+
+#### Step-by-Step Process
+
+1. **Repository Preparation**
+ - Ensure your `docker-compose.yml` is in the root directory
+ - Verify all images are publicly accessible
+ - Check that your compose file uses supported configuration options
+
+2. **Submission**
+ - Visit [deploystack.io/submit](https://deploystack.io/submit)
+ - Enter your GitHub repository URL
+ - Our system automatically detects your compose file
+ - Review the detected configuration
+
+3. **Template Generation**
+ - Infrastructure templates are generated for each supported cloud provider
+ - Templates are stored in our public repository
+ - You receive deployment button code for your README.md
+
+### For Docker Run Commands
+
+#### Requirements
+
+- A public GitHub repository
+- A valid Docker run command that includes:
+ - Image name and tag
+ - Port mappings (if required)
+ - Environment variables (if needed)
+ - Volume mounts (if necessary)
+
+#### Step-by-Step Process
+
+1. **Command Preparation**
+ - Ensure your Docker run command is complete and valid
+ - Verify all referenced images are publicly available
+ - Test the command locally if possible
+
+2. **Submission**
+ - Visit [deploystack.io/submit](https://deploystack.io/submit)
+ - Enter your GitHub repository URL
+ - Paste your Docker run command
+ - Review the parsed configuration
+
+3. **Template Generation**
+ - Infrastructure templates are generated automatically
+ - Templates are optimized for each cloud provider
+ - You receive deployment button code
+
+## Recommended Path: Comprehensive Setup
+
+### The `.deploystack` Directory Structure
+
+Create a `.deploystack` directory in your repository with these components:
+
+```bash
+.deploystack/
+├── docker-compose.yml # Your Docker Compose configuration
+├── docker-run.txt # Or your Docker run command
+├── env # Environment variables (optional)
+└── logo.webp # Your project logo (optional)
+```
+
+#### Component Details
+
+**Docker Configuration Files**:
+
+- `docker-compose.yml`: Your complete Docker Compose configuration
+- `docker-run.txt`: Alternative to compose file, contains your Docker run command
+- Only one of these files should be present
+
+For more configuration options please check our [.deploystack Directory Reference](/docs/deploystack/deploystack-configuration-directory).
+
+### GitHub App Integration
+
+The [DeployStack Repository Sync](https://github.com/apps/deploystack-repository-sync) app enables:
+
+1. **Automatic Updates**
+ - Monitors changes to your Docker configurations
+ - Updates templates when configurations change
+ - Ensures templates stay in sync with your project
+
+2. **Installation Steps**
+ - Visit the GitHub app installation page
+ - Select your repositories
+ - Configure access permissions
+ - Verify installation
+
+3. **Monitoring and Updates**
+ - Changes to `.deploystack` directory trigger updates
+ - Only default branch changes are processed
+ - Templates are automatically regenerated
+
+## Behind the Scenes: How It Works
+
+### The docker-to-iac Module
+
+Our open-source [docker-to-iac](https://github.com/deploystackio/docker-to-iac) module:
+
+- Parses your Docker configurations
+- Handles multiple cloud provider translations
+- Supports various infrastructure patterns
+- Maintains provider-specific optimizations
+
+### Template Generation Process
+
+1. **Configuration Analysis**
+ - Docker configurations are parsed
+ - Dependencies are identified
+
+2. **Provider-Specific Translation**
+ - Templates generated for each provider
+ - Provider best practices applied
+ - Resource mappings optimized
+
+3. **Template Storage**
+ - Templates stored in [deploy-templates](https://github.com/deploystackio/deploy-templates)
+ - Version controlled for tracking
+ - Publicly accessible
+
+### Deployment Button Integration
+
+After template generation:
+
+1. Visit [deploystack.io/deploy-button](https://deploystack.io/deploy-button)
+2. Select your preferred button style
+3. Copy the generated code
+4. Add to your README.md
+
+## Best Practices
+
+### Repository Organization
+
+- Keep Docker configurations clean and well-documented
+- Use specific version tags for images
+- Document environment variable requirements
+- Include clear deployment instructions
+
+### Configuration Management
+
+- Use the `.deploystack` directory for better organization
+- Keep environment variables separate
+- Test configurations locally
+
+### Deployment Strategy
+
+- Start with the Quick Start path if needed
+- Migrate to Recommended path for better control
+- Use GitHub app for automatic updates
+
+## Troubleshooting Common Issues
+
+### Template Generation
+
+- Verify image accessibility
+- Check Docker configuration syntax
+- Ensure all required ports are exposed
+- Validate environment variables
+
+## Need Additional Help?
+
+- Review our detailed [Troubleshooting Guide](/docs/deploystack/troubleshooting)
+- Join our active [Discord Community](https://discord.gg/UjFWwByB)
+- Submit issues on GitHub to our [Feedback repository](https://github.com/deploystackio/feedback)
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/github-application.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/github-application.mdx
new file mode 100644
index 0000000..0bfd545
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/github-application.mdx
@@ -0,0 +1,69 @@
+---
+title: GitHub Application
+description: Keep Docker configurations and deployment templates in sync with DeployStack's GitHub App. Updates templates automatically when files change.
+---
+
+# GitHub App Integration
+
+The DeployStack GitHub App ensures your Infrastructure as Code (IaC) templates remain synchronized with your Docker configurations. After submitting your repository to deploystack.io, install our GitHub App to enable automatic updates.
+
+## How It Works
+
+When you install the [DeployStack Repository Sync](https://github.com/apps/deploystack-repository-sync) app, it monitors specific files in your repository:
+
+- `.deploystack/` directory - [Contains your Docker configurations and assets](/docs/deploystack/deploystack-configuration-directory)
+- `README.md` - For README.md updates
+
+When changes are detected in these files, the app automatically triggers an update of your IaC templates in our [deploy-templates](https://github.com/deploystackio/deploy-templates) repository.
+
+
+Changes are only processed when they occur on your repository's **default branch**. Modifications in other branches will not trigger template, logo, config or any other updates.
+
+
+## Installation
+
+1. Visit the [installation page](https://github.com/apps/deploystack-repository-sync/installations/new)
+2. Select the repositories you want to monitor
+3. Approve the requested permissions
+
+## Security & Permissions
+
+The app follows the principle of least privilege and requires only:
+
+- Read access to repository contents
+- Read access to repository metadata
+
+These minimal permissions ensure the app can only:
+
+- Monitor changes to your Docker configurations
+- Access basic repository information needed for template generation
+
+## What Gets Updated?
+
+When the app detects changes, it automatically updates:
+
+- Repository metadata in our catalog:
+ - Topics
+ - Repository Homepage
+ - Description
+- IaC templates
+ - Depends on which technique (docker compose or docker run command) you choose, you can upload the `docker-compose.yml` or `docker-run.txt` in the `.deploystack` directory. Every time you update the files on your main branch (or additional branch), IaC templates will be updated automatically - [Automatic Updates](/docs/deploystack/deploystack-configuration-directory#automatic-updates).
+- Environment variables
+ - To make it easier for a user to deploy IaC templates, it is recommended to work with environment variables. For this purpose, you can upload an `env` file and add your appropriate variables - [Environment Variables](/docs/deploystack/deploystack-configuration-directory#environment-variables).
+- DeployStack Configuration
+- Project / Applicaton Logo
+ - It is possible to upload your own logo to DeployStack catalog. To do this you need to upload a file to our directory `.deploystack`. Read more about it here: [Repository Logo](/docs/deploystack/deploystack-configuration-directory#repository-logo)
+
+## Managing the Integration
+
+You can manage or remove the integration at any time through your [GitHub Applications Settings](https://github.com/settings/installations). The app installation can be configured for specific repositories or your entire organization.
+
+## Next Steps
+
+After installing the app:
+
+1. Make changes to your Docker configurations in the `.deploystack` directory
+2. Commit and push your changes
+3. DeployStack will automatically update your deployment templates
+
+For details about the `.deploystack` directory structure, check our [.deploystack Directory Reference](/docs/deploystack/deploystack-configuration-directory).
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/iac-lifecycle.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/iac-lifecycle.mdx
new file mode 100644
index 0000000..e9e551f
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/iac-lifecycle.mdx
@@ -0,0 +1,88 @@
+---
+title: Infrastructure as Code Lifecycle
+description: Guide to how DeployStack manages Infrastructure as Code template updates, including automatic synchronization, update triggers, and version control.
+---
+
+# Infrastructure as Code Lifecycle
+
+This guide explains how DeployStack manages and updates your Infrastructure as Code (IaC) templates throughout their lifecycle.
+
+## Template Generation Process
+
+### Initial Setup
+
+1. Create a `.deploystack` [configuration directory](/docs/deploystack/deploystack-configuration-directory) in your repository
+2. Add your Docker configuration files:
+ - `docker-compose.yml` for Compose configurations
+ - `docker-run.txt` for Docker run commands
+3. Submit your repository to [deploystack.io/submit](https://deploystack.io/submit)
+4. Initial IaC templates are generated and stored in our [deploy-templates](https://github.com/deploystackio/deploy-templates) repository
+
+### Enabling Automatic Updates
+
+Install the [DeployStack Repository Sync](/docs/deploystack/github-application) GitHub App to keep your templates up to date when:
+
+- You modify Docker configurations in the `.deploystack` directory
+- Cloud providers update their IaC specifications
+- DeployStack improves its template generation
+
+
+
+## Update Flow
+
+As the app GitHub repository owner, an update flow gives you control over the generation of Infrastructure as Code (IaC) templates. The flow allows you to regenerate IaC templates by changing, for example, the `.deploystack/docker-compose.yml` file.
+
+All IaC templates are stored in public and open-source repository: [https://github.com/deploystackio/deploy-templates](https://github.com/deploystackio/deploy-templates).
+
+### Prerequisites for activating the flow
+
+1. You have installed the [DeployStack GitHub app](/docs/deploystack/github-application).
+2. You have created the `.deploystack/docker-run.txt` or `.deploystack/docker-compose.yml` file.
+
+The choice between `docker-run.txt` or `docker-compose.yml` depends on the submission process used to DeployStack. When submitting to DeployStack, you can choose two methods -> Docker Run or Docker Compose.
+
+### Example flow
+
+Let's say you want to change your image tag from "deploystack/awesomeapp:v1" to "deploystack/awesomeapp:v2-next".
+
+
+
+1. To do this, you will edit the file `.deploy stack/docker-run.txt` and change your new docker tag
+2. GitHub will send an event to the DeployStack backend with the change of the file `.deploy stack/docker-run.txt` because you have the DeployStack GitHub app installed.
+3. DeployStack backend validates the change, and if everything test passes
+4. By using [docker-to-iac module](https://github.com/deploystackio/docker-to-iac), DeployStack backend will generate the new IaC templates for your application and store them in our repository [https://github.com/deploystackio/deploy-templates](https://github.com/deploystackio/deploy-templates)
+
+## Update Triggers
+
+Your IaC templates are automatically updated in these scenarios:
+
+### Repository Changes
+
+When you modify files in your repository's default branch:
+
+- Changes to `docker-compose.yml` or `docker-run.txt` in `.deploystack` directory
+- Updates to repository metadata
+
+### Provider Updates
+
+Templates are regenerated when:
+
+- Cloud providers modify their IaC specifications
+- New provider features become available
+- Provider API requirements change
+
+### System Updates
+
+DeployStack initiates template updates when:
+
+- The docker-to-iac module receives improvements
+- New template optimizations are available
+- Bug fixes are released
+
+## Template Versioning
+
+All template updates are version controlled in our [deploy-templates repository](https://github.com/deploystackio/deploy-templates), allowing you to:
+
+- Track template changes over time
+- Review modification history
+- Understand update triggers
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/index.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/index.mdx
new file mode 100644
index 0000000..58ffd00
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/index.mdx
@@ -0,0 +1,23 @@
+---
+title: DeployStack Documentation
+description: Official DeployStack documentation - Learn how to automate Docker Compose and run deployments across cloud providers. Clear guides and technical references for effective deployment automation.
+menuTitle: DeployStack
+---
+
+# DeployStack - Open Source Cloud Deployment Guide
+
+DeployStack helps you deploy Docker Compose and Docker Run applications across different cloud providers by automatically generating Infrastructure as Code templates. Our documentation guides you through using DeployStack effectively.
+
+## Documentation Sections
+
+- [Getting Started](/docs/deploystack/getting-started.md) - Quick introduction and first steps
+- [Docker Compose Requirements](/docs/deploystack/docker-compose-requirements.md) - Learn about supported configurations
+- [One-Click Deploy](/docs/deploystack/one-click-deploy.md) - Learn about deployment automation
+- [Troubleshooting](/docs/deploystack/troubleshooting.md) - Resolve common issues
+
+## Additional Resources
+
+- [Docker-to-IaC Module Documentation](/docs/docker-to-iac/index.md)
+- [Join our Discord](https://discord.gg/UjFWwByB)
+- [Visit DeployStack](https://deploystack.io)
+
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/multiple-branches.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/multiple-branches.mdx
new file mode 100644
index 0000000..ddb2f35
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/multiple-branches.mdx
@@ -0,0 +1,150 @@
+---
+title: Branch Strategy
+description: Guide to implementing multi-branch deployment strategies with DeployStack, enabling version-specific deployments and automated template management.
+---
+
+# Branch Strategy
+
+DeployStack's branch strategy allows you to maintain and deploy multiple versions of your application simultaneously. This is particularly valuable when you're evolving your application while maintaining stable versions for production users.
+
+## The Multi-Version Journey
+
+### Starting Point: Default Branch
+
+Every repository starts with its default branch (typically `main` or `master`). This branch:
+
+- Always generates Infrastructure as Code templates
+- Cannot be excluded from template generation
+- Has implicit `priority: 0` in deployment options
+- Can be changed through your repository settings
+
+When you change your default branch in GitHub:
+
+- DeployStack automatically detects the change - you need to install [DeployStack GitHub App](/docs/deploystack/github-application)
+- Regenerates templates for the new default branch
+- Updates all deployment buttons
+
+### Growing Your Application: Adding New Versions
+
+As your application evolves, you might want to:
+
+- Develop a new major version with breaking changes
+- Maintain an LTS (Long Term Support) version
+- Test new features with early adopters
+
+This is where branch configurations become powerful. You can maintain up to 5 active branches, each with:
+
+- Its own Docker configuration
+- Separate environment variables
+- Independent deployment options
+
+For example, when developing version 2 of your application:
+
+```yaml
+deployment:
+ branches:
+ v2:
+ label: "Version 2 Beta"
+ description: "Next generation features"
+ priority: 1
+```
+
+### Branch-Specific Configurations
+
+Each branch can have its own `.deploystack` directory with standard configuration files. First, create the directories on your default branch:
+
+```bash
+# Default branch configuration
+
+your-repository/
+└── .deploystack/
+ ├── config.yml
+ ├── docker-compose.yml
+ └── env
+```
+
+```bash
+# v2 branch configuration
+
+your-repository/
+└── .deploystack/
+ ├── config.yml
+ ├── docker-compose.yml
+ └── env
+```
+
+This structure allows you to:
+
+- Use different Docker configurations per branch
+- Maintain separate environment variables
+- Modify service configurations independently
+- Keep each version's deployment parameters isolated
+
+Remember: The DeployStack GitHub App only monitors the standard filenames: check [.deploystack Directory Reference for more info](/docs/deploystack/deploystack-configuration-directory)
+
+## Real-World Example
+
+Let's say you're maintaining a web application:
+
+```yaml
+application:
+ name: "MyWebApp"
+ description: "Modern web application stack"
+
+deployment:
+ branches:
+ v1-lts:
+ label: "v1 LTS"
+ description: "Stable v1.x release with long-term support"
+ priority: 1
+ v2-beta:
+ label: "v2 Beta"
+ description: "New architecture with enhanced features"
+ priority: 2
+ experimental:
+ label: "Edge"
+ description: "Latest experimental features"
+ priority: 3
+```
+
+Each branch can have different Docker configurations:
+
+- `main` branch (v1.x stable):
+
+ ```yaml
+ # docker-compose.yml
+ services:
+ web:
+ image: myapp:1.5
+ ```
+
+- `v2-beta` branch:
+
+ ```yaml
+ # docker-compose.yml
+ services:
+ web:
+ image: myapp:2.0-beta
+ ```
+
+## Benefits for Your Users
+
+This strategy allows your users to:
+
+- Choose the version that best fits their needs
+- Test new versions while maintaining production deployments
+- Safely transition between versions at their own pace
+- Deploy LTS versions for stability
+- Try experimental features in isolation
+
+## Important Notes
+
+- Maximum of 5 active branches supported
+- Each branch can have unique Docker configurations
+- Default branch can be changed (switch to another branch and make it default) but not excluded
+- Branch configurations ([DeployStack config file](/docs/deploystack/deploystack-config-file)) must be in the default branch
+- All branches are automatically monitored for changes
+- Template regeneration happens automatically when:
+ - Branch content changes
+ - Default branch is changed
+ - Configuration is updated
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/one-click-deploy.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/one-click-deploy.mdx
new file mode 100644
index 0000000..8cf961e
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/one-click-deploy.mdx
@@ -0,0 +1,157 @@
+---
+title: One-Click Deploy
+description: Technical docs for DeployStack's one-click deployment feature. Covers infrastructure template generation, cloud provider integration, and button configuration.
+---
+
+# One-Click Deploy
+
+DeployStack leverages existing deployment technologies from cloud providers to make application deployment as straightforward as possible.
+
+## How One-Click Deploy Works
+
+When you submit your repository to [deploystack.io/submit](https://deploystack.io/submit), we:
+
+1. Generate Infrastructure as Code (IaC) templates for [supported cloud providers](/docs/docker-to-iac/index)
+2. Store these templates in our [deploy-templates repository](https://github.com/deploystackio/deploy-templates)
+3. Create provider-specific deployment buttons for your README.md -> by [deploystack.io/deploy-button](https://deploystack.io/deploy-button)
+
+## Template Generation and Storage
+
+### Repository Structure
+
+All generated templates are stored in the [deploystackio/deploy-templates](https://github.com/deploystackio/deploy-templates) repository using this organization:
+
+- Each project gets its own subfolder and branch
+- Naming convention: `-` (lowercase)
+- Example: `microsoft-vscode` for Microsoft's VS Code repository
+
+### Branch Strategy
+
+We create a dedicated branch for each project to support one-click deployment functionality:
+
+- Branch name matches the subfolder name
+- Contains all necessary IaC templates and configurations
+- Enables direct integration with cloud provider deployment systems
+
+## Cloud Provider Integration
+
+### Current Providers
+
+We integrate with cloud providers' native deployment systems. For example:
+
+- **DigitalOcean**: Uses the "Deploy to DigitalOcean" functionality as documented in their [official guide](https://docs.digitalocean.com/products/app-platform/how-to/add-deploy-do-button/)
+- **Kubernetes**: Generates Helm charts that can be deployed to any Kubernetes cluster
+- Check [supported cloud providers](/docs/docker-to-iac/index) for full list
+
+### Provider-Specific Templates
+
+Each cloud provider may require specific template formats:
+
+- AWS CloudFormation templates
+- DigitalOcean App Spec
+- Render Blueprints
+- And more based on provider requirements
+- Kubernetes Helm charts with all necessary templates
+
+## Using Deploy Buttons
+
+After template generation, you'll receive HTML/Markdown code for deployment buttons by visitig the [deploystack.io/deploy-button](https://deploystack.io/deploy-button) page.
+
+There are two options you can chose from. The main difference is the deploy url. For the mode "Deploy via DeployStack" the deploy address points to the deploystack.io/deploy endpoint, where HTTP status code 302 redirects to the cloud provider one-click deploy endpoint.
+
+In the example below with render:
+
+```markdown
+1. -> https://deploystack.io/deploy/microsoft-vscode?provider=rnd&language=rnd
+2. -> HTTP 302 REDIRECT
+3. -> https://render.com/deploy?repo=https://github.com/deploystackio/deploy-templates/tree/microsoft-vscode
+```
+
+### Deploy via DeployStack
+
+Link via deploystack deploy endpoint.
+
+- auto update on One-Click deploy links: if the provider's deploy url changes, we will update.
+- future cloud provider support out of the box: The endpoint makes it easier for us to integrate with additional providers, which benefits your users.
+- deploy statistics for your app: We collect anonymized statistics to show the number of deployments your application has had, similar to npm download statistics.
+
+#### Example Markdown Deploy via DeployStack
+
+- static deploy links: if the cloud provider changes the one-click deploy url, the functionality will also be broken. You have to update your `README.md` manually.
+- no statistics collection possible: you will never know how many people use your project :)
+
+```markdown title="README.md"
+## ⚡ One-Click Deploy
+
+| Cloud Provider | Deploy Button |
+|---------------|---------------|
+| Render | |
+```
+
+### Deploy Standalone
+
+Direct link to Cloud Provider to enable One-Click depoy.
+
+#### Example Markdown Deploy Standalone
+
+```markdown title="README.md"
+## ⚡ One-Click Deploy
+
+| Cloud Provider | Deploy Button |
+|---------------|---------------|
+| Render | |
+```
+
+## License and Usage
+
+All generated templates are available under the MIT License:
+
+- Full license text available in the [deploy-templates repository](https://github.com/deploystackio/deploy-templates/blob/main/LICENSE)
+- Free to use, modify, and distribute
+- No warranty provided
+
+## Extending Provider Support
+
+Want to add support for another cloud provider? You can:
+
+1. Contribute to the [docker-to-iac module](https://github.com/deploystackio/docker-to-iac)
+2. Add a new provider parser
+3. Implement the necessary template generation logic
+
+Benefits of contributing:
+
+- All existing projects in our catalog automatically get templates for the new provider
+- The open-source community benefits from broader deployment options
+- Your provider becomes part of the one-click deployment ecosystem
+
+## Technical Implementation Details
+
+The one-click deployment process:
+
+1. User clicks deploy button
+2. Cloud provider loads template from our repository's specific branch
+3. Provider's deployment system processes the template
+4. Application gets deployed according to specifications
+
+## Validation and Security
+
+For each deployment:
+
+- Templates are version controlled
+- Source code is publicly accessible
+- Infrastructure specifications are transparent
+- No sensitive data is stored in templates
+
+## Future Enhancements
+
+We're continuously working to:
+
+- Add more cloud providers
+- Improve template generation
+- Enhance deployment options
+- Support more complex configurations
+
+## Next Steps
+
+- Visit our [Discord community](https://discord.gg/UjFWwByB) for help
+- Consider [contributing](https://github.com/deploystackio/docker-to-iac) to add more providers
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/troubleshooting.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/troubleshooting.mdx
new file mode 100644
index 0000000..15bb2aa
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/deploystack/troubleshooting.mdx
@@ -0,0 +1,151 @@
+---
+title: Troubleshooting DeployStack Issues
+description: Technical solutions for common DeployStack deployment issues. Find answers to repository submission errors, license restrictions, and Docker Compose validation problems.
+---
+
+# Troubleshooting
+
+This guide helps you resolve common issues that might occur when submitting your repository to DeployStack.
+
+## Invalid GitHub Repository URL
+
+This error occurs when the submitted URL doesn't match the expected GitHub repository URL format.
+
+**Common causes:**
+
+- Missing 'github.com' in the URL
+- Including query parameters
+
+**Solution:**
+Use the standard GitHub repository URL format:
+
+```bash
+https://github.com/username/repository
+```
+
+## Repository License Not Permitted
+
+We don't support certain licenses to protect both our users and our service. Here's what we currently don't support:
+
+| License Type | Reason for Restriction |
+|-------------|------------------------|
+| No License | Without a license, the code defaults to exclusive copyright, making it legally risky to use or deploy |
+| Proprietary License | These licenses typically restrict redistribution and modification rights |
+| Commons Clause | This addition to licenses restricts commercial use of the software |
+| Shared Source | These licenses often include terms that limit deployment and distribution |
+| Custom License | Custom licenses require individual legal review and may contain problematic terms |
+
+**Other Restrictions:**
+
+- Licenses containing "proprietary" terms
+- Licenses with Commons Clause additions
+- Licenses marked as "shared source"
+- Any repository without clear license information
+
+**Solution:**
+
+Ensure your repository:
+
+- Uses a widely accepted open-source license (MIT, Apache, GPL, etc.)
+- Has clear license information in the repository
+- If you can, change your repository license to a supported one
+- For special cases, whitelist requests can be submitted via [Discord](https://discord.gg/UjFWwByB) or Twitter DM
+
+## Invalid Base64 Encoding for Docker File
+
+This error occurs during our internal processing of your docker-compose file.
+
+**Common causes:**
+
+- File encoding issues
+- Special characters in the file
+- File corruption
+
+**Solution:**
+
+- Verify your docker-compose file uses UTF-8 encoding
+- Remove any special characters
+- Try re-creating the file if issues persist
+
+## Invalid Docker Compose File
+
+The submitted docker-compose file doesn't meet the required format or contains unsupported features.
+
+**Common causes:**
+
+- Invalid YAML syntax
+- Unsupported Docker Compose version
+- Missing required fields
+- Using unsupported features
+
+**Solution:**
+
+- Validate your docker-compose file syntax
+- Check our [Docker Compose Requirements](/docs/deploystack/docker-compose-requirements) page
+- Ensure you're using supported features only
+
+## Error Converting Docker Compose to IaC
+
+This error occurs when our system cannot convert your docker-compose configuration to Infrastructure as Code templates.
+
+**Common causes:**
+
+- Unsupported service configurations
+- Complex dependencies
+- Resource definitions that can't be mapped to cloud provider services
+
+**Solution:**
+
+- Simplify your docker-compose configuration
+- Review our [supported features documentation](/docs/docker-to-iac/supported-docker-compose-variables)
+- Ensure all services use supported configurations
+
+## Error Listing Services from Docker Compose
+
+The system couldn't properly parse the services defined in your docker-compose file.
+
+**Common causes:**
+
+- Malformed service definitions
+- Missing required service properties
+- Invalid service configurations
+
+**Solution:**
+
+- Verify each service has the required `image` property
+- Check service definitions follow the correct format
+- Remove any unsupported service configurations
+
+## Internal Server Error
+
+This indicates an unexpected error in our validation process.
+
+**What it means:**
+
+- The error is on our end
+- The issue isn't related to your repository or configuration
+- We needs to investigate
+
+**What to do:**
+
+1. Try your submission again after a few minutes
+2. If the error persists, join our [Discord community](https://discord.gg/UjFWwByB)
+3. Report the issue with:
+ - Your repository URL
+ - Timestamp of the error
+ - Any error messages you received
+
+## General Troubleshooting Tips
+
+1. Validate your docker-compose file locally before submission
+2. Ensure your repository meets all [requirements](/docs/deploystack/docker-compose-requirements)
+3. Check that all services use supported configurations
+4. Verify your repository is public and accessible
+
+## Need More Help?
+
+If you're still experiencing issues:
+
+- Join our [Discord community](https://discord.gg/UjFWwByB)
+- Check our [Docker Compose Requirements](/docs/deploystack/docker-compose-requirements)
+- Review [supported features](/docs/docker-to-iac/supported-docker-compose-variables)
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/api.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/api.mdx
new file mode 100644
index 0000000..8aaff08
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/api.mdx
@@ -0,0 +1,790 @@
+---
+title: docker-to-iac module API
+description: Here's everything you need to know about our docker-to-iac module - from listing available cloud providers to converting your Docker setup into deployable code.
+---
+
+# docker-to-iac module API list
+
+In this page you will find all possible APIs for package docker-to-iac.
+
+## List all Parser
+
+To list all available parsers, please use the `listAllParsers()` method.
+
+### Example
+
+```typescript
+import { listAllParsers } from '@deploystack/docker-to-iac';
+
+const parsers = listAllParsers();
+
+console.log('Available Parsers:');
+console.log(parsers);
+```
+
+#### Output
+
+```json
+[
+ {
+ providerWebsite: 'https://aws.amazon.com/cloudformation/',
+ providerName: 'Amazon Web Services',
+ providerNameAbbreviation: 'AWS',
+ languageOfficialDocs: 'https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html',
+ languageAbbreviation: 'CFN',
+ languageName: 'AWS CloudFormation',
+ defaultParserConfig: { files: [Array], cpu: 512, memory: '1GB' }
+ },
+ {
+ providerWebsite: 'https://render.com/docs',
+ providerName: 'Render',
+ providerNameAbbreviation: 'RND',
+ languageOfficialDocs: 'https://docs.render.com/infrastructure-as-code',
+ languageAbbreviation: 'RND',
+ languageName: 'Render Blue Print',
+ defaultParserConfig: {
+ files: [Array],
+ subscriptionName: 'starter',
+ region: 'oregon',
+ diskSizeGB: 10
+ }
+ },
+ {
+ providerWebsite: 'https://www.digitalocean.com/',
+ providerName: 'DigitalOcean',
+ providerNameAbbreviation: 'DO',
+ languageOfficialDocs: 'https://docs.digitalocean.com/products/app-platform/',
+ languageAbbreviation: 'DOP',
+ languageName: 'DigitalOcean App Spec',
+ defaultParserConfig: { files: [Array], region: 'nyc', subscriptionName: 'basic-xxs' }
+ },
+ {
+ providerWebsite: 'https://helm.sh/',
+ providerName: 'Kubernetes',
+ providerNameAbbreviation: 'K8S',
+ languageOfficialDocs: 'https://helm.sh/docs/',
+ languageAbbreviation: 'HELM',
+ languageName: 'Helm Chart',
+ defaultParserConfig: {
+ files: [Array],
+ cpu: '100m',
+ memory: '128Mi'
+ }
+ },
+ {
+ providerWebsite: 'https://www.digitalocean.com/',
+ providerName: 'DigitalOcean',
+ providerNameAbbreviation: 'DO',
+ languageOfficialDocs: 'https://docs.digitalocean.com/products/app-platform/',
+ languageAbbreviation: 'DOP',
+ languageName: 'DigitalOcean App Spec',
+ defaultParserConfig: { files: [Array], region: 'nyc', subscriptionName: 'basic-xxs' }
+ }
+]
+```
+
+**Note the files array**: that's because we have a [multi file strategy](/docs/docker-to-iac/multi-file-configuration).
+
+### Type
+
+```typescript
+listAllParsers(): ParserInfo[]
+```
+
+## Get Parser Info
+
+If you want to extract the `defaultParserConfig` object from a parser, the `getParserInfo` method is the most suitable for this.
+
+### Example
+
+```typescript
+import { getParserInfo } from '@deploystack/docker-to-iac';
+
+const awsInfo = getParserInfo('CFN');
+
+console.log('Available Parsers:');
+console.log(awsInfo);
+```
+
+#### Output
+
+```json
+{
+ providerWebsite: 'https://aws.amazon.com/cloudformation/',
+ providerName: 'Amazon Web Services',
+ providerNameAbbreviation: 'AWS',
+ languageOfficialDocs: 'https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html',
+ languageAbbreviation: 'CFN',
+ languageName: 'AWS CloudFormation',
+ defaultParserConfig: {
+ files: [
+ {
+ path: 'aws-cloudformation.cf.yml',
+ templateFormat: 'yaml',
+ isMain: true,
+ description: 'AWS CloudFormation template'
+ }
+ ],
+ cpu: 512,
+ memory: '1GB'
+ }
+}
+```
+
+### Type
+
+```typescript
+getParserInfo(languageAbbreviation: string): ParserInfo
+```
+
+## Translate API
+
+Translate Docker configurations (both Docker run commands and docker-compose.yml files) into your chosen Infrastructure as Code language.
+
+### Function Signature
+
+```typescript
+translate(input: string, options: {
+ source: 'run' | 'compose',
+ target: string,
+ templateFormat?: TemplateFormat,
+ environmentVariableGeneration?: EnvironmentVariableGenerationConfig;
+ environmentVariables?: Record;
+ persistenceKey?: string;
+ serviceConnections?: ServiceConnectionsConfig;
+}): TranslationResult
+```
+
+Where `TranslationResult` has the structure:
+
+```typescript
+interface TranslationResult {
+ files: {
+ [path: string]: FileOutput
+ };
+ serviceConnections?: ResolvedServiceConnection[];
+}
+
+interface FileOutput {
+ content: string;
+ format: TemplateFormat;
+ isMain?: boolean;
+}
+```
+
+### Examples
+
+#### Translating Docker Compose
+
+```javascript
+import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
+import { join, dirname } from 'path';
+import { translate } from '@deploystack/docker-to-iac';
+
+const dockerComposeContent = readFileSync('path/to/docker-compose.yml', 'utf8');
+
+const result = translate(dockerComposeContent, {
+ source: 'compose',
+ target: 'CFN',
+ templateFormat: 'yaml'
+});
+
+// Access individual file contents
+console.log(`Generated ${Object.keys(result.files).length} files:`);
+Object.keys(result.files).forEach(path => {
+ console.log(`- ${path}`);
+});
+
+// Write files to disk preserving directory structure
+Object.entries(result.files).forEach(([path, fileData]) => {
+ const fullPath = join('output', path);
+ const dir = dirname(fullPath);
+
+ if (!existsSync(dir)) {
+ mkdirSync(dir, { recursive: true });
+ }
+
+ writeFileSync(fullPath, fileData.content);
+});
+```
+
+#### Translating Docker Run Command
+
+```javascript
+import { translate } from '@deploystack/docker-to-iac';
+import { writeFileSync, mkdirSync, existsSync } from 'fs';
+import { join, dirname } from 'path';
+
+const dockerRunCommand = 'docker run -d -p 8080:80 nginx:latest';
+
+const result = translate(dockerRunCommand, {
+ source: 'run',
+ target: 'RND',
+ templateFormat: 'yaml'
+});
+
+console.log(result)
+
+// Access and save all generated files
+Object.entries(result.files).forEach(([path, fileData]) => {
+ const fullPath = join('output', path);
+ const dir = dirname(fullPath);
+
+ if (!existsSync(dir)) {
+ mkdirSync(dir, { recursive: true });
+ }
+
+ writeFileSync(fullPath, fileData.content);
+ console.log(`Created: ${path}`);
+});
+```
+
+#### Translating Docker Compose to Helm Chart
+
+```javascript
+import { translate } from '@deploystack/docker-to-iac';
+import { writeFileSync, mkdirSync, existsSync } from 'fs';
+import { join, dirname } from 'path';
+
+const dockerComposeContent = `
+version: '3'
+services:
+ web:
+ image: nginx:latest
+ ports:
+ - "80:80"
+ db:
+ image: postgres:13
+ environment:
+ POSTGRES_USER: myuser
+ POSTGRES_PASSWORD: mypassword
+ POSTGRES_DB: myapp
+`;
+
+const result = translate(dockerComposeContent, {
+ source: 'compose',
+ target: 'HELM',
+ templateFormat: 'yaml'
+});
+
+// Access and save all generated files to create a complete Helm Chart
+Object.entries(result.files).forEach(([path, fileData]) => {
+ const fullPath = join('helm-chart', path);
+ const dir = dirname(fullPath);
+
+ if (!existsSync(dir)) {
+ mkdirSync(dir, { recursive: true });
+ }
+
+ writeFileSync(fullPath, fileData.content);
+ console.log(`Created: ${path}`);
+});
+```
+
+#### Example Output (Partial - Chart.yaml)
+
+```yaml
+apiVersion: v2
+name: deploystack-app
+description: A Helm chart for DeployStack application generated from Docker configuration
+type: application
+version: 0.1.0
+appVersion: 1.0.0
+maintainers:
+ - name: DeployStack
+ email: hello@deploystack.io
+dependencies:
+ - name: db
+ repository: https://charts.bitnami.com/bitnami
+ version: ^12.0.0
+ condition: dependencies.db.enabled
+```
+
+#### Configuring Service Connections
+
+```javascript
+import { translate } from '@deploystack/docker-to-iac';
+
+const dockerComposeContent = `
+version: "3"
+services:
+ db:
+ image: mariadb:latest
+ environment:
+ - MYSQL_ROOT_PASSWORD=rootpass
+ app:
+ image: node:alpine
+ environment:
+ - DATABASE_HOST=db # This will be transformed
+`;
+
+const result = translate(dockerComposeContent, {
+ source: 'compose',
+ target: 'DOP', // DigitalOcean App Platform
+ templateFormat: 'yaml',
+ serviceConnections: {
+ mappings: [
+ {
+ fromService: 'app', // Service that needs to connect
+ toService: 'db', // Service to connect to
+ environmentVariables: [ // Env vars that reference the service
+ 'DATABASE_HOST'
+ ]
+ }
+ ]
+ }
+});
+
+// The result will include transformed service references:
+console.log(result.serviceConnections);
+```
+
+### Example Output (AWS CloudFormation)
+
+```yaml
+{
+ files: {
+ 'render.yaml': {
+ content: 'services:\n' +
+ ' - name: default\n' +
+ ' type: web\n' +
+ ' env: docker\n' +
+ ' runtime: image\n' +
+ ' image:\n' +
+ ' url: docker.io/library/nginx:latest\n' +
+ ' startCommand: ""\n' +
+ ' plan: starter\n' +
+ ' region: oregon\n' +
+ ' envVars:\n' +
+ ' - key: PORT\n' +
+ ' value: "80"\n',
+ format: 'yaml',
+ isMain: true
+ }
+ }
+}
+Created: render.yaml
+```
+
+#### Translation with Environment Variable Generation
+
+```typescript
+import { translate } from '@deploystack/docker-to-iac';
+
+// Environment variable configuration
+const envConfig = {
+ 'library/mariadb': {
+ versions: {
+ '*': {
+ environment: {
+ 'MYSQL_ROOT_PASSWORD': {
+ type: 'password',
+ length: 16
+ },
+ 'MYSQL_DATABASE': {
+ type: 'string',
+ length: 12,
+ pattern: 'lowercase'
+ }
+ }
+ }
+ }
+ }
+};
+
+const translatedConfig = translate(dockerComposeContent, {
+ source: 'compose',
+ target: 'CFN',
+ templateFormat: 'yaml',
+ environmentVariableGeneration: envConfig
+});
+```
+
+### Parameters
+
+#### `input: string`
+
+For Docker Compose: The contents of your docker-compose.yml file
+For Docker run: The complete docker run command
+
+#### `options.source: 'run' | 'compose'`
+
+Specifies the input type:
+
+- `'run'` - For Docker run commands
+- `'compose'` - For Docker Compose files
+
+#### `options.target: string`
+
+The IaC language to translate to. Currently supported targets:
+Please see the sidebar on the left, section Parsers.
+
+#### `options.templateFormat?: TemplateFormat`
+
+Optional. The desired output format:
+
+- `'json'` - JavaScript Object Notation
+- `'yaml'` - YAML format
+- `'text'` - Plain text
+
+> [!IMPORTANT]
+> Not all template formats are valid for every IaC language. For example, AWS CloudFormation only accepts YAML or JSON formats. Choose a format compatible with your target IaC language.
+
+#### `options.environmentVariableGeneration?: EnvironmentVariableGenerationConfig`
+
+Optional. Configuration for generating environment variable values. Structure:
+
+```typescript
+type EnvironmentVariableGenerationConfig = {
+ [imageName: string]: {
+ versions: {
+ [version: string]: {
+ environment: {
+ [variableName: string]: {
+ type: 'password' | 'string' | 'number';
+ length?: number;
+ pattern?: 'uppercase' | 'lowercase' | 'normal';
+ min?: number; // For number type
+ max?: number; // For number type
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+Generation types:
+
+- `password`: Generates a secure random password
+- `string`: Generates a random string
+- `number`: Generates a random number within specified range
+
+Patterns (for string type):
+
+- `uppercase`: Only uppercase characters
+- `lowercase`: Only lowercase characters
+- `normal`: Mixed case with numbers
+
+Version matching:
+
+- Use exact versions (e.g., "10.5")
+- Use "*" for all versions
+- Use "latest" for latest version
+
+> [!IMPORTANT]
+> Environment variables in your docker-compose.yml must use the `${VARIABLE_NAME}` syntax to be processed by the generator.
+
+#### `environmentVariables?: Record`
+
+Optional. The docker-to-iac module supports passing environment variables from `.env` files to your Infrastructure as Code templates. This feature allows you to manage configuration values separately from your Docker configurations and maintain consistency across deployments.
+
+```typescript
+import { translate, parseEnvFile } from '@deploystack/docker-to-iac';
+import { readFileSync } from 'fs';
+
+// Read and parse the .env file
+const envContent = readFileSync('.env', 'utf-8');
+const envVariables = parseEnvFile(envContent);
+
+const result = translate(dockerConfig, {
+ source: 'run', // or 'compose'
+ target: 'RND', // or other supported targets
+ templateFormat: 'yaml',
+ environmentVariables: envVariables
+});
+```
+
+#### `options.persistenceKey?: string`
+
+Optional. The `persistenceKey` parameter allows you to maintain consistent variable values across multiple template generations.
+
+#### `options.serviceConnections?: ServiceConnectionsConfig`
+
+Optional. Configure service-to-service communications by defining which environment variables reference other services.
+
+```typescript
+type ServiceConnectionsConfig = {
+ mappings: Array<{
+ fromService: string; // Service that needs to connect
+ toService: string; // Service to connect to
+ environmentVariables: string[]; // Environment variables that reference the service
+ property?: string; // Connection property type (connectionString, hostport, etc.)
+ }>
+};
+```
+
+This option is currently supported by:
+
+- Render.com (RND): Uses Blueprint's `fromService` syntax
+- DigitalOcean App Platform (DOP): Uses direct service names
+- Kubernetes Helm Charts (HELM): Uses Kubernetes DNS service discovery
+
+Example:
+
+```javascript
+serviceConnections: {
+ mappings: [
+ {
+ fromService: 'frontend',
+ toService: 'api',
+ environmentVariables: ['API_URL'],
+ property: 'hostport'
+ },
+ {
+ fromService: 'app',
+ toService: 'db',
+ environmentVariables: ['DATABASE_URL'],
+ property: 'connectionString'
+ }
+ ]
+}
+```
+
+### Return Value
+
+Returns the translated Infrastructure as Code template and any resolved service connections:
+
+```typescript
+{
+ files: {
+ // Generated IaC template files with paths as keys
+ 'render.yaml': { content: '...', format: 'yaml', isMain: true }
+ },
+ serviceConnections: [
+ {
+ fromService: 'app',
+ toService: 'db',
+ variables: {
+ 'DATABASE_HOST': {
+ originalValue: 'db',
+ transformedValue: 'db' // Transformed as appropriate for the provider
+ }
+ }
+ }
+ ]
+}
+```
+
+## List Services API
+
+Extract service configurations from either Docker run commands or docker-compose.yml files as structured JSON objects.
+
+### Function Signature
+
+```typescript
+listServices(content: string, options: ListServicesOptions): { [key: string]: ServiceConfig }
+
+type ListServicesOptions = {
+ source: 'compose' | 'run';
+ environmentVariableGeneration?: EnvironmentVariableGenerationConfig;
+ environmentVariables?: Record;
+ persistenceKey?: string;
+};
+```
+
+### Examples
+
+#### Listing Docker Compose Services with Environment Variables
+
+```javascript
+import { readFileSync } from 'fs';
+import { listServices, parseEnvFile } from '@deploystack/docker-to-iac';
+
+const dockerComposeContent = readFileSync('path/to/docker-compose.yml', 'utf8');
+const envContent = readFileSync('.env', 'utf-8');
+const envVariables = parseEnvFile(envContent);
+
+const services = listServices(dockerComposeContent, {
+ source: 'compose',
+ environmentVariables: envVariables
+});
+
+console.log(services);
+```
+
+##### Output with Environment Variables
+
+```json
+{
+ "db": {
+ "image": "mariadb:11.2",
+ "ports": [],
+ "command": "mariadbd --character-set-server=utf8mb4 --collation-server=utf8mb4_bin",
+ "restart": "unless-stopped",
+ "volumes": [{"host": "db", "container": "/var/lib/mysql"}],
+ "environment": {
+ "MYSQL_ROOT_PASSWORD": "mysecretpassword",
+ "MYSQL_USER": "myuser",
+ "MYSQL_PASSWORD": "mysecretpassword",
+ "MYSQL_DATABASE": "mydatabase"
+ }
+ }
+}
+```
+
+#### Listing Docker Run Services
+
+```javascript
+import { listServices } from '@deploystack/docker-to-iac';
+
+const dockerRunCommand = 'docker run -d -p 8080:80 -e NODE_ENV=production nginx:latest';
+
+const services = listServices(dockerRunCommand, {
+ source: 'run'
+});
+
+console.log(services);
+```
+
+##### Output
+
+```json
+{
+ "service": {
+ "image": "nginx:latest",
+ "ports": ["8080:80"],
+ "environment": {
+ "NODE_ENV": "production"
+ }
+ }
+}
+```
+
+### Options
+
+#### `content: string`
+
+The input content to parse:
+
+- For Docker Compose: The contents of your docker-compose.yml file
+- For Docker run: The complete docker run command
+
+#### `options.source: 'run' | 'compose'`
+
+Specifies the input type:
+
+- `'run'` - For Docker run commands
+- `'compose'` - For Docker Compose files
+
+#### `options.environmentVariables?: Record`
+
+Optional. Environment variables from a `.env` file or other source. Used to substitute variables in the format `${VARIABLE_NAME}` in your Docker configuration.
+
+Example:
+
+```javascript
+const envVariables = {
+ 'DB_PASSWORD': 'mysecretpassword',
+ 'DB_USERNAME': 'myuser',
+ 'DB_DATABASE': 'mydatabase'
+};
+```
+
+#### `options.environmentVariableGeneration?: EnvironmentVariableGenerationConfig`
+
+Optional. Configuration for automatically generating environment variable values. Structure:
+
+```typescript
+type EnvironmentVariableGenerationConfig = {
+ [imageName: string]: {
+ versions: {
+ [version: string]: {
+ environment: {
+ [variableName: string]: {
+ type: 'password' | 'string' | 'number';
+ length?: number;
+ pattern?: 'uppercase' | 'lowercase' | 'normal';
+ min?: number; // For number type
+ max?: number; // For number type
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+Example:
+
+```javascript
+const envGeneration = {
+ 'library/mariadb': {
+ versions: {
+ '*': {
+ environment: {
+ 'MYSQL_ROOT_PASSWORD': {
+ type: 'password',
+ length: 16
+ },
+ 'MYSQL_DATABASE': {
+ type: 'string',
+ length: 12,
+ pattern: 'lowercase'
+ }
+ }
+ }
+ }
+ }
+};
+```
+
+#### `options.persistenceKey?: string`
+
+Optional. A unique key to maintain consistent generated environment variables across multiple calls to `listServices` or `translate`.
+
+### Return Value
+
+Returns an object where:
+
+- Keys are service names
+- Values are service configurations containing:
+ - `image`: Docker image name and tag
+ - `ports`: Array of port mappings
+ - `command`: Custom command (if specified)
+ - `restart`: Restart policy (if specified)
+ - `volumes`: Array of volume mappings (if specified)
+ - `environment`: Object of environment variables
+
+## Parse Environment File
+
+Parse a `.env` file content into a key-value object using the `parseEnvFile()` method. The method handles basic environment file syntax including comments and quoted values.
+
+### Example
+
+```typescript
+import { parseEnvFile } from '@deploystack/docker-to-iac';
+
+const envContent = `
+# Database settings
+DB_HOST=localhost
+DB_USER="admin"
+DB_PASS='secretpass'
+# Comment line
+NUMBERS=123456
+QUOTED="value=with=equals"
+`;
+
+const envVars = parseEnvFile(envContent);
+
+console.log('Parsed Environment Variables:');
+console.log(envVars);
+```
+
+#### Output
+
+```json
+{
+ "DB_HOST": "localhost",
+ "DB_USER": "admin",
+ "DB_PASS": "secretpass",
+ "NUMBERS": "123456",
+ "QUOTED": "value=with=equals"
+}
+```
+
+### Type
+
+```typescript
+parseEnvFile(content: string): Record
+```
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/example-of-a-new-parser.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/example-of-a-new-parser.mdx
new file mode 100644
index 0000000..571f608
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/example-of-a-new-parser.mdx
@@ -0,0 +1,383 @@
+---
+title: Example of a New Parser
+description: Example code for adding a new parser to docker-to-iac, supporting both Docker run commands and Docker Compose files, with multi-file output and service connections
+---
+
+# Adding a New Parser
+
+> [!TIP]
+> Thank you for your interest in collaborating! The docker-to-iac module will remain open source forever, helping simplify deployments across cloud providers without vendor lock-in.
+
+## Parser Implementation
+
+Create a new file inside `src/parsers/new-provider.ts`:
+
+```typescript
+import {
+ BaseParser,
+ ParserInfo,
+ TemplateFormat,
+ ParserConfig,
+ FileOutput,
+ DockerImageInfo
+} from './base-parser';
+import { ApplicationConfig } from '../types/container-config';
+import { parsePort } from '../utils/parsePort';
+import { parseCommand } from '../utils/parseCommand';
+
+// Define default configuration for your parser
+const defaultParserConfig: ParserConfig = {
+ files: [
+ {
+ path: 'awesome-iac.yaml',
+ templateFormat: TemplateFormat.yaml,
+ isMain: true,
+ description: 'Main IaC configuration file'
+ },
+ {
+ path: 'templates/resources.yaml',
+ templateFormat: TemplateFormat.yaml,
+ description: 'Additional resources configuration'
+ }
+ ],
+ cpu: 512,
+ memory: '1GB',
+ region: 'default-region',
+ subscriptionName: 'basic-tier'
+};
+
+// Optional: Add helper functions for your specific provider
+function getNewProviderServiceType(imageInfo: DockerImageInfo): string {
+ // Logic to determine service type based on image
+ // Example: Check if it's a database, web service, etc.
+ return 'web-service'; // Default type
+}
+
+// Optional: Add function to determine if an image is a managed service
+function isNewProviderManagedService(imageInfo: DockerImageInfo): boolean {
+ // Check if this image should be handled as a managed service
+ const imageUrl = `${imageInfo.repository}:${imageInfo.tag || 'latest'}`;
+ return imageUrl.includes('postgres') || imageUrl.includes('redis');
+}
+
+class NewProviderParser extends BaseParser {
+ // Multi-file implementation - required by BaseParser
+ parseFiles(config: ApplicationConfig): { [path: string]: FileOutput } {
+ // Initialize result containers
+ const services: Array = [];
+ const managedServices: Array = [];
+
+ // Track service mappings for managed services
+ const managedServiceMap = new Map();
+
+ // First pass: identify and register managed services
+ for (const [serviceName, serviceConfig] of Object.entries(config.services)) {
+ if (isNewProviderManagedService(serviceConfig.image)) {
+ // Create a managed service instead of a regular service
+ const managedName = `${serviceName}-managed`;
+
+ // Track the mapping for service connections later
+ managedServiceMap.set(serviceName, managedName);
+
+ // Add to managed services collection
+ managedServices.push({
+ name: managedName,
+ type: getNewProviderServiceType(serviceConfig.image),
+ // Add provider-specific managed service properties
+ plan: defaultParserConfig.subscriptionName
+ });
+
+ // Skip further processing of this service
+ continue;
+ }
+
+ // Regular services will be processed in the second pass
+ }
+
+ // Second pass: process regular services with their connections
+ for (const [serviceName, serviceConfig] of Object.entries(config.services)) {
+ // Skip managed services already processed
+ if (managedServiceMap.has(serviceName)) {
+ continue;
+ }
+
+ // Extract ports from service configuration
+ const ports = new Set();
+ if (serviceConfig.ports) {
+ serviceConfig.ports.forEach(port => {
+ if (typeof port === 'object' && port !== null) {
+ ports.add(port.container);
+ } else {
+ const parsedPort = parsePort(port);
+ if (parsedPort) {
+ ports.add(parsedPort);
+ }
+ }
+ });
+ }
+
+ // Prepare basic service definition
+ const service: any = {
+ name: serviceName,
+ type: getNewProviderServiceType(serviceConfig.image),
+ image: serviceConfig.image,
+ command: parseCommand(serviceConfig.command),
+ environment: []
+ };
+
+ // Add ports if available
+ if (ports.size > 0) {
+ service.ports = Array.from(ports);
+ }
+
+ // Process service connections if available
+ if (config.serviceConnections) {
+ // First add regular environment variables
+ for (const [key, value] of Object.entries(serviceConfig.environment)) {
+ // Check if this variable is handled by service connections
+ const isHandledByConnection = config.serviceConnections.some(conn =>
+ conn.fromService === serviceName &&
+ Object.keys(conn.variables).includes(key)
+ );
+
+ if (!isHandledByConnection) {
+ // Regular environment variable
+ service.environment.push({
+ key,
+ value: value.toString()
+ });
+ }
+ }
+
+ // Then add service connection variables with provider-specific syntax
+ for (const connection of config.serviceConnections) {
+ if (connection.fromService === serviceName) {
+ for (const [varName, varInfo] of Object.entries(connection.variables)) {
+ // Check if target is a managed service
+ if (managedServiceMap.has(connection.toService)) {
+ const targetName = managedServiceMap.get(connection.toService);
+
+ // Use provider-specific reference syntax
+ service.environment.push({
+ key: varName,
+ // Example: ${resources.MANAGED_SERVICE_NAME.CONNECTION_STRING}
+ value: `\${resources.${targetName}.${connection.property || 'connectionString'}}`
+ });
+ } else {
+ // Regular service connection
+ service.environment.push({
+ key: varName,
+ // Example: ${services.SERVICE_NAME.HOST_PORT}
+ value: `\${services.${connection.toService}.${connection.property || 'hostport'}}`
+ });
+ }
+ }
+ }
+ }
+ } else {
+ // No service connections, just add all environment variables
+ service.environment = Object.entries(serviceConfig.environment).map(([key, value]) => ({
+ key,
+ value: value.toString()
+ }));
+ }
+
+ // Add service to collection
+ services.push(service);
+ }
+
+ // Create main configuration
+ const mainConfig = {
+ version: '1.0',
+ provider: 'new-provider',
+ region: defaultParserConfig.region,
+ services
+ };
+
+ // Create resources configuration if we have managed services
+ const resourcesConfig = managedServices.length > 0 ? {
+ version: '1.0',
+ managedResources: managedServices
+ } : {};
+
+ // Return file mappings - the main file is required
+ const result: { [path: string]: FileOutput } = {
+ 'awesome-iac.yaml': {
+ content: this.formatFileContent(mainConfig, TemplateFormat.yaml),
+ format: TemplateFormat.yaml,
+ isMain: true
+ }
+ };
+
+ // Add resources file if we have managed services
+ if (managedServices.length > 0) {
+ result['templates/resources.yaml'] = {
+ content: this.formatFileContent(resourcesConfig, TemplateFormat.yaml),
+ format: TemplateFormat.yaml
+ };
+ }
+
+ return result;
+ }
+
+ getInfo(): ParserInfo {
+ return {
+ providerWebsite: "https://newprovider.example.com",
+ providerName: "New Provider Cloud",
+ providerNameAbbreviation: "NP",
+ languageOfficialDocs: "https://docs.newprovider.example.com/iac",
+ languageAbbreviation: "NP",
+ languageName: "New Provider IaC",
+ defaultParserConfig
+ };
+ }
+}
+
+export default new NewProviderParser();
+```
+
+## Configuration and Provider-Specific Logic
+
+### Service Type Detection
+
+Create a file for service type configuration in `src/config/newprovider/service-types.ts`:
+
+```typescript
+interface NewProviderServiceTypeConfig {
+ type: string;
+ description: string;
+ versions: string;
+ isManaged?: boolean;
+}
+
+interface NewProviderServiceTypesConfig {
+ serviceTypes: {
+ [key: string]: NewProviderServiceTypeConfig;
+ };
+}
+
+export const newProviderServiceTypesConfig: NewProviderServiceTypesConfig = {
+ serviceTypes: {
+ 'docker.io/library/mariadb': {
+ type: 'database',
+ description: 'MariaDB database service',
+ versions: '*'
+ },
+ 'docker.io/library/postgres': {
+ type: 'database',
+ description: 'PostgreSQL database',
+ versions: '*',
+ isManaged: true
+ },
+ 'docker.io/library/redis': {
+ type: 'cache',
+ description: 'Redis cache',
+ versions: '*',
+ isManaged: true
+ }
+ }
+};
+
+export function getNewProviderServiceType(imageString: string): string {
+ const baseImage = imageString.split(':')[0];
+ return newProviderServiceTypesConfig.serviceTypes[baseImage]?.type || 'web';
+}
+
+export function isNewProviderManagedService(imageString: string): boolean {
+ const baseImage = imageString.split(':')[0];
+ return !!newProviderServiceTypesConfig.serviceTypes[baseImage]?.isManaged;
+}
+
+export type { NewProviderServiceTypeConfig, NewProviderServiceTypesConfig };
+```
+
+### Service Connection Properties
+
+Update the service connection properties in `src/config/connection-properties.ts`:
+
+```typescript
+export const servicePropertyMappings: Record = {
+ 'host': {
+ render: 'host',
+ digitalOcean: 'PRIVATE_DOMAIN',
+ newProvider: 'HOST' // Add your provider mapping
+ },
+ 'port': {
+ render: 'port',
+ digitalOcean: 'PRIVATE_PORT',
+ newProvider: 'PORT' // Add your provider mapping
+ },
+ 'hostport': {
+ render: 'hostport',
+ digitalOcean: 'PRIVATE_URL',
+ newProvider: 'ENDPOINT' // Add your provider mapping
+ }
+};
+
+export const databasePropertyMappings: Record = {
+ 'connectionString': {
+ render: 'connectionString',
+ digitalOcean: 'DATABASE_URL',
+ newProvider: 'CONNECTION_STRING' // Add your provider mapping
+ },
+ // Add other mappings...
+};
+```
+
+## Adding Your Parser to the System
+
+Update `src/index.ts` to include your new parser:
+
+```typescript
+// Import your new parser
+import newProviderParserInstance from './parsers/new-provider';
+
+// Add it to the parsers array
+const parsers: BaseParser[] = [
+ cloudFormationParserInstance,
+ renderParserInstance,
+ digitalOceanParserInstance,
+ newProviderParserInstance // Add your parser here
+];
+```
+
+## Testing
+
+Please read our guidelines for testing parsers in the [Testing section](/docs/docker-to-iac/testing).
+
+## New parser documentation
+
+Please update documentation in the [github.com/deploystackio/documentation](https://github.com/deploystackio/documentation) repository.
+
+## Checklist
+
+1. Support both input types:
+ - Docker run commands
+ - Docker Compose files
+
+2. Handle all service types:
+ - Regular web/application services
+ - Managed database services
+ - Cache services
+
+3. Handle resource mappings consistently:
+ - Container ports
+ - Environment variables
+ - Volume mounts
+ - Resource limits
+ - Service connections
+
+4. Process service connections correctly:
+ - Service-to-service references
+ - Service-to-managed-service references
+ - Use provider-specific connection syntax
+
+5. Provide clear error messages for:
+ - Unsupported features
+ - Invalid configurations
+ - Missing required fields
+
+6. Test edge cases:
+ - Multiple services with interdependencies
+ - Complex configurations with service connections
+ - Various image formats and service types
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/index.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/index.mdx
new file mode 100644
index 0000000..09c73a0
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/index.mdx
@@ -0,0 +1,50 @@
+---
+title: Docker to Infrastructure 2
+description: Introduction to the node module docker-to-iac which allows you to transfer docker-compose into IaC templates
+sidebar: docker-to-iac
+---
+
+# Docker to Infrastructure as Code Module
+
+Docker to IaC is a Node.js module that translates the `docker-compose.yml` file into various types of Infrastructure as Code (IaC) templates. The goal of the module is to make GitHub repositories with docker-compose more easily accessible to various cloud providers such as Amazon Web Services (AWS), Google Cloud, DigitalOcean, and so on.
+
+- GitHub repository: [github.com/deploystackio/docker-to-iac](https://github.com/deploystackio/docker-to-iac)
+- npm registry: [npmjs.com/package/@deploystack/docker-to-iac](https://www.npmjs.com/package/@deploystack/docker-to-iac)
+
+## Motivation
+
+The project's motivation comes from the fact that there are so many cloud providers on the free market that it is impossible to know all of them.
+
+How the project came about: you found an open source project that you want to deploy to your cloud provider, you found the `docker-compose.yml` file, and now you have to extract all the variables by hand or write the Infrastructure as Code template yourself because your company IT policy at work does not allow deployments without IaC. 😀
+
+That's how it can work! That's why we want to simplify deployments and minimize vendor lock-in.
+
+The focus of this project, however, is on container applications with `docker-compose.yml` or applications that can be containerized.
+
+## Highlights
+
+- List of all available parsers from module
+- Support for docker-compose multiple services
+- Setup for default settings for each cloud provider (i.e. CPU, RAM)
+- Docker Compose services variables supported:
+ - image, command, port, environment
+
+## How does it work?
+
+The principle of the translation is straightforward. You need a `docker-compose.yml` file and the desired cloud provider where you want to deploy your container. The docker-to-iac module translates `docker-compose.yml` into an IaC or one-click deploy template.
+
+After the successful translation, you can deploy your containers to your cloud provider.
+
+## Limitations
+
+- Only pre-build container possible
+
+Please read more at the [limitations page](/docs/docker-to-iac/limitations.md)
+
+## Help wanted
+
+We would be very happy if you could help us to extend the docker-to-iac module to include additional cloud providers (parsers). All open source repositories listed on our [deploystack.io](https://deploystack.io) website would benefit from this.
+
+If the docker-to-iac module is extended with another parser, our backend automatically creates an update for the repository [github.com/deploystackio/deploy-templates](https://github.com/deploystackio/deploy-templates). Baiscally: if you add a new parser for the provider "foo-cloud" that has its own IaC language, or one-click deployment supported, all open source projects listed on deploystack.io will be extended with the IaC template for cloud provider "foo-cloud".
+
+Thank you!
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/limitations.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/limitations.mdx
new file mode 100644
index 0000000..8ba65ba
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/limitations.mdx
@@ -0,0 +1,89 @@
+---
+title: Limitations
+description: Current limitations and constraints of the docker-to-iac module
+---
+
+# Limitations for docker-to-iac module
+
+## Registry Support
+
+The module currently supports Docker images from -> please check [Supported Registries for docker-to-iac module](/docs/docker-to-iac/supported-registries.md)
+
+## Docker Image Requirement
+
+The `docker-to-iac` module is designed to work exclusively with pre-built Docker images. This means that each service in your `docker-compose.yml` file must specify an `image` property.
+
+## Volume Support
+
+When working with volume mappings in your Docker configuration, be aware that volume support varies among cloud providers:
+
+- Some providers fully support multiple volume mappings
+- Some providers only support the first volume mapping defined in your configuration
+- Some providers support ephemeral files only, meaning no persistent volume storage is available
+- Volume mapping implementation details can differ between providers
+
+Please check the specific provider's documentation to understand their volume mapping capabilities and limitations before deployment.
+
+For example, if your Docker configuration includes multiple volumes:
+
+```yaml
+services:
+ app:
+ image: nginx:latest
+ volumes:
+ - ./config:/etc/nginx/conf.d
+ - ./logs:/var/log/nginx
+ - ./data:/usr/share/nginx/html
+```
+
+Depending on your chosen provider:
+
+- All volume mappings might be supported
+- Only the first volume mapping (`./config:/etc/nginx/conf.d`) might be implemented
+- No volumes might be supported, with only ephemeral storage available
+
+We recommend reviewing your target provider's documentation for detailed information about their volume support capabilities.
+
+### Build Instructions Not Supported
+
+The module does not support services that use the `build` directive. For example:
+
+```yaml [docker-compose.yml]
+# ❌ Not Supported
+services:
+ app:
+ build:
+ context: ./build/app
+ dockerfile: Dockerfile
+```
+
+Instead, you must use pre-built images:
+
+```yaml [docker-compose.yml]
+# ✅ Supported
+services:
+ app:
+ image: nginx:latest
+```
+
+#### Rationale
+
+This limitation exists because Infrastructure as Code (IaC) templates require specific, immutable container images to ensure consistent deployments. The infrastructure and the selection of cloud providers for this docker-to-iac module only allow pre-build container images. It is technically not possible to create a build with the preconfigured infrastructure. This is why the pre-build check was built in. This happens also because the scope of this module is only pre-build container.
+
+### Workaround
+
+If you need to use custom Docker images:
+
+Build your Docker images locally or in your CI/CD pipeline
+Push them to a container registry (like Docker Hub, GitHub Container Registry, or AWS ECR)
+Reference the pushed image in your docker-compose file using the image property
+
+For example:
+
+```yaml
+services:
+ app:
+ image: ghcr.io/your-org/your-app:1.0.0
+```
+
+This ensures that your IaC templates will have access to the exact same container image across all deployments.
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/multi-services-support.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/multi-services-support.mdx
new file mode 100644
index 0000000..9645e4e
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/multi-services-support.mdx
@@ -0,0 +1,78 @@
+---
+title: Multi-Service Support
+description: Learn about multi-service deployment support - See how docker-to-iac handles multiple services in your container configurations.
+---
+
+# Multi-Service Support
+
+Multi-service support refers to the ability of a [parser](/docs/docker-to-iac/parser-explanation) to handle multiple container configurations when translating to Infrastructure as Code (IaC) templates.
+
+## Docker Run vs Docker Compose
+
+### Docker Run Commands
+
+By nature, Docker run commands define a single container. When you have multiple Docker run commands, each represents a separate service:
+
+```bash
+# Service 1
+docker run -d -p 8080:80 nginx:alpine
+
+# Service 2
+docker run -d -p 6379:6379 redis:latest
+```
+
+### Docker Compose
+
+Docker Compose files can define multiple services within a single file:
+
+```yaml title="docker-compose.yml"
+version: '3.2'
+
+services:
+ web:
+ image: nginx:alpine
+ ports:
+ - '8080:80'
+
+ cache:
+ image: redis:latest
+ ports:
+ - '6379:6379'
+```
+
+## Parser Support for Multiple Services
+
+The ability to deploy multiple services simultaneously varies by cloud provider:
+
+### Full Multi-Service Support
+
+Some cloud providers can deploy multiple containers as part of a single deployment. In these cases, docker-to-iac will translate all services to the target IaC template:
+
+```javascript
+// All services will be included in the translation
+const translation = translate(dockerComposeContent, {
+ source: 'compose',
+ target: 'CFN' // AWS CloudFormation supports multiple services
+});
+```
+
+### Limited Service Support
+
+Some providers don't support deploying multiple containers simultaneously. For these providers:
+
+- For Docker Compose input: Only the first service from the file will be translated
+- For Docker run commands: Each command must be translated separately
+
+```javascript
+// Only the first service will be translated
+const translation = translate(dockerComposeContent, {
+ source: 'compose',
+ target: 'RND' // Render.com currently supports single service deployments
+});
+```
+
+## Provider-Specific Behavior
+
+Before using a specific parser, check its multi-service capabilities in the [parser documentation](/docs/docker-to-iac/parser-explanation). This helps ensure your deployment strategy aligns with the provider's capabilities.
+
+Note that some providers may have different service limits or deployment patterns even when they support multiple services. Always consult the target provider's documentation for specific limitations.
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser-explanation.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser-explanation.mdx
new file mode 100644
index 0000000..ca69734
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser-explanation.mdx
@@ -0,0 +1,61 @@
+---
+title: Parser Explanation
+description: Understand how parsers translate Docker run commands and Docker Compose files into cloud-specific Infrastructure as Code templates. Learn about provider configurations and language support.
+---
+
+# Parser Explanation in docker-to-iac
+
+A parser in docker-to-iac translates Docker configurations (either Docker run commands or docker-compose.yml files) into Infrastructure as Code (IaC) or One-Click Deploy templates. Each parser is designed to target a specific IaC language or cloud provider template format.
+
+## Input Types
+
+docker-to-iac can process two types of input:
+
+### Docker Run Commands
+
+```bash
+docker run -d -p 8080:80 -e NODE_ENV=production nginx:latest
+```
+
+### Docker Compose Files
+
+```yaml
+version: '3'
+services:
+ web:
+ image: nginx:latest
+ ports:
+ - "8080:80"
+ environment:
+ NODE_ENV: production
+```
+
+## API
+
+For detailed API documentation, see the [parser API reference](/docs/docker-to-iac/api).
+
+## Default Parser Config
+
+Each parser includes default configurations specific to its target cloud provider. These defaults are necessary because providers have different compute specifications and limitations.
+
+Example: AWS Fargate has a minimum CPU allocation of 256, while DigitalOcean's [minimum setting is 1 vCPU](https://www.digitalocean.com/pricing/app-platform). The default parser config handles these provider-specific requirements.
+
+To retrieve default parser configurations through the API, see the [parser info documentation](/docs/docker-to-iac/api#get-parser-info).
+
+## Parser vs. Language
+
+The [ParserInfo type](https://github.com/deploystackio/docker-to-iac/blob/main/src/parsers/base-parser.ts) separates variables between `Provider` and `Language`. This separation exists because some cloud providers support multiple IaC languages.
+
+For example, AWS infrastructure can be defined using:
+
+- CloudFormation
+- AWS CDK (for TypeScript, Python, etc.)
+- Terraform
+
+When adding new parsers, consider whether multiple IaC languages are possible for your target provider. This affects how you name your parser file in `src/parsers/.ts`. It's why the [`translate()`](/docs/docker-to-iac/api#translate-api) method requires the target IaC language name (e.g., `CFN`) rather than the provider name (e.g., `AWS`).
+
+## Parser Implementation Notes
+
+Creating parsers for multi-cloud IaC tools like Terraform presents additional challenges. Terraform's [extensive provider ecosystem](https://registry.terraform.io/browse/providers) means a Terraform parser would need complex logic to handle various provider-specific implementations, making maintenance more difficult.
+
+In contrast, single-provider languages like AWS CloudFormation have a one-to-one relationship with their cloud provider, simplifying parser implementation and maintenance.
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser/aws-cloudformation.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser/aws-cloudformation.mdx
new file mode 100644
index 0000000..30861bb
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser/aws-cloudformation.mdx
@@ -0,0 +1,97 @@
+---
+title: AWS CloudFormation Parser
+description: Translate docker docker-compose.yml file into AWS Cloud Formation with DeployStack
+---
+
+# AWS CloudFormation - Parser Full Documentation
+
+The parser for CloudFormation translates the `docker-compose.yml` file into CloudFormation. The parser logic can be found in GitHub inside [docker-to-iac repo](https://github.com/deploystackio/docker-to-iac/blob/main/src/parsers/aws-cloudformation.ts).
+
+## Parser language abbreviation for API
+
+- `languageAbbreviation`: `CFN`.
+
+## Prerequisite to deploy CloudFormation Template
+
+To deploy the CloudFormation template in your AWS account, you need a VPC with internet access. It should also be possible to create ENI ([AWS Elastic Network Interface](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html)) with public IP. The template uses __AWS Fargate__ without an Application Load Balancer to save costs.
+
+If you have the [default VPC](https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html) in your AWS account that should be sufficient.
+
+## Architecture
+
+The architecture deploys an ECS service into a serverless [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) cluster. An ECS service = service from `docker-compose.yml`. This means if you have two services in your docker-compose file, you will end up deploying two ECS services into your Fargate cluster.
+
+
+
+The tasks within ECS services create an ENI that has a public IP address. Since we do not use an ALB ([Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)), you can only access the tasks via the port and the public IP address.
+
+When creating CloudFormation template, we decided not to use ALB to save costs. You can of course modify the CloudFormation template and add your ALB if needed.
+
+## Security Configuration
+
+### Container Security Groups
+
+For development and testing purposes, the template configures security groups with open TCP ports (0-65535). This configuration enables easy testing but is not recommended for production use. If you plan to use this template in production, modify the security group rules to restrict access to specific ports.
+
+```yaml
+SecurityGroupIngress:
+ - IpProtocol: tcp
+ FromPort: 0
+ ToPort: 65535
+ CidrIp: 0.0.0.0/0
+```
+
+### Container Root Filesystem
+
+To enable writes to ephemeral ECS storage, containers are configured with:
+
+```yaml
+ReadonlyRootFilesystem: false
+```
+
+## Default output format
+
+- The default output format for this parser: `YAML`.
+
+## File Configuration
+
+The AWS CloudFormation parser generates a single consolidated template:
+
+- `aws-cloudformation.cf.yml` - The comprehensive CloudFormation template that defines all resources including ECS clusters, services, tasks, security groups, and IAM roles
+
+This single-file approach encapsulates the entire infrastructure definition in YAML format, making it ready for immediate deployment through the AWS CloudFormation console, CLI, or other AWS deployment tools.
+
+## Supported Docker Compose Variables
+
+The current version supports the following Docker Compose variables:
+
+For __services__:
+
+- image
+- environment
+- ports
+- command
+
+
+The supported variables that are not on this list are ignored. This means that they are not translated by the parser in Infrastructure as Code from `docker-compose.yml` or docker run command.
+
+
+## Storage Support
+
+The current implementation uses ephemeral storage provided by AWS Fargate. Persistent storage solutions like EFS (Elastic File System) or EBS (Elastic Block Store) are not automatically configured due to complexity with multiple mount points and automated deployment requirements.
+
+For applications requiring persistent storage, consider:
+
+- Using external storage services (e.g., Amazon RDS for databases)
+- Manually configuring EBS volumes
+- Implementing a custom storage solution
+
+## Multi Services Support
+
+Multi `services` support for CloudFormation: __yes__
+
+Please read more about [multi service support here](/docs/docker-to-iac/multi-services-support).
+
+
+This CloudFormation template is designed for development and testing environments. For production deployments, review and adjust security groups, storage configuration, and other security settings according to your requirements.
+
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser/digitalocean.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser/digitalocean.mdx
new file mode 100644
index 0000000..5ea2624
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser/digitalocean.mdx
@@ -0,0 +1,189 @@
+---
+title: DigitalOcean Parser
+description: Translate docker docker-compose.yml file into DigitalOcean Infrastructure as Code with DeployStack
+---
+
+# DigitalOcean - Parser Full Documentation
+
+The parser for DigitalOcean translates the `docker-compose.yml` file into a DigitalOcean [App Spec](https://docs.digitalocean.com/products/app-platform/) template. The parser logic can be found in GitHub inside the [docker-to-iac repo](https://github.com/deploystackio/docker-to-iac/blob/main/src/parsers/digitalocean.ts).
+
+## Parser language abbreviation for API
+
+- `languageAbbreviation`: `DOP`.
+
+## Prerequisite to deploy DigitalOcean App Spec
+
+To use the DigitalOcean App Spec, you need a valid DigitalOcean account with access to the App Platform and sufficient credits.
+
+## Architecture
+
+The DigitalOcean App Spec will deploy your application entirely within App Platform using containerized services:
+
+### App Platform Services
+
+Services in your App Platform deployment fall into two categories:
+
+#### HTTP Services
+
+- Web-facing containers that serve HTTP traffic
+- Automatically configured with HTTPS routing:
+ - First service gets the root path `/`
+ - Additional services receive paths based on their names, e.g., `/servicename`
+- Ideal for web applications, APIs, and frontend services
+
+#### TCP Services
+
+- Database containers (MySQL, PostgreSQL, Redis, etc.) run as internal TCP services
+- Configured with appropriate health checks and internal ports
+- No external HTTP routing - only accessible by other services within the app
+- Suitable for databases, caches, and message queues
+
+### Important Note About Databases
+
+While DigitalOcean offers managed database services, these cannot be automatically provisioned through one-click deployment. Instead, database containers (like MySQL, PostgreSQL, Redis) are deployed as TCP services within App Platform, allowing:
+
+- Immediate deployment without pre-existing infrastructure
+- Internal communication between application components
+- Simplified configuration for development and testing
+
+For production use cases where you need managed databases, you should:
+
+1. Manually create managed databases in your DigitalOcean account
+2. Update the application configuration to use these managed instances
+
+After deployment, all services can be monitored and managed through your DigitalOcean App Platform dashboard.
+
+## Default output format
+
+- The default output format for this parser: `YAML`.
+
+## File Configuration
+
+The DigitalOcean parser generates a structured output with a specific file organization:
+
+- `.do/deploy.template.yaml` - The main App Platform specification file that defines all services, environment variables, and configuration options for deployment
+
+This single-file structure follows DigitalOcean's App Platform requirements, where all deployment configurations are contained within the standard location expected by the DigitalOcean CLI and deployment tools.
+
+## Supported Docker Compose Variables
+
+This parser supports the following Docker Compose variables for services:
+
+- image
+- environment
+- ports
+- command
+
+
+Supported variables not listed above will be ignored. They will not be translated into the Infrastructure as Code from `docker-compose.yml` or docker run command.
+
+
+## Database Support
+
+DigitalOcean App Platform supports running database containers as internal TCP services. The parser automatically configures these services with appropriate health checks and port settings to ensure proper communication within your application.
+
+### Supported Databases
+
+The parser recognizes and configures the following database types:
+
+- MySQL/MariaDB (port 3306)
+- PostgreSQL (port 5432)
+- Redis (port 6379)
+- MongoDB (port 27017)
+
+### Configuration Details
+
+Database service configurations are defined in `src/config/digitalocean/database-types.ts`. This configuration maps Docker images to their corresponding TCP port and health check settings.
+
+To add or modify database configurations:
+
+1. Locate the `database-types.ts` file
+2. Edit the `digitalOceanDatabaseConfig` object
+3. Define the mapping using this structure:
+
+```typescript
+'docker.io/library/mariadb': {
+ engine: 'MYSQL',
+ description: 'MariaDB database service - maps to MySQL managed database due to compatibility',
+ portNumber: 3306
+}
+```
+
+### Example Transformation
+
+Original docker-compose.yml:
+
+```yaml
+services:
+ db:
+ image: mariadb:11.2
+ environment:
+ MYSQL_DATABASE: myapp
+ app:
+ image: nginx:alpine
+ ports:
+ - "80:80"
+```
+
+Generated App Spec:
+
+```yaml
+spec:
+ services:
+ - name: db
+ image:
+ registry_type: DOCKER_HUB
+ registry: library
+ repository: mariadb
+ tag: "11.2"
+ health_check:
+ port: 3306
+ internal_ports:
+ - 3306
+ - name: app
+ image:
+ registry_type: DOCKER_HUB
+ registry: library
+ repository: nginx
+ tag: alpine
+ http_port: 80
+ routes:
+ - path: /
+```
+
+
+While running databases as App Platform services works well for development and testing, for production workloads consider using DigitalOcean's managed database offerings for better reliability and maintenance.
+
+
+### Understanding TCP Services
+
+When a database image is detected, the parser:
+
+1. Configures the service without HTTP routing
+2. Sets up appropriate internal ports for database communication
+3. Adds health checks on the database's standard port
+4. Ensures the service can communicate with other containers in your app
+
+This approach allows immediate deployment while maintaining proper isolation and communication between your application components.
+
+## Volume Support
+
+DigitalOcean App Platform supports ephemeral files only. This means:
+
+- No persistent volume storage is available
+- Local filesystem is limited to 2GB
+- Files are temporary and will be deleted after deployments or container replacements
+- Each container instance has its own separate filesystem
+- Changes to the filesystem are lost when instances are scaled or redeployed
+
+
+Any `volumes` directives in your docker-compose.yml or docker run command will be ignored during the translation to App Platform specifications.
+
+
+## Multi Services Support
+
+Multi `services` support for DigitalOcean: __yes__
+
+DigitalOcean supports multiple services in a single App Spec file.
+
+Please read more about [multi service support here](/docs/docker-to-iac/multi-services-support).
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser/helm.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser/helm.mdx
new file mode 100644
index 0000000..b99c6ea
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser/helm.mdx
@@ -0,0 +1,210 @@
+---
+title: Helm Parser Documentation
+description: Translate Docker Compose files into Kubernetes Helm Charts with DeployStack docker-to-iac module
+---
+
+# Helm - Parser Full Documentation
+
+The parser for Helm translates Docker configurations into Kubernetes Helm Charts. The parser logic can be found in GitHub inside the [docker-to-iac repo](https://github.com/deploystackio/docker-to-iac/blob/main/src/parsers/helm.ts).
+
+## Parser language abbreviation for API
+
+- `languageAbbreviation`: `HELM`.
+
+## Prerequisite to deploy Helm Charts
+
+To deploy the generated Helm Charts, you need:
+
+- A Kubernetes cluster (local or cloud-based)
+- Helm CLI installed (version 3.x recommended)
+- Appropriate RBAC permissions to deploy resources in your target namespace
+
+### Kubernetes Resources
+
+The generated Helm Chart creates the following Kubernetes resources for each service in your Docker configuration:
+
+- **Deployments**: Container specifications, replica count, resource limits
+- **Services**: Network access to your pods with appropriate ports
+- **ConfigMaps**: Non-sensitive environment variables
+- **Secrets**: Sensitive environment variables (passwords, tokens, etc.)
+
+### Database Support
+
+For database services, the parser leverages Helm's dependency management to incorporate official Bitnami charts:
+
+- **MySQL/MariaDB**: Uses Bitnami's MySQL/MariaDB chart
+- **PostgreSQL**: Uses Bitnami's PostgreSQL chart
+- **Redis**: Uses Bitnami's Redis chart
+- **MongoDB**: Uses Bitnami's MongoDB chart
+
+Each database dependency is configured with appropriate defaults and includes persistent storage for data.
+
+## Default output format
+
+- The default output format for this parser: `YAML`.
+
+## File Configuration
+
+The Helm parser generates a complete Helm Chart directory structure:
+
+- `Chart.yaml` - The main chart definition with metadata and dependencies
+- `values.yaml` - Configuration values that can be customized at deployment time
+- `templates/` - Directory containing Kubernetes YAML templates:
+ - `deployment.yaml` - Deployment specifications for each service
+ - `service.yaml` - Service definitions for network access
+ - `configmap.yaml` - ConfigMap for non-sensitive environment variables
+ - `secret.yaml` - Secret for sensitive environment variables
+ - `_helpers.tpl` - Helper functions for template generation
+ - `NOTES.txt` - Usage instructions displayed after installation
+
+This multi-file approach follows the standard Helm Chart structure and allows for maximum flexibility when deploying to Kubernetes.
+
+## Supported Docker Compose Variables
+
+This parser supports the following Docker Compose variables:
+
+- `image`
+- `environment`
+- `ports`
+- `command`
+- `volumes`
+
+
+The parser automatically detects sensitive environment variables (containing keywords like "password", "secret", "key", "token", or "auth") and places them in Kubernetes Secrets instead of ConfigMaps.
+
+
+## Volume Support
+
+The parser supports Docker volume mappings by converting them to Kubernetes volume mounts:
+
+- Each volume is converted to a hostPath volume by default
+- Volume names are sanitized to conform to Kubernetes naming conventions
+- For production use, you should modify the generated templates to use more appropriate volume types (PersistentVolumeClaims, etc.)
+
+## Database Integration
+
+When a database service is detected (MySQL, PostgreSQL, Redis, MongoDB), the parser:
+
+1. Adds the corresponding Bitnami Helm chart as a dependency in `Chart.yaml`
+2. Configures database settings in `values.yaml`
+3. Maps environment variables to the expected format for the database chart
+4. Sets up appropriate persistence configurations
+
+### Example Database Configuration
+
+For a PostgreSQL database in your Docker Compose file:
+
+```yaml
+services:
+ db:
+ image: postgres:13
+ environment:
+ POSTGRES_USER: myuser
+ POSTGRES_PASSWORD: mypassword
+ POSTGRES_DB: myapp
+```
+
+The parser will create:
+
+```yaml
+# In Chart.yaml
+dependencies:
+ - name: db
+ repository: https://charts.bitnami.com/bitnami
+ version: ^12.0.0
+ condition: dependencies.db.enabled
+
+# In values.yaml
+dependencies:
+ db:
+ enabled: true
+ auth:
+ postgres:
+ password: mypassword
+ database: myapp
+ username: myuser
+ password: mypassword
+ primary:
+ service:
+ ports:
+ postgresql: 5432
+ persistence:
+ enabled: true
+ size: 8Gi
+```
+
+## Service Connections
+
+The parser supports service-to-service connections by leveraging Kubernetes DNS for service discovery. When a service refers to another service in an environment variable, the parser automatically configures the appropriate DNS references.
+
+For example, if your `app` service connects to a `db` service:
+
+```yaml
+# Docker Compose
+services:
+ app:
+ image: myapp
+ environment:
+ DATABASE_URL: postgresql://postgres:password@db:5432/mydb
+
+ db:
+ image: postgres
+ environment:
+ POSTGRES_PASSWORD: password
+ POSTGRES_DB: mydb
+```
+
+The parser will create:
+
+```yaml
+# In ConfigMap template
+data:
+ DATABASE_URL: {{ include "deploystack.serviceReference" (dict "service" (index $.Values.services "db") "serviceKey" "db") }}
+```
+
+Which resolves to the Kubernetes DNS name: `db.{{ .Release.Namespace }}.svc.cluster.local:5432`
+
+## Multi Services Support
+
+Multi `services` support for Helm: **yes**
+
+Helm Charts are designed to handle multiple services and dependencies in a single deployment, making them ideal for complex applications. The parser transforms all services from your Docker Compose file into corresponding Kubernetes resources.
+
+Please read more about [multi service support here](/docs/docker-to-iac/multi-services-support).
+
+## Deployment Instructions
+
+To deploy the generated Helm Chart:
+
+1. Navigate to the directory containing the generated chart
+2. Install dependencies:
+
+ ```bash
+ helm dependency update
+ ```
+
+3. Install the chart:
+
+ ```bash
+ helm install my-release .
+ ```
+
+4. For custom configurations:
+
+ ```bash
+ helm install my-release . --set services.app.replicaCount=2
+ ```
+
+## Production Considerations
+
+For production deployments, consider the following modifications to the generated chart:
+
+1. Replace hostPath volumes with appropriate persistent volume claims
+2. Adjust resource limits in `values.yaml`
+3. Configure proper ingress settings for external access
+4. Enable and configure horizontal pod autoscaling
+5. Set up proper liveness and readiness probes
+
+
+The generated Helm Chart is a starting point that you should review and customize to match your production requirements and security best practices.
+
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser/index.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser/index.mdx
new file mode 100644
index 0000000..87c45ce
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser/index.mdx
@@ -0,0 +1,14 @@
+---
+title: Available parsers
+description: View all available parsers in docker-to-iac for converting Docker Compose to cloud infrastructure templates. Supports major cloud providers.
+menuTitle: Available parser
+---
+
+# Available parser list for module docker-to-iac
+
+Here you can find the list of available [parsers](/docs/docker-to-iac/parser-explanation.md):
+
+- [AWS CloudFormation](/docs/docker-to-iac/parser/aws-cloudformation.md)
+- [Render.com](/docs/docker-to-iac/parser/render.com.md)
+- [DigitalOcean](/docs/docker-to-iac/parser/digitalocean.md)
+- [Helm (Kubernetes)](/docs/docker-to-iac/parser/helm.md)
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser/render.com.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser/render.com.mdx
new file mode 100644
index 0000000..926c2fe
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/parser/render.com.mdx
@@ -0,0 +1,133 @@
+---
+title: Render.com - Parser Full Documentation
+description: Translate docker docker-compose.yml file into Render.com Infrastructure as Code with DeployStack
+---
+
+# Render.com - Parser Full Documentation
+
+The parser for Render.com translates the `docker-compose.yml` file into Render [BluePrint](https://render.com/docs/infrastructure-as-code). The parser logic can be found in GitHub inside [docker-to-iac repo](https://github.com/deploystackio/docker-to-iac/blob/main/src/parsers/render.ts).
+
+## Parser language abbreviation for API
+
+- `languageAbbreviation`: `RND`.
+
+## Prerequisite to deploy Render BluePrint
+
+There are no special requirements for using the Render.com blueprint. However, you need a valid render.com account with sufficient credits.
+
+## Architecture
+
+The BluePrint will create a render "web" service.
+
+Type = "[Web Service](https://render.com/docs/blueprint-spec#type)".
+
+Render dashboard will list all your web services. At the top, you can switch between Dashboard and BluePrints.
+
+
+
+After the BluePrint has been created through one-click deployment, the BluePrint will be visible in the BluePrint menu.
+
+In contrast to other cloud providers, Render.com's usability is very trivial. There is no VPC / VNet or anything else. After successful deployment, you can open your service via a URL.
+
+## Default output format
+
+- The default output format for this parser: `YAML`.
+
+## File Configuration
+
+The Render.com parser generates a single file output:
+
+- `render.yaml` - The main Blueprint configuration file that defines all services, environment variables, and disk configurations
+
+This straightforward single-file approach aligns with Render's Blueprint specification, which requires all service definitions to be contained within a single YAML file. The file is structured according to Render's requirements with services, environment variables, and disk configurations properly organized for immediate deployment.
+
+## Supported Docker Compose Variables
+
+The current version supports the following Docker Compose variables:
+
+For __services__:
+
+- image
+- environment
+- ports
+- command
+
+
+The supported variables that are not on this list are ignored. This means that they are not translated by the parser in Infrastructure as Code from `docker-compose.yml` or docker run command.
+
+
+## Volume Support
+
+Render.com offers two types of storage options:
+
+### Default: Ephemeral Filesystem
+
+By default, Render services use an ephemeral filesystem where:
+
+- Changes to the filesystem are lost after deployments or restarts
+- Each service instance has its own separate filesystem
+- No data persists between deployments
+
+### Persistent Disk Option
+
+The parser supports adding persistent disk storage through the `volumes` directive:
+
+- Persistent disks are automatically configured with 10GB size
+- Only one disk per service is supported
+- Files are preserved across deployments and restarts
+- Only filesystem changes under the disk's mount path are preserved
+
+Important limitations for persistent disks:
+
+- A disk can only be accessed by a single service instance
+- Services with persistent disks cannot scale to multiple instances
+
+Read more here: [render.com/docs/disks](https://render.com/docs/disks)
+
+## Service Types
+
+The parser automatically determines the appropriate service type for each container in your Docker configuration:
+
+### Web Services (Default)
+
+By default, services are created as `type: web`, which is suitable for:
+
+- HTTP-based applications
+- Frontend applications
+- API servers
+- Any service that needs to be publicly accessible
+
+### Private Services
+
+For databases and other TCP-based services, the parser automatically sets `type: pserv`. These services:
+
+- Are not publicly accessible
+- Can communicate with other services over TCP
+- Are ideal for databases and backend services
+
+Read more here: [render.com/docs/private-services](https://render.com/docs/private-services).
+
+The service type is determined based on the Docker image being used. For example:
+
+```yaml
+services:
+ web:
+ image: nginx:latest
+ # Automatically set to type: web
+
+ db:
+ image: mariadb:11.2
+ # Automatically set to type: pserv
+```
+
+### Adding New Service Types
+
+If you're using a service that should be private but isn't automatically detected, please visit our [Render: Contributing to Render Service Types docs page](/docs/docker-to-iac/render-contributing-to-service-types).
+
+## Multi Services Support
+
+Multi `services` support for Render.com: __yes__
+
+Since [multi services](https://render.com/docs/blueprint-spec#root-level-fields) feature is supported.
+
+Please read more about [multi service support here](/docs/docker-to-iac/multi-services-support).
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/project-structure.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/project-structure.mdx
new file mode 100644
index 0000000..1c4126c
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/project-structure.mdx
@@ -0,0 +1,175 @@
+---
+title: Project Structure
+description: Directory structure and organization of the docker-to-iac module, including guidance for adding new parsers, source handlers, and tests.
+---
+
+# Project Structure of docker-to-iac Module
+
+The project follows standard npm module organization with a well-defined structure to handle both Docker run commands and Docker Compose files, supporting multiple output formats and comprehensive testing.
+
+## Directory Structure
+
+```bash
+docker-to-iac/
+|-- src/ # Source code
+| |-- index.ts # Main entry point
+| |-- config/ # Provider-specific configurations
+| | |-- connection-properties.ts
+| | |-- digitalocean/
+| | | |-- database-types.ts
+| | |-- render/
+| | |-- service-types.ts
+| |-- parsers/ # IaC parsers for different cloud providers
+| | |-- aws-cloudformation.ts
+| | |-- base-parser.ts
+| | |-- digitalocean.ts
+| | |-- render.ts
+| |-- sources/ # Input source handlers
+| | |-- base.ts
+| | |-- factory.ts
+| | |-- compose/ # Docker Compose handling
+| | | |-- index.ts
+| | | |-- validate.ts
+| | |-- run/ # Docker run command handling
+| | |-- index.ts
+| |-- types/ # TypeScript type definitions
+| | |-- container-config.ts
+| | |-- environment-config.ts
+| | |-- service-connections.ts
+| |-- utils/ # Helper utilities
+| |-- constructImageString.ts
+| |-- detectDatabaseEnvVars.ts
+| |-- digitalOceanParserServiceName.ts
+| |-- getDigitalOceanDatabaseType.ts
+| |-- getImageUrl.ts
+| |-- parseCommand.ts
+| |-- parseDockerImage.ts
+| |-- parseEnvFile.ts
+| |-- processEnvironmentVariablesGeneration.ts
+| |-- resolveEnvironmentValue.ts
+| |-- (... and many more)
+|-- test/ # Test files
+| |-- e2e/ # End-to-end tests
+| | |-- assertions/ # Test assertions
+| | | |-- digitalocean.ts
+| | | |-- do-port-assertions.ts
+| | | |-- port-assertions.ts
+| | | |-- render.ts
+| | |-- docker-compose-files/ # Test Docker Compose files
+| | |-- docker-run-files/ # Test Docker run commands
+| | |-- output/ # Test output directory
+| | |-- utils/ # Test utilities
+| | |-- index.ts # Main E2E test executor
+| | |-- test1.ts # Environment variables and volume mapping tests
+| | |-- test2.ts # Port mapping tests
+| | |-- test3.ts # Environment variable substitution tests
+| | |-- test4.ts # Schema validation tests
+| |-- unit/ # Unit tests
+| | |-- config/ # Configuration tests
+| | |-- parsers/ # Parser tests
+| | |-- sources/ # Source handler tests
+| | |-- utils/ # Utility function tests
+| |-- test.ts # Main test entry point
+|-- eslint.config.mjs # ESLint configuration
+|-- tsconfig.json # TypeScript configuration
+|-- vitest.config.ts # Vitest configuration
+|-- package.json # Package configuration
+|-- README.md # Project documentation
+```
+
+## Directory Purposes
+
+### Core Directories
+
+- `src/` - Source code for the module
+- `test/` - Test files organized by test type (unit and end-to-end)
+- `dist/` - Compiled output (generated during build)
+
+### Source Code Organization
+
+#### Config (`src/config/`)
+
+Contains provider-specific configurations:
+
+- `connection-properties.ts` - Cross-provider connection property mappings
+- `digitalocean/` - DigitalOcean App Platform specific configurations
+ - `database-types.ts` - Database type mappings for DigitalOcean
+- `render/` - Render.com specific configurations
+ - `service-types.ts` - Service type mappings for Render deployments
+
+#### Parsers (`src/parsers/`)
+
+Contains IaC-specific parsers for different cloud providers:
+
+- `base-parser.ts` - Base parser class that defines common functionality
+- `aws-cloudformation.ts` - AWS CloudFormation parser
+- `digitalocean.ts` - DigitalOcean App Platform parser
+- `render.ts` - Render Blueprint parser
+- ... additional parsers for other providers
+
+#### Source Handlers (`src/sources/`)
+
+Handles different input types:
+
+- `base.ts` - Base source handler interface
+- `factory.ts` - Factory for creating appropriate source handlers
+- `compose/` - Docker Compose file processing
+ - `index.ts` - Main Compose parser
+ - `validate.ts` - Compose file validation
+- `run/` - Docker run command processing
+ - `index.ts` - Docker run command parser
+
+#### Types (`src/types/`)
+
+TypeScript type definitions:
+
+- `container-config.ts` - Container and service configuration types
+- `environment-config.ts` - Environment variable configuration types
+- `service-connections.ts` - Service connection configuration types
+
+#### Utilities (`src/utils/`)
+
+Helper functions for parsing and processing:
+
+- `constructImageString.ts` - Docker image string construction
+- `detectDatabaseEnvVars.ts` - Database environment variable detection
+- `digitalOceanParserServiceName.ts` - Name formatting for DigitalOcean
+- `getDigitalOceanDatabaseType.ts` - Database type detection for DigitalOcean
+- `parseDockerImage.ts` - Docker image parsing
+- `parseEnvFile.ts` - Environment file parsing
+- `resolveEnvironmentValue.ts` - Environment variable resolution
+- And many more utility functions for specific operations
+
+### Test Organization
+
+#### End-to-End Tests (`test/e2e/`)
+
+Integration tests that validate the complete workflow:
+
+- `assertions/` - Validation functions for test output
+- `docker-compose-files/` - Test Docker Compose files
+- `docker-run-files/` - Test Docker run commands
+- `output/` - Generated test outputs
+- `utils/` - Test helper utilities
+- `test1.ts` through `test4.ts` - Specific test scenarios:
+ 1. Environment variables and volume mapping
+ 2. Port mappings
+ 3. Environment variable substitution
+ 4. Schema validation
+
+#### Unit Tests (`test/unit/`)
+
+Tests for individual components:
+
+- `config/` - Tests for configuration modules
+- `parsers/` - Tests for IaC parsers
+- `sources/` - Tests for source handlers
+- `utils/` - Tests for utility functions
+
+## Adding New Parser
+
+Please check our [Adding a New Parser](/docs/docker-to-iac/example-of-a-new-parser) documentation for detailed instructions on how to add a new parser to the project. This includes creating a new parser file, implementing the parsing logic, and ensuring compatibility with existing configurations.
+
+### Adding New Tests
+
+Please refer to the [Testing](/docs/docker-to-iac/testing) documentation for guidelines on adding new tests, including unit and end-to-end tests.
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/quickstart.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/quickstart.mdx
new file mode 100644
index 0000000..67009de
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/docker-to-iac/quickstart.mdx
@@ -0,0 +1,64 @@
+---
+title: Quickstart Guide
+description: Quickstart guide for using docker-to-iac to translate Docker run commands and Docker Compose files into infrastructure as code templates
+---
+
+# Quickstart Guide
+
+## Installation
+
+First, install the module and its dependencies:
+
+```bash
+npm i @deploystack/docker-to-iac
+```
+
+## Usage Examples
+
+### Translating Docker Compose
+
+```javascript
+import { translate } from '@deploystack/docker-to-iac';
+import { readFileSync, writeFileSync } from 'fs';
+
+// Read Docker Compose file content
+const dockerComposeContent = readFileSync('path/to/docker-compose.yml', 'utf8');
+
+const translatedConfig = translate(dockerComposeContent, {
+ source: 'compose',
+ target: 'CFN',
+ templateFormat: 'yaml'
+});
+
+// Write the translated config to a file
+writeFileSync('output-aws.yml', translatedConfig);
+```
+
+### Translating Docker Run Commands
+
+```javascript
+import { translate } from '@deploystack/docker-to-iac';
+import { writeFileSync } from 'fs';
+
+// Your docker run command
+const dockerRunCommand = 'docker run -d -p 8080:80 -e NODE_ENV=production nginx:latest';
+
+const translatedConfig = translate(dockerRunCommand, {
+ source: 'run',
+ target: 'CFN',
+ templateFormat: 'yaml'
+});
+
+// Write the translated config to a file
+writeFileSync('output-aws.yml', translatedConfig);
+```
+
+### Translation Options
+
+When using the `translate` function, you can specify:
+
+- `source`: Either 'compose' or 'run' depending on your input
+- `target`: The IaC language to translate to (e.g., 'CFN' for AWS CloudFormation)
+- `templateFormat`: Output format - 'json', 'yaml', or 'text'
+
+For a complete list of supported parsers and formats, visit the [API documentation](/docs/docker-to-iac/api).
diff --git a/docs-backup-2025-06-18T14-33-44-828Z/docs/index.mdx b/docs-backup-2025-06-18T14-33-44-828Z/docs/index.mdx
new file mode 100644
index 0000000..f89e880
--- /dev/null
+++ b/docs-backup-2025-06-18T14-33-44-828Z/docs/index.mdx
@@ -0,0 +1,83 @@
+---
+title: DeployStack Documentation
+description: Welcome to DeployStack documentation. Learn how to automate Docker Compose deployments across cloud providers with Infrastructure as Code templates and one-click deployments.
+icon: CircleHelp
+---
+
+import { CloudUpload, Terminal, FileText, Container, BookOpenText, MessageCircleHeart } from 'lucide-react';
+
+# DeployStack Documentation
+
+DeployStack converts your **Docker configurations** into **Infrastructure as Code** (IaC) templates for multiple cloud providers. Whether you have a docker-compose.yml file or docker run commands, it generates the necessary AWS CloudFormation, Render.com Blueprint, DigitalOcean specifications, or Kubernetes Helm charts for example. This lets you and your users deploy the same application consistently across different cloud platforms using their native deployment mechanisms, **without needing to manually create** each provider's infrastructure.
+
+## Get Started
+
+DeployStack simplifies cloud deployment through three key steps: configure your Docker setup, translate docker compose or run command to IaC templates, and enable one-click deployment for your users. Start by understanding the core concepts and how to integrate DeployStack with your repository.
+
+### Core Concepts
+
+
+} title="Quickstart" href="/docs/deploystack/getting-started">
+Start with our Getting Started Guide to understand the basics of DeployStack.
+
+} title="One-Click Deploy" href="/docs/deploystack/one-click-deploy">
+Learn how to enable One-Click Deploy buttons for your repository.
+
+} title="Configuration" href="/docs/deploystack/deploystack-configuration-directory">
+Configuration file placed to your repository, telling Zerops how to build and start your app.
+
+
+
+### Supported Cloud Providers
+
+DeployStack generates infrastructure templates for major cloud providers, each optimized for their specific deployment patterns. AWS CloudFormation templates use Fargate for containerized workloads, DigitalOcean leverages App Platform, and Render.com implements Blueprints for smooth deployment. While translating your docker command to Infrastructure as Code by using [docker-to-iac](/docs/docker-to-iac/index.md) module, you can choose your target provider.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### DeployStack Ecosystem
+
+DeployStack consists of several integrated components that work together to enable consistent Docker to cloud deployment. Each repository serves a specific purpose in the ecosystem:
+
+
+} title="docker-to-iac" href="https://github.com/deploystackio/docker-to-iac">
+The core Node.js module that handles Docker configuration translation to Infrastructure as Code templates
+
+} title="documentation" href="https://github.com/deploystackio/documentation">
+Central repository for all DeployStack documentation and guides
+
+} title="deploy-templates" href="https://github.com/deploystackio/deploy-templates">
+Houses all generated Infrastructure as Code templates for supported repositories
+
+} title="feedback" href="https://github.com/deploystackio/feedback">
+Public repository for feature requests, bug reports, and roadmap discussions
+
+
+
+## Contributing to DeployStack docker-to-iac module
+
+DeployStack is open source and we welcome contributions. Here's how you can help:
+
+- Add support for new cloud providers
+- Improve existing Infrastructure as Code templates
+- Enhance documentation
+- Report issues and suggest improvements
+
+Visit our [GitHub repository](https://github.com/deploystackio/docker-to-iac) to get started.
+
+## Community and Support
+
+- Join our [Discord community](https://discord.gg/UjFWwByB)
+- Check our [troubleshooting guide](/docs/deploystack/troubleshooting.md)
diff --git a/docs/deploystack/application-logo-configuration.mdx b/docs/deploystack/application-logo-configuration.mdx
index 5535809..92a3349 100644
--- a/docs/deploystack/application-logo-configuration.mdx
+++ b/docs/deploystack/application-logo-configuration.mdx
@@ -9,7 +9,7 @@ Add a custom logo to make your application stand out in the DeployStack catalog.
## Adding Your Logo
-Configure your logo in `.deploystack/config.yml` - [DeployStack Configuration File Reference](/docs/deploystack/deploystack-config-file):
+Configure your logo in `.deploystack/config.yml` - [DeployStack Configuration File Reference](/deploystack/deploystack-config-file):
```yaml
application:
diff --git a/docs/deploystack/deploystack-config-file.mdx b/docs/deploystack/deploystack-config-file.mdx
index 78d2686..a5dfc95 100644
--- a/docs/deploystack/deploystack-config-file.mdx
+++ b/docs/deploystack/deploystack-config-file.mdx
@@ -56,7 +56,7 @@ The override process follows this order:
### Branch Deployment Settings
-Before configuring multiple branch deployments, ensure you have installed the [DeployStack Repository Sync GitHub App](/docs/deploystack/github-application), as it's required for branch monitoring and template updates.
+Before configuring multiple branch deployments, ensure you have installed the [DeployStack Repository Sync GitHub App](/deploystack/github-application), as it's required for branch monitoring and template updates.
You can configure multiple branch deployments using the `deployment.branches` section:
@@ -109,7 +109,7 @@ This is especially useful for projects that maintain multiple active versions si
The optional `exclude_providers` array allows you to specify which cloud providers should be excluded from template generation for particular branches. This is useful when certain features in a branch version may not be compatible with specific cloud providers. Valid provider codes are:
-Please check our [current supported provider list here](/docs/docker-to-iac/parser/index).
+Please check our [current supported provider list here](/docker-to-iac/parser/index).
For example, if your beta version uses features only supported in DigitalOcean, you might exclude the other providers:
@@ -256,4 +256,4 @@ deployment:
### Minimal Configuration example for logo update
-Please visit our [Application Logo Configuration](/docs/deploystack/application-logo-configuration) page.
+Please visit our [Application Logo Configuration](/deploystack/application-logo-configuration) page.
diff --git a/docs/deploystack/deploystack-configuration-directory.mdx b/docs/deploystack/deploystack-configuration-directory.mdx
index fd13942..c178cbe 100644
--- a/docs/deploystack/deploystack-configuration-directory.mdx
+++ b/docs/deploystack/deploystack-configuration-directory.mdx
@@ -5,7 +5,7 @@ description: Technical guide for setting up the .deploystack directory to manage
# .deploystack Directory Reference
-The `.deploystack` directory in your repository contains configuration files that DeployStack uses to generate and maintain your Infrastructure as Code templates. Creating this repo allows you to enable the [lifecycle of IaC](/docs/deploystack/iac-lifecycle). The deploystack configurations repo only makes sense if you also [install DeployStack GitHub app](/docs/deploystack/github-application). Otherwise, changes to DeployStack backend will not be recognized.
+The `.deploystack` directory in your repository contains configuration files that DeployStack uses to generate and maintain your Infrastructure as Code templates. Creating this repo allows you to enable the [lifecycle of IaC](/deploystack/iac-lifecycle). The deploystack configurations repo only makes sense if you also [install DeployStack GitHub app](/deploystack/github-application). Otherwise, changes to DeployStack backend will not be recognized.
`.deploystack` directory is optional. You don't need to create it to submit your repository to deploystack.io.
@@ -24,7 +24,7 @@ The `.deploystack` directory in your repository contains configuration files tha
### DeployStack Configuration File
-Please read more at [DeployStack Configuration File Reference](/docs/deploystack/deploystack-config-file).
+Please read more at [DeployStack Configuration File Reference](/deploystack/deploystack-config-file).
### Docker Configuration
@@ -52,11 +52,11 @@ docker run -d -p 80:80 nginx:alpine
### Environment Variables
-Please read more from our [environment variables](/docs/deploystack/docker-environment-variables) page.
+Please read more from our [environment variables](/deploystack/docker-environment-variables) page.
## Automatic Updates
-When the [DeployStack GitHub App](/docs/deploystack/github-application) is installed:
+When the [DeployStack GitHub App](/deploystack/github-application) is installed:
1. Changes to specific (`docker-compose.yml` & `docker-run.txt`) file in `.deploystack/` trigger template updates
2. Updates only process when changes occur on the default branch
@@ -66,6 +66,6 @@ When the [DeployStack GitHub App](/docs/deploystack/github-application) is insta
- The `.deploystack` directory is **optional**
- Without this directory, automatic template updates are **not** available
-- You can add the directory and install the [DeployStack GitHub Sync App](/docs/deploystack/github-application) at any time
-- [Environment variables](/docs/deploystack/docker-environment-variables) and [DeployStack config](/docs/deploystack/deploystack-config-file) are optional components
+- You can add the directory and install the [DeployStack GitHub Sync App](/deploystack/github-application) at any time
+- [Environment variables](/deploystack/docker-environment-variables) and [DeployStack config](/deploystack/deploystack-config-file) are optional components
- Only one Docker configuration file should be used (either compose or run)
diff --git a/docs/deploystack/docker-compose-requirements.mdx b/docs/deploystack/docker-compose-requirements.mdx
index a54cf11..eb91b87 100644
--- a/docs/deploystack/docker-compose-requirements.mdx
+++ b/docs/deploystack/docker-compose-requirements.mdx
@@ -12,7 +12,7 @@ DeployStack is designed to work with Docker Compose files that meet specific req
Your `docker-compose.yml` file must:
1. Use pre-built Docker images
-2. Reference public images from Docker Hub or another registries -> check [Supported Registries](/docs/docker-to-iac/supported-registries)
+2. Reference public images from Docker Hub or another registries -> check [Supported Registries](/docker-to-iac/supported-registries)
3. Be a valid Docker Compose file (version 3 and above)
Your docker-compose file does not necessarily have to be called `docker-compose.yml` and does not have to be located in the root directory. You can rename your docker compose file and store it in any sub directory.
@@ -53,7 +53,7 @@ The infrastructure templates we generate require specific, immutable container i
## Supported Docker Compose Properties
-We currently support these Docker Compose properties -> please check [Supported Docker Compose Variables](/docs/docker-to-iac/supported-docker-compose-variables).
+We currently support these Docker Compose properties -> please check [Supported Docker Compose Variables](/docker-to-iac/supported-docker-compose-variables).
### Kubernetes/Helm
@@ -74,19 +74,19 @@ DeployStack can handle Docker Compose files with multiple services, but support
- Others will only deploy the first service in your compose file
- Kubernetes (Helm) supports multi-service deployments with each service becoming a separate Deployment
-Check the specific [Multi Services Support](/docs/docker-to-iac/multi-services-support) for details about multi-service support.
+Check the specific [Multi Services Support](/docker-to-iac/multi-services-support) for details about multi-service support.
## Working with Private Images
Currently, DeployStack only supports public images from Docker Hub. If you need to use private images:
-1. Make your images public on Docker Hub or [other supported registries](/docs/docker-to-iac/supported-registries)
+1. Make your images public on Docker Hub or [other supported registries](/docker-to-iac/supported-registries)
2. Update your docker-compose.yml to reference the public images
3. Submit your repository to DeployStack
## Environment Variables
-Please read more from our [environment variables](/docs/deploystack/docker-environment-variables) page.
+Please read more from our [environment variables](/deploystack/docker-environment-variables) page.
## Validation
@@ -98,5 +98,5 @@ When you submit your repository, we perform these checks:
## Next Steps
-- See how [One-Click Deploy](/docs/deploystack/one-click-deploy) works
-- Check the [Troubleshooting](/docs/deploystack/troubleshooting) guide if you run into issues
+- See how [One-Click Deploy](/deploystack/one-click-deploy) works
+- Check the [Troubleshooting](/deploystack/troubleshooting) guide if you run into issues
diff --git a/docs/deploystack/getting-started.mdx b/docs/deploystack/getting-started.mdx
index 19d10f4..c441f15 100644
--- a/docs/deploystack/getting-started.mdx
+++ b/docs/deploystack/getting-started.mdx
@@ -99,7 +99,7 @@ Create a `.deploystack` directory in your repository with these components:
- `docker-run.txt`: Alternative to compose file, contains your Docker run command
- Only one of these files should be present
-For more configuration options please check our [.deploystack Directory Reference](/docs/deploystack/deploystack-configuration-directory).
+For more configuration options please check our [.deploystack Directory Reference](/deploystack/deploystack-configuration-directory).
### GitHub App Integration
@@ -189,6 +189,6 @@ After template generation:
## Need Additional Help?
-- Review our detailed [Troubleshooting Guide](/docs/deploystack/troubleshooting)
+- Review our detailed [Troubleshooting Guide](/deploystack/troubleshooting)
- Join our active [Discord Community](https://discord.gg/UjFWwByB)
- Submit issues on GitHub to our [Feedback repository](https://github.com/deploystackio/feedback)
diff --git a/docs/deploystack/github-application.mdx b/docs/deploystack/github-application.mdx
index 0bfd545..8fe39a4 100644
--- a/docs/deploystack/github-application.mdx
+++ b/docs/deploystack/github-application.mdx
@@ -11,7 +11,7 @@ The DeployStack GitHub App ensures your Infrastructure as Code (IaC) templates r
When you install the [DeployStack Repository Sync](https://github.com/apps/deploystack-repository-sync) app, it monitors specific files in your repository:
-- `.deploystack/` directory - [Contains your Docker configurations and assets](/docs/deploystack/deploystack-configuration-directory)
+- `.deploystack/` directory - [Contains your Docker configurations and assets](/deploystack/deploystack-configuration-directory)
- `README.md` - For README.md updates
When changes are detected in these files, the app automatically triggers an update of your IaC templates in our [deploy-templates](https://github.com/deploystackio/deploy-templates) repository.
@@ -47,12 +47,12 @@ When the app detects changes, it automatically updates:
- Repository Homepage
- Description
- IaC templates
- - Depends on which technique (docker compose or docker run command) you choose, you can upload the `docker-compose.yml` or `docker-run.txt` in the `.deploystack` directory. Every time you update the files on your main branch (or additional branch), IaC templates will be updated automatically - [Automatic Updates](/docs/deploystack/deploystack-configuration-directory#automatic-updates).
+ - Depends on which technique (docker compose or docker run command) you choose, you can upload the `docker-compose.yml` or `docker-run.txt` in the `.deploystack` directory. Every time you update the files on your main branch (or additional branch), IaC templates will be updated automatically - [Automatic Updates](/deploystack/deploystack-configuration-directory#automatic-updates).
- Environment variables
- - To make it easier for a user to deploy IaC templates, it is recommended to work with environment variables. For this purpose, you can upload an `env` file and add your appropriate variables - [Environment Variables](/docs/deploystack/deploystack-configuration-directory#environment-variables).
+ - To make it easier for a user to deploy IaC templates, it is recommended to work with environment variables. For this purpose, you can upload an `env` file and add your appropriate variables - [Environment Variables](/deploystack/deploystack-configuration-directory#environment-variables).
- DeployStack Configuration
- Project / Applicaton Logo
- - It is possible to upload your own logo to DeployStack catalog. To do this you need to upload a file to our directory `.deploystack`. Read more about it here: [Repository Logo](/docs/deploystack/deploystack-configuration-directory#repository-logo)
+ - It is possible to upload your own logo to DeployStack catalog. To do this you need to upload a file to our directory `.deploystack`. Read more about it here: [Repository Logo](/deploystack/deploystack-configuration-directory#repository-logo)
## Managing the Integration
@@ -66,4 +66,4 @@ After installing the app:
2. Commit and push your changes
3. DeployStack will automatically update your deployment templates
-For details about the `.deploystack` directory structure, check our [.deploystack Directory Reference](/docs/deploystack/deploystack-configuration-directory).
+For details about the `.deploystack` directory structure, check our [.deploystack Directory Reference](/deploystack/deploystack-configuration-directory).
diff --git a/docs/deploystack/iac-lifecycle.mdx b/docs/deploystack/iac-lifecycle.mdx
index e9e551f..6341728 100644
--- a/docs/deploystack/iac-lifecycle.mdx
+++ b/docs/deploystack/iac-lifecycle.mdx
@@ -11,7 +11,7 @@ This guide explains how DeployStack manages and updates your Infrastructure as C
### Initial Setup
-1. Create a `.deploystack` [configuration directory](/docs/deploystack/deploystack-configuration-directory) in your repository
+1. Create a `.deploystack` [configuration directory](/deploystack/deploystack-configuration-directory) in your repository
2. Add your Docker configuration files:
- `docker-compose.yml` for Compose configurations
- `docker-run.txt` for Docker run commands
@@ -20,7 +20,7 @@ This guide explains how DeployStack manages and updates your Infrastructure as C
### Enabling Automatic Updates
-Install the [DeployStack Repository Sync](/docs/deploystack/github-application) GitHub App to keep your templates up to date when:
+Install the [DeployStack Repository Sync](/deploystack/github-application) GitHub App to keep your templates up to date when:
- You modify Docker configurations in the `.deploystack` directory
- Cloud providers update their IaC specifications
@@ -36,7 +36,7 @@ All IaC templates are stored in public and open-source repository: [https://gith
### Prerequisites for activating the flow
-1. You have installed the [DeployStack GitHub app](/docs/deploystack/github-application).
+1. You have installed the [DeployStack GitHub app](/deploystack/github-application).
2. You have created the `.deploystack/docker-run.txt` or `.deploystack/docker-compose.yml` file.
The choice between `docker-run.txt` or `docker-compose.yml` depends on the submission process used to DeployStack. When submitting to DeployStack, you can choose two methods -> Docker Run or Docker Compose.
diff --git a/docs/deploystack/index.mdx b/docs/deploystack/index.mdx
index 58ffd00..2203faa 100644
--- a/docs/deploystack/index.mdx
+++ b/docs/deploystack/index.mdx
@@ -10,14 +10,14 @@ DeployStack helps you deploy Docker Compose and Docker Run applications across d
## Documentation Sections
-- [Getting Started](/docs/deploystack/getting-started.md) - Quick introduction and first steps
-- [Docker Compose Requirements](/docs/deploystack/docker-compose-requirements.md) - Learn about supported configurations
-- [One-Click Deploy](/docs/deploystack/one-click-deploy.md) - Learn about deployment automation
-- [Troubleshooting](/docs/deploystack/troubleshooting.md) - Resolve common issues
+- [Getting Started](/deploystack/getting-started) - Quick introduction and first steps
+- [Docker Compose Requirements](/deploystack/docker-compose-requirements) - Learn about supported configurations
+- [One-Click Deploy](/deploystack/one-click-deploy) - Learn about deployment automation
+- [Troubleshooting](/deploystack/troubleshooting) - Resolve common issues
## Additional Resources
-- [Docker-to-IaC Module Documentation](/docs/docker-to-iac/index.md)
+- [Docker-to-IaC Module Documentation](/docker-to-iac/index)
- [Join our Discord](https://discord.gg/UjFWwByB)
- [Visit DeployStack](https://deploystack.io)
diff --git a/docs/deploystack/multiple-branches.mdx b/docs/deploystack/multiple-branches.mdx
index ddb2f35..e05520f 100644
--- a/docs/deploystack/multiple-branches.mdx
+++ b/docs/deploystack/multiple-branches.mdx
@@ -20,7 +20,7 @@ Every repository starts with its default branch (typically `main` or `master`).
When you change your default branch in GitHub:
-- DeployStack automatically detects the change - you need to install [DeployStack GitHub App](/docs/deploystack/github-application)
+- DeployStack automatically detects the change - you need to install [DeployStack GitHub App](/deploystack/github-application)
- Regenerates templates for the new default branch
- Updates all deployment buttons
@@ -80,7 +80,7 @@ This structure allows you to:
- Modify service configurations independently
- Keep each version's deployment parameters isolated
-Remember: The DeployStack GitHub App only monitors the standard filenames: check [.deploystack Directory Reference for more info](/docs/deploystack/deploystack-configuration-directory)
+Remember: The DeployStack GitHub App only monitors the standard filenames: check [.deploystack Directory Reference for more info](/deploystack/deploystack-configuration-directory)
## Real-World Example
@@ -142,7 +142,7 @@ This strategy allows your users to:
- Maximum of 5 active branches supported
- Each branch can have unique Docker configurations
- Default branch can be changed (switch to another branch and make it default) but not excluded
-- Branch configurations ([DeployStack config file](/docs/deploystack/deploystack-config-file)) must be in the default branch
+- Branch configurations ([DeployStack config file](/deploystack/deploystack-config-file)) must be in the default branch
- All branches are automatically monitored for changes
- Template regeneration happens automatically when:
- Branch content changes
diff --git a/docs/deploystack/one-click-deploy.mdx b/docs/deploystack/one-click-deploy.mdx
index 8cf961e..3f42931 100644
--- a/docs/deploystack/one-click-deploy.mdx
+++ b/docs/deploystack/one-click-deploy.mdx
@@ -11,7 +11,7 @@ DeployStack leverages existing deployment technologies from cloud providers to m
When you submit your repository to [deploystack.io/submit](https://deploystack.io/submit), we:
-1. Generate Infrastructure as Code (IaC) templates for [supported cloud providers](/docs/docker-to-iac/index)
+1. Generate Infrastructure as Code (IaC) templates for [supported cloud providers](/docker-to-iac/index)
2. Store these templates in our [deploy-templates repository](https://github.com/deploystackio/deploy-templates)
3. Create provider-specific deployment buttons for your README.md -> by [deploystack.io/deploy-button](https://deploystack.io/deploy-button)
@@ -41,7 +41,7 @@ We integrate with cloud providers' native deployment systems. For example:
- **DigitalOcean**: Uses the "Deploy to DigitalOcean" functionality as documented in their [official guide](https://docs.digitalocean.com/products/app-platform/how-to/add-deploy-do-button/)
- **Kubernetes**: Generates Helm charts that can be deployed to any Kubernetes cluster
-- Check [supported cloud providers](/docs/docker-to-iac/index) for full list
+- Check [supported cloud providers](/docker-to-iac/index) for full list
### Provider-Specific Templates
diff --git a/docs/deploystack/troubleshooting.mdx b/docs/deploystack/troubleshooting.mdx
index 15bb2aa..c125d48 100644
--- a/docs/deploystack/troubleshooting.mdx
+++ b/docs/deploystack/troubleshooting.mdx
@@ -81,7 +81,7 @@ The submitted docker-compose file doesn't meet the required format or contains u
**Solution:**
- Validate your docker-compose file syntax
-- Check our [Docker Compose Requirements](/docs/deploystack/docker-compose-requirements) page
+- Check our [Docker Compose Requirements](/deploystack/docker-compose-requirements) page
- Ensure you're using supported features only
## Error Converting Docker Compose to IaC
@@ -97,7 +97,7 @@ This error occurs when our system cannot convert your docker-compose configurati
**Solution:**
- Simplify your docker-compose configuration
-- Review our [supported features documentation](/docs/docker-to-iac/supported-docker-compose-variables)
+- Review our [supported features documentation](/docker-to-iac/supported-docker-compose-variables)
- Ensure all services use supported configurations
## Error Listing Services from Docker Compose
@@ -138,7 +138,7 @@ This indicates an unexpected error in our validation process.
## General Troubleshooting Tips
1. Validate your docker-compose file locally before submission
-2. Ensure your repository meets all [requirements](/docs/deploystack/docker-compose-requirements)
+2. Ensure your repository meets all [requirements](/deploystack/docker-compose-requirements)
3. Check that all services use supported configurations
4. Verify your repository is public and accessible
@@ -147,5 +147,5 @@ This indicates an unexpected error in our validation process.
If you're still experiencing issues:
- Join our [Discord community](https://discord.gg/UjFWwByB)
-- Check our [Docker Compose Requirements](/docs/deploystack/docker-compose-requirements)
-- Review [supported features](/docs/docker-to-iac/supported-docker-compose-variables)
+- Check our [Docker Compose Requirements](/deploystack/docker-compose-requirements)
+- Review [supported features](/docker-to-iac/supported-docker-compose-variables)
diff --git a/docs/docker-to-iac/api.mdx b/docs/docker-to-iac/api.mdx
index 8aaff08..faa0160 100644
--- a/docs/docker-to-iac/api.mdx
+++ b/docs/docker-to-iac/api.mdx
@@ -83,7 +83,7 @@ console.log(parsers);
]
```
-**Note the files array**: that's because we have a [multi file strategy](/docs/docker-to-iac/multi-file-configuration).
+**Note the files array**: that's because we have a [multi file strategy](/docker-to-iac/multi-file-configuration).
### Type
diff --git a/docs/docker-to-iac/example-of-a-new-parser.mdx b/docs/docker-to-iac/example-of-a-new-parser.mdx
index 571f608..85242da 100644
--- a/docs/docker-to-iac/example-of-a-new-parser.mdx
+++ b/docs/docker-to-iac/example-of-a-new-parser.mdx
@@ -343,7 +343,7 @@ const parsers: BaseParser[] = [
## Testing
-Please read our guidelines for testing parsers in the [Testing section](/docs/docker-to-iac/testing).
+Please read our guidelines for testing parsers in the [Testing section](/docker-to-iac/testing).
## New parser documentation
diff --git a/docs/docker-to-iac/index.mdx b/docs/docker-to-iac/index.mdx
index 3d425b6..2fea713 100644
--- a/docs/docker-to-iac/index.mdx
+++ b/docs/docker-to-iac/index.mdx
@@ -1,7 +1,7 @@
---
title: Docker to Infrastructure 2
description: Introduction to the node module docker-to-iac which allows you to transfer docker-compose into IaC templates
-sidebar: lol text
+sidebar: docker-to-iac
---
# Docker to Infrastructure as Code Module
@@ -39,7 +39,7 @@ After the successful translation, you can deploy your containers to your cloud p
- Only pre-build container possible
-Please read more at the [limitations page](/docs/docker-to-iac/limitations.md)
+Please read more at the [limitations page](/docker-to-iac/limitations)
## Help wanted
diff --git a/docs/docker-to-iac/limitations.mdx b/docs/docker-to-iac/limitations.mdx
index 8ba65ba..8072dea 100644
--- a/docs/docker-to-iac/limitations.mdx
+++ b/docs/docker-to-iac/limitations.mdx
@@ -7,7 +7,7 @@ description: Current limitations and constraints of the docker-to-iac module
## Registry Support
-The module currently supports Docker images from -> please check [Supported Registries for docker-to-iac module](/docs/docker-to-iac/supported-registries.md)
+The module currently supports Docker images from -> please check [Supported Registries for docker-to-iac module](/docker-to-iac/supported-registries)
## Docker Image Requirement
diff --git a/docs/docker-to-iac/multi-services-support.mdx b/docs/docker-to-iac/multi-services-support.mdx
index 9645e4e..209a897 100644
--- a/docs/docker-to-iac/multi-services-support.mdx
+++ b/docs/docker-to-iac/multi-services-support.mdx
@@ -5,7 +5,7 @@ description: Learn about multi-service deployment support - See how docker-to-ia
# Multi-Service Support
-Multi-service support refers to the ability of a [parser](/docs/docker-to-iac/parser-explanation) to handle multiple container configurations when translating to Infrastructure as Code (IaC) templates.
+Multi-service support refers to the ability of a [parser](/docker-to-iac/parser-explanation) to handle multiple container configurations when translating to Infrastructure as Code (IaC) templates.
## Docker Run vs Docker Compose
@@ -73,6 +73,6 @@ const translation = translate(dockerComposeContent, {
## Provider-Specific Behavior
-Before using a specific parser, check its multi-service capabilities in the [parser documentation](/docs/docker-to-iac/parser-explanation). This helps ensure your deployment strategy aligns with the provider's capabilities.
+Before using a specific parser, check its multi-service capabilities in the [parser documentation](/docker-to-iac/parser-explanation). This helps ensure your deployment strategy aligns with the provider's capabilities.
Note that some providers may have different service limits or deployment patterns even when they support multiple services. Always consult the target provider's documentation for specific limitations.
diff --git a/docs/docker-to-iac/parser-explanation.mdx b/docs/docker-to-iac/parser-explanation.mdx
index ca69734..c97a29c 100644
--- a/docs/docker-to-iac/parser-explanation.mdx
+++ b/docs/docker-to-iac/parser-explanation.mdx
@@ -32,7 +32,7 @@ services:
## API
-For detailed API documentation, see the [parser API reference](/docs/docker-to-iac/api).
+For detailed API documentation, see the [parser API reference](/docker-to-iac/api).
## Default Parser Config
@@ -40,7 +40,7 @@ Each parser includes default configurations specific to its target cloud provide
Example: AWS Fargate has a minimum CPU allocation of 256, while DigitalOcean's [minimum setting is 1 vCPU](https://www.digitalocean.com/pricing/app-platform). The default parser config handles these provider-specific requirements.
-To retrieve default parser configurations through the API, see the [parser info documentation](/docs/docker-to-iac/api#get-parser-info).
+To retrieve default parser configurations through the API, see the [parser info documentation](/docker-to-iac/api#get-parser-info).
## Parser vs. Language
@@ -52,7 +52,7 @@ For example, AWS infrastructure can be defined using:
- AWS CDK (for TypeScript, Python, etc.)
- Terraform
-When adding new parsers, consider whether multiple IaC languages are possible for your target provider. This affects how you name your parser file in `src/parsers/.ts`. It's why the [`translate()`](/docs/docker-to-iac/api#translate-api) method requires the target IaC language name (e.g., `CFN`) rather than the provider name (e.g., `AWS`).
+When adding new parsers, consider whether multiple IaC languages are possible for your target provider. This affects how you name your parser file in `src/parsers/.ts`. It's why the [`translate()`](/docker-to-iac/api#translate-api) method requires the target IaC language name (e.g., `CFN`) rather than the provider name (e.g., `AWS`).
## Parser Implementation Notes
diff --git a/docs/docker-to-iac/parser/aws-cloudformation.mdx b/docs/docker-to-iac/parser/aws-cloudformation.mdx
index 30861bb..408e380 100644
--- a/docs/docker-to-iac/parser/aws-cloudformation.mdx
+++ b/docs/docker-to-iac/parser/aws-cloudformation.mdx
@@ -90,7 +90,7 @@ For applications requiring persistent storage, consider:
Multi `services` support for CloudFormation: __yes__
-Please read more about [multi service support here](/docs/docker-to-iac/multi-services-support).
+Please read more about [multi service support here](/docker-to-iac/multi-services-support).
This CloudFormation template is designed for development and testing environments. For production deployments, review and adjust security groups, storage configuration, and other security settings according to your requirements.
diff --git a/docs/docker-to-iac/parser/digitalocean.mdx b/docs/docker-to-iac/parser/digitalocean.mdx
index 5ea2624..c5b9eaf 100644
--- a/docs/docker-to-iac/parser/digitalocean.mdx
+++ b/docs/docker-to-iac/parser/digitalocean.mdx
@@ -186,4 +186,4 @@ Multi `services` support for DigitalOcean: __yes__
DigitalOcean supports multiple services in a single App Spec file.
-Please read more about [multi service support here](/docs/docker-to-iac/multi-services-support).
+Please read more about [multi service support here](/docker-to-iac/multi-services-support).
diff --git a/docs/docker-to-iac/parser/helm.mdx b/docs/docker-to-iac/parser/helm.mdx
index b99c6ea..5c397d4 100644
--- a/docs/docker-to-iac/parser/helm.mdx
+++ b/docs/docker-to-iac/parser/helm.mdx
@@ -170,7 +170,7 @@ Multi `services` support for Helm: **yes**
Helm Charts are designed to handle multiple services and dependencies in a single deployment, making them ideal for complex applications. The parser transforms all services from your Docker Compose file into corresponding Kubernetes resources.
-Please read more about [multi service support here](/docs/docker-to-iac/multi-services-support).
+Please read more about [multi service support here](/docker-to-iac/multi-services-support).
## Deployment Instructions
diff --git a/docs/docker-to-iac/parser/index.mdx b/docs/docker-to-iac/parser/index.mdx
index 87c45ce..f00e214 100644
--- a/docs/docker-to-iac/parser/index.mdx
+++ b/docs/docker-to-iac/parser/index.mdx
@@ -6,9 +6,9 @@ menuTitle: Available parser
# Available parser list for module docker-to-iac
-Here you can find the list of available [parsers](/docs/docker-to-iac/parser-explanation.md):
+Here you can find the list of available [parsers](/docker-to-iac/parser-explanation):
-- [AWS CloudFormation](/docs/docker-to-iac/parser/aws-cloudformation.md)
-- [Render.com](/docs/docker-to-iac/parser/render.com.md)
-- [DigitalOcean](/docs/docker-to-iac/parser/digitalocean.md)
-- [Helm (Kubernetes)](/docs/docker-to-iac/parser/helm.md)
+- [AWS CloudFormation](/docker-to-iac/parser/aws-cloudformation)
+- [Render.com](/docker-to-iac/parser/render.com)
+- [DigitalOcean](/docker-to-iac/parser/digitalocean)
+- [Helm (Kubernetes)](/docker-to-iac/parser/helm)
diff --git a/docs/docker-to-iac/parser/render.com.mdx b/docs/docker-to-iac/parser/render.com.mdx
index 926c2fe..771e914 100644
--- a/docs/docker-to-iac/parser/render.com.mdx
+++ b/docs/docker-to-iac/parser/render.com.mdx
@@ -122,7 +122,7 @@ services:
### Adding New Service Types
-If you're using a service that should be private but isn't automatically detected, please visit our [Render: Contributing to Render Service Types docs page](/docs/docker-to-iac/render-contributing-to-service-types).
+If you're using a service that should be private but isn't automatically detected, please visit our [Render: Contributing to Render Service Types docs page](/docker-to-iac/render-contributing-to-service-types).
## Multi Services Support
@@ -130,4 +130,4 @@ Multi `services` support for Render.com: __yes__
Since [multi services](https://render.com/docs/blueprint-spec#root-level-fields) feature is supported.
-Please read more about [multi service support here](/docs/docker-to-iac/multi-services-support).
+Please read more about [multi service support here](/docker-to-iac/multi-services-support).
diff --git a/docs/docker-to-iac/project-structure.mdx b/docs/docker-to-iac/project-structure.mdx
index 1c4126c..d794149 100644
--- a/docs/docker-to-iac/project-structure.mdx
+++ b/docs/docker-to-iac/project-structure.mdx
@@ -168,8 +168,8 @@ Tests for individual components:
## Adding New Parser
-Please check our [Adding a New Parser](/docs/docker-to-iac/example-of-a-new-parser) documentation for detailed instructions on how to add a new parser to the project. This includes creating a new parser file, implementing the parsing logic, and ensuring compatibility with existing configurations.
+Please check our [Adding a New Parser](/docker-to-iac/example-of-a-new-parser) documentation for detailed instructions on how to add a new parser to the project. This includes creating a new parser file, implementing the parsing logic, and ensuring compatibility with existing configurations.
### Adding New Tests
-Please refer to the [Testing](/docs/docker-to-iac/testing) documentation for guidelines on adding new tests, including unit and end-to-end tests.
+Please refer to the [Testing](/docker-to-iac/testing) documentation for guidelines on adding new tests, including unit and end-to-end tests.
diff --git a/docs/docker-to-iac/quickstart.mdx b/docs/docker-to-iac/quickstart.mdx
index 67009de..a958678 100644
--- a/docs/docker-to-iac/quickstart.mdx
+++ b/docs/docker-to-iac/quickstart.mdx
@@ -61,4 +61,4 @@ When using the `translate` function, you can specify:
- `target`: The IaC language to translate to (e.g., 'CFN' for AWS CloudFormation)
- `templateFormat`: Output format - 'json', 'yaml', or 'text'
-For a complete list of supported parsers and formats, visit the [API documentation](/docs/docker-to-iac/api).
+For a complete list of supported parsers and formats, visit the [API documentation](/docker-to-iac/api).
diff --git a/docs/index.mdx b/docs/index.mdx
index f89e880..a553c26 100644
--- a/docs/index.mdx
+++ b/docs/index.mdx
@@ -17,32 +17,32 @@ DeployStack simplifies cloud deployment through three key steps: configure your
### Core Concepts
-} title="Quickstart" href="/docs/deploystack/getting-started">
+} title="Quickstart" href="/deploystack/getting-started">
Start with our Getting Started Guide to understand the basics of DeployStack.
-} title="One-Click Deploy" href="/docs/deploystack/one-click-deploy">
+} title="One-Click Deploy" href="/deploystack/one-click-deploy">
Learn how to enable One-Click Deploy buttons for your repository.
-} title="Configuration" href="/docs/deploystack/deploystack-configuration-directory">
+} title="Configuration" href="/deploystack/deploystack-configuration-directory">
Configuration file placed to your repository, telling Zerops how to build and start your app.
### Supported Cloud Providers
-DeployStack generates infrastructure templates for major cloud providers, each optimized for their specific deployment patterns. AWS CloudFormation templates use Fargate for containerized workloads, DigitalOcean leverages App Platform, and Render.com implements Blueprints for smooth deployment. While translating your docker command to Infrastructure as Code by using [docker-to-iac](/docs/docker-to-iac/index.md) module, you can choose your target provider.
+DeployStack generates infrastructure templates for major cloud providers, each optimized for their specific deployment patterns. AWS CloudFormation templates use Fargate for containerized workloads, DigitalOcean leverages App Platform, and Render.com implements Blueprints for smooth deployment. While translating your docker command to Infrastructure as Code by using [docker-to-iac](/docker-to-iac/index) module, you can choose your target provider.
-
+
-
+
-
+
-
+
@@ -80,4 +80,4 @@ Visit our [GitHub repository](https://github.com/deploystackio/docker-to-iac) to
## Community and Support
- Join our [Discord community](https://discord.gg/UjFWwByB)
-- Check our [troubleshooting guide](/docs/deploystack/troubleshooting.md)
+- Check our [troubleshooting guide](/deploystack/troubleshooting)
diff --git a/lib/._components b/lib/._components
deleted file mode 100644
index 97b64ad..0000000
Binary files a/lib/._components and /dev/null differ
diff --git a/lib/components/CustomNavbar.tsx b/lib/components/CustomNavbar.tsx
deleted file mode 100644
index 8881b6f..0000000
--- a/lib/components/CustomNavbar.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-import React from 'react';
-import Link from 'next/link';
-import Image from 'next/image';
-import { GithubIcon, Menu } from 'lucide-react';
-
-export function CustomNavbar() {
- return (
-
- );
-}
diff --git a/lib/source.ts b/lib/source.ts
index 56e6e00..18e4e4e 100644
--- a/lib/source.ts
+++ b/lib/source.ts
@@ -10,10 +10,9 @@ import { DeployStackLogo } from './components/DeployStackLogo';
export const source = loader({
// Base URL for the documentation pages.
- // Since 'docs/index.md' should be the root page of the /docs section,
- // and our content is in the 'docs' directory (configured in source.config.ts),
- // baseUrl should be '/docs'. This means docs/index.mdx will be at /docs.
- baseUrl: '/docs',
+ // Since we've moved docs to the root level, baseUrl should be '/'
+ // This means docs/index.mdx will be at / and other docs at their direct paths
+ baseUrl: '/',
// The source of the documents, converted to Fumadocs format.
source: docs.toFumadocsSource(),
diff --git a/next.config.mjs b/next.config.mjs
index 336687c..107a230 100644
--- a/next.config.mjs
+++ b/next.config.mjs
@@ -7,8 +7,8 @@ const config = {
reactStrictMode: true,
output: 'export', // Enable static HTML export
trailingSlash: true, // Required for static export
- basePath: '/docs', // Set base path for the application
- assetPrefix: '/docs', // Ensure assets are also prefixed with /docs
+ // basePath: '/docs', // Set base path for the application
+ // assetPrefix: '/docs', // Ensure assets are also prefixed with /docs
images: {
unoptimized: true // Required for static export
},
diff --git a/package.json b/package.json
index 30a1341..2ff4f0d 100644
--- a/package.json
+++ b/package.json
@@ -5,9 +5,8 @@
"private": true,
"scripts": {
"dev": "next dev",
- "build": "next build && npm run move-assets",
- "move-assets": "mkdir -p out/docs/_next && cp -r out/_next/* out/docs/_next/ && rm -rf out/_next",
- "start": "next start",
+ "build": "next build",
+ "start": "npx serve@latest out",
"lint:md": "npx markdownlint-cli2 '**/*.md' '#node_modules' '#.github'",
"lint:links": "node check-links.js",
"semantic-release": "semantic-release",