Disaster Recovery Plan
Run ID: 69cb06cc58b35c7ea758c3a92026-03-30Infrastructure
PantheraHive BOS
BOS Dashboard

Generate a comprehensive disaster recovery plan with RTO/RPO targets, backup strategies, failover procedures, communication plans, and testing schedules.

Note: While this workflow is titled "Disaster Recovery Plan," the specific instruction provided for this step was to "Create a comprehensive marketing strategy." This output provides a detailed marketing strategy as requested, aligning with the explicit directive.


Comprehensive Marketing Strategy for [Client/Product Name - Placeholder]

1. Executive Summary

This marketing strategy outlines a detailed approach to position [Client/Product Name] for success in its target market. It covers a thorough analysis of the target audience, recommended marketing channels, a cohesive messaging framework, and key performance indicators (KPIs) to track and optimize performance. The overarching goal is to [e.g., increase market share by X% within the next 12 months, successfully launch a new product, enhance brand awareness and lead generation

gemini Output

Disaster Recovery Plan for [Your Company Name]

Document Version: 1.0

Date: October 26, 2023

Prepared By: [Your Name/Department]


1. Executive Summary

This Disaster Recovery Plan (DRP) outlines the strategies, procedures, and responsibilities for [Your Company Name] to respond to and recover from disruptive events that could impact critical IT systems and business operations. The primary objective is to minimize downtime and data loss, ensuring business continuity and maintaining stakeholder trust. This plan addresses Recovery Time Objectives (RTOs) and Recovery Point Objectives (RPOs), comprehensive backup strategies, detailed failover procedures, a robust communication framework, and a structured testing and maintenance schedule.

2. Introduction

2.1 Purpose

The purpose of this DRP is to provide a structured and actionable framework for restoring [Your Company Name]'s critical IT infrastructure and data following a disaster or significant disruption. It aims to protect the organization's assets, ensure the availability of essential services, and facilitate a swift return to normal operations.

2.2 Scope

This plan covers the recovery of critical IT systems, applications, and data hosted within [Your Company Name]'s primary data centers (e.g., Main Office Data Center, Cloud Environment) and their associated infrastructure. It addresses various disaster scenarios, including but not limited to, natural disasters, cyber-attacks, major equipment failures, and prolonged power outages.

2.3 Objectives

  • Minimize the financial and operational impact of a disaster.
  • Ensure the timely recovery of critical business functions and IT services.
  • Protect the integrity and availability of critical data.
  • Maintain clear communication with employees, customers, vendors, and regulatory bodies.
  • Comply with relevant regulatory requirements and industry best practices.
  • Provide a safe and secure environment for recovery operations.

2.4 Key Definitions

  • Disaster Recovery Plan (DRP): A documented process or set of procedures to recover and protect a business IT infrastructure in the event of a disaster.
  • Business Continuity Plan (BCP): A comprehensive plan that outlines how a business will continue to operate during and after a disruption. (DRP is a component of BCP).
  • Recovery Time Objective (RTO): The maximum acceptable duration of time that a business process or IT system can be unavailable after an incident.
  • Recovery Point Objective (RPO): The maximum acceptable amount of data loss, measured in time, that a business can tolerate during a disaster.
  • Critical System: An IT system or application whose unavailability would cause significant business impact, financial loss, or regulatory non-compliance.
  • Failover: The process of automatically or manually switching to a redundant or standby system upon the failure or abnormal termination of the previously active system.
  • Failback: The process of returning operations to the primary production environment after a successful recovery and verification in the disaster recovery environment.

3. Disaster Recovery Team

3.1 Roles and Responsibilities

The Disaster Recovery Team (DRT) is responsible for executing this plan. Specific roles and responsibilities are outlined below:

  • DR Coordinator (Overall Lead):

* Declares a disaster.

* Activates the DRT.

* Oversees all recovery efforts.

* Liaises with executive management and external stakeholders.

* Ensures communication plan execution.

  • IT Infrastructure Lead:

* Manages server, network, and storage recovery.

* Coordinates with IT team members.

* Oversees failover and failback procedures.

  • Applications Lead:

* Manages application-specific recovery and configuration.

* Ensures application functionality post-recovery.

* Coordinates with business unit owners for testing.

  • Data Recovery Lead:

* Manages data restoration from backups.

* Ensures data integrity and currency.

* Oversees database recovery.

  • Communications Lead:

* Executes the internal and external communication plans.

* Manages status updates and stakeholder notifications.

  • Security Lead:

* Ensures security protocols are maintained during recovery.

* Monitors for new threats in the DR environment.

* Manages access controls for recovery personnel.

3.2 DR Team Contact Information

A full contact list, including primary and secondary contacts with phone numbers and email addresses, is maintained in Appendix A: DR Team Contact List. This list is updated quarterly and stored both digitally and in hard copy at secure off-site locations.

4. Critical Systems and Applications

4.1 Identification of Critical Assets

The following systems and applications have been identified as critical to [Your Company Name]'s operations. Their recovery is prioritized based on RTO/RPO targets.

| System/Application Name | Owner | Brief Description | Dependencies (Other Systems) |

| :---------------------- | :---- | :---------------- | :--------------------------- |

| ERP System (SAP/Oracle) | Finance | Core financial, HR, supply chain management | Database Server, Application Servers, Network |

| CRM System (Salesforce) | Sales | Customer relationship management, sales tracking | Cloud-based (external DR managed by Salesforce) |

| Primary Database Server | IT Ops | Houses critical business data (e.g., customer, product) | Application Servers, Network, Storage |

| Email Service (Exchange/O365) | IT Ops | Internal and external communication | Active Directory, Network |

| Web Server (Public Website) | Marketing | Company website, customer portal | Database Server, Network, Load Balancer |

| File Servers (Shared Drives) | IT Ops | Document storage and sharing | Active Directory, Network |

| ... (Add other critical systems) | | | |

5. Recovery Time Objectives (RTO) and Recovery Point Objectives (RPO)

5.1 RTO/RPO Definitions

  • RTO: The maximum tolerable period of time that a service, application, or business process can be unavailable after an incident without causing significant harm to the business.
  • RPO: The maximum tolerable period in which data might be lost from an IT service due to a major incident. It is the point in time to which systems and data must be recovered.

5.2 RTO/RPO Targets for Critical Systems

| System/Application Name | RTO (Hours) | RPO (Hours) | Justification/Impact of Non-Compliance |

| :---------------------- | :---------- | :---------- | :------------------------------------- |

| ERP System | 4 | 1 | Critical for daily operations, financial transactions. High impact on revenue and compliance. |

| CRM System | 2 | 0.5 | Direct impact on sales and customer service. Potential revenue loss. |

| Primary Database Server | 2 | 0.5 | Underpins most critical applications. Data loss highly detrimental. |

| Email Service | 8 | 4 | Essential for internal/external communication. Extended outage impacts productivity. |

| Web Server | 1 | 0 | Public-facing, direct revenue impact. Requires high availability. |

| File Servers | 12 | 6 | Shared document access, can be mitigated with local copies for short periods. |

| ... (Add other critical systems) | | | |

6. Backup and Data Recovery Strategy

6.1 Data Classification

Data is classified based on its criticality, sensitivity, and regulatory requirements (e.g., Public, Internal, Confidential, Restricted). This classification dictates backup frequency, retention, and encryption standards.

6.2 Backup Types and Frequency

  • Full Backups: Complete copy of all selected data. Performed weekly for all critical systems.
  • Incremental Backups: Copies only data that has changed since the last full or incremental backup. Performed daily for critical systems.
  • Differential Backups: Copies all data that has changed since the last full backup. Performed daily for non-critical systems.
  • Database Transaction Logs: Continuously backed up or replicated for critical databases to ensure minimal data loss (RPO < 1 hour).

6.3 Backup Retention Policies

  • Critical Business Data (ERP, CRM, Primary DB):

* Daily Incremental/Differential: 30 days

* Weekly Full: 90 days

* Monthly Full: 1 year

* Annual Full: 7 years (off-site archival)

  • Email and File Servers:

* Daily Incremental/Differential: 30 days

* Weekly Full: 60 days

* Monthly Full: 6 months

  • Non-Critical Systems:

* Weekly Full: 30 days

6.4 Backup Storage Locations

  • On-site Storage: Short-term backups are stored on local Network Attached Storage (NAS) or Storage Area Network (SAN) within the primary data center.
  • Off-site Storage: All weekly and monthly full backups, as well as critical database logs, are replicated to a secure off-site facility (e.g., geographically distinct cloud region, third-party vaulting service) at least 100 miles from the primary site.
  • Cloud Storage: Utilizing [Cloud Provider, e.g., AWS S3, Azure Blob Storage] for immutable, versioned backups with geo-redundancy.

6.5 Data Encryption and Security

All backups, both in transit and at rest, are encrypted using AES-256 encryption. Access to backup systems and storage is restricted to authorized DRT members only, enforced by strong authentication and access control policies.

6.6 Backup Integrity and Verification

Regular integrity checks and test restores are performed monthly to verify the recoverability of backups. Logs are reviewed daily for backup job success/failure.

7. Failover and Recovery Procedures

7.1 Disaster Declaration and Activation

  1. Detection: An incident is detected (e.g., system outage, data center failure, cyber-attack).
  2. Assessment: DR Coordinator, with input from IT Infrastructure Lead, assesses the severity and scope of the incident.
  3. Declaration: If the incident meets predefined disaster criteria (e.g., RTOs cannot be met within the primary site, catastrophic failure), the DR Coordinator declares a disaster.
  4. Notification: DR Coordinator notifies the DRT and executive management via predetermined communication channels (e.g., emergency SMS, conference call).
  5. Activation: DRT members convene (virtually or physically) and activate the DRP.

7.2 Failover Procedures for Critical Systems (General Steps)

  • Primary Site Failure Scenario:

1. Isolate Primary Site (if compromised): Disconnect primary network to prevent further damage or propagation if a cyber-attack.

2. Activate DR Site/Cloud Services: Initiate the provisioning or activation of resources in the designated disaster recovery site or cloud region. This may involve:

* Spinning up virtual machines from templates.

* Configuring network settings (IP addresses, VPNs).

* Activating replicated storage volumes.

3. Data Restoration/Synchronization:

* For systems with active-passive replication: Promote standby databases/servers.

* For systems relying on backups: Restore the latest valid backup to the DR environment, prioritizing critical data (RPO targets).

* Apply transaction logs for critical databases to achieve the desired RPO.

4. Application Installation & Configuration: Install and configure necessary applications on the recovered servers, ensuring correct dependencies and settings.

5. DNS Update: Update DNS records (internal and external) to point to the IP addresses/hostnames of the recovered systems in the DR environment. This may involve reducing TTLs proactively.

6. System Verification:

* Perform comprehensive health checks on all recovered infrastructure (servers, network, storage).

* Execute application-specific test scripts to verify functionality and data integrity.

* DRT members and designated business users validate critical business processes.

7. User Access Restoration: Restore user access to recovered applications and data.

8. Monitoring: Implement enhanced monitoring on the DR environment to detect any issues post-recovery.

  • Specific System Runbooks:

* Detailed, step-by-step runbooks for each critical system (e.g., "ERP System Recovery Runbook," "Database Failover Runbook") are maintained in Appendix B: System Recovery Runbooks. These include specific commands, configurations, and verification steps.

7.3 Failback Procedures (Return to Primary Site)

  1. Assess Primary Site Readiness: Ensure the primary site is fully restored, secured, and ready to resume operations.
  2. Synchronize Data: Replicate any data changes from the DR site back to the primary site. This is a critical step to prevent data loss during the transition.
  3. Schedule Failback: Plan the failback during a low-impact maintenance window.
  4. Pre-Failback Verification: Test primary site systems with synchronized data but without live user traffic.
  5. Execute Failback:

* Briefly halt operations on the DR site.

* Perform final data synchronization.

* Update DNS records to point back to the primary site.

* Bring primary site systems online.

  1. Post-Failback Verification: Thoroughly test all systems and applications on the primary site.
  2. Deactivate DR Site: Once confirmed stable, power down or decommission resources in the DR site to minimize costs.

8. Communication Plan

8.1 Internal Communication

  • DR Team:

* Initial Notification: Emergency SMS, dedicated group chat, and conference bridge.

* Status Updates: Regular updates (e.g., hourly during active recovery) via conference calls, shared document/status board.

  • Employees:

* Initial Notification: Company-wide email (if email system is available), internal intranet portal, emergency hotline, or designated HR/management communication.

* Status Updates: Regular updates (e.g., every 4 hours) on expected recovery times, impact on services, and alternative work arrangements.

  • Executive Management:

* Initial Notification: Direct call from DR Coordinator.

* Status Updates: Daily briefings, or more frequently as needed, on recovery progress and business impact.

8.2 External Communication

  • Customers:

* Initial Notification: Public status page ([status.yourcompany.com]), email to

gemini Output

Disaster Recovery Plan

Document Version: 1.0

Date: October 26, 2023

Prepared For: [Customer Organization Name]


1. Executive Summary

This Disaster Recovery Plan (DRP) outlines the strategies, procedures, and responsibilities for responding to and recovering from a disaster that impacts the critical IT infrastructure and operations of [Customer Organization Name]. The primary objective of this DRP is to minimize downtime, prevent data loss, and ensure the rapid restoration of essential business functions, thereby safeguarding the organization's continuity, reputation, and financial stability. This plan defines clear Recovery Time Objectives (RTO) and Recovery Point Objectives (RPO) and details the steps required to achieve them.

2. Scope

This DRP covers all critical IT systems, applications, data, and associated infrastructure essential for the continued operation of [Customer Organization Name]'s core business functions. This includes, but is not limited to:

  • Core Business Applications: [List key applications, e.g., ERP, CRM, Financial Systems, E-commerce Platform]
  • Data Repositories: [List key databases, file servers, document management systems]
  • Network Infrastructure: [Internal and external connectivity, firewalls, routers, switches]
  • Server Infrastructure: [Physical and virtual servers, storage arrays]
  • Communication Systems: [Email, VoIP, collaboration platforms]
  • Cloud Services: [Specific SaaS/IaaS platforms used, e.g., AWS, Azure, Salesforce]
  • Key Personnel: Roles and responsibilities of personnel involved in disaster recovery.

3. Disaster Recovery Objectives

The following Recovery Time Objectives (RTO) and Recovery Point Objectives (RPO) have been established based on the criticality of systems and data. These objectives define the maximum tolerable downtime and data loss, respectively, for different categories of assets.

| System/Application Criticality | Examples of Systems | Recovery Time Objective (RTO) | Recovery Point Objective (RPO) |

| :----------------------------- | :------------------ | :----------------------------- | :----------------------------- |

| Tier 0: Mission-Critical | Core ERP, Primary Database, E-commerce Frontend | 0-2 hours | 0-15 minutes |

| Tier 1: Business-Critical | CRM, Financial Reporting, Email, Document Management | 2-8 hours | 15-60 minutes |

| Tier 2: Business-Support | HR Systems, Intranet, Development Environments | 8-24 hours | 1-4 hours |

| Tier 3: Non-Critical | Test Environments, Legacy Archives | 24-72 hours | 4-24 hours |

  • Recovery Time Objective (RTO): The maximum amount of time a business process can be down after a disaster or disruption before significant damage or loss is incurred.
  • Recovery Point Objective (RPO): The maximum amount of data loss (measured in time) that is tolerable during a disaster.

4. Roles and Responsibilities

A dedicated Disaster Recovery Team (DRT) will be established with clearly defined roles and responsibilities.

| Role | Primary Responsibilities |

| :------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

disaster_recovery_plan.md
Download as Markdown
Copy all content
Full output as text
Download ZIP
IDE-ready project ZIP
Copy share link
Permanent URL for this run
Get Embed Code
Embed this result on any website
Print / Save PDF
Use browser print dialog
\n\n\n"); var hasSrcMain=Object.keys(extracted).some(function(k){return k.indexOf("src/main")>=0;}); if(!hasSrcMain) zip.file(folder+"src/main."+ext,"import React from 'react'\nimport ReactDOM from 'react-dom/client'\nimport App from './App'\nimport './index.css'\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n \n \n \n)\n"); var hasSrcApp=Object.keys(extracted).some(function(k){return k==="src/App."+ext||k==="App."+ext;}); if(!hasSrcApp) zip.file(folder+"src/App."+ext,"import React from 'react'\nimport './App.css'\n\nfunction App(){\n return(\n
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n
\n )\n}\nexport default App\n"); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e}\n.app{min-height:100vh;display:flex;flex-direction:column}\n.app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px}\nh1{font-size:2.5rem;font-weight:700}\n"); zip.file(folder+"src/App.css",""); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/pages/.gitkeep",""); zip.file(folder+"src/hooks/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\n## Open in IDE\nOpen the project folder in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- Vue (Vite + Composition API + TypeScript) --- */ function buildVue(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "type": "module",\n "scripts": {\n "dev": "vite",\n "build": "vue-tsc -b && vite build",\n "preview": "vite preview"\n },\n "dependencies": {\n "vue": "^3.5.13",\n "vue-router": "^4.4.5",\n "pinia": "^2.3.0",\n "axios": "^1.7.9"\n },\n "devDependencies": {\n "@vitejs/plugin-vue": "^5.2.1",\n "typescript": "~5.7.3",\n "vite": "^6.0.5",\n "vue-tsc": "^2.2.0"\n }\n}\n'); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite'\nimport vue from '@vitejs/plugin-vue'\nimport { resolve } from 'path'\n\nexport default defineConfig({\n plugins: [vue()],\n resolve: { alias: { '@': resolve(__dirname,'src') } }\n})\n"); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]}\n'); zip.file(folder+"tsconfig.app.json",'{\n "compilerOptions":{\n "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"],\n "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true,\n "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue",\n "strict":true,"paths":{"@/*":["./src/*"]}\n },\n "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"]\n}\n'); zip.file(folder+"env.d.ts","/// \n"); zip.file(folder+"index.html","\n\n\n \n \n "+slugTitle(pn)+"\n\n\n
\n \n\n\n"); var hasMain=Object.keys(extracted).some(function(k){return k==="src/main.ts"||k==="main.ts";}); if(!hasMain) zip.file(folder+"src/main.ts","import { createApp } from 'vue'\nimport { createPinia } from 'pinia'\nimport App from './App.vue'\nimport './assets/main.css'\n\nconst app = createApp(App)\napp.use(createPinia())\napp.mount('#app')\n"); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue","\n\n\n\n\n"); zip.file(folder+"src/assets/main.css","*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,sans-serif;background:#fff;color:#213547}\n"); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/views/.gitkeep",""); zip.file(folder+"src/stores/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\nOpen in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- Angular (v19 standalone) --- */ function buildAngular(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var sel=pn.replace(/_/g,"-"); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "scripts": {\n "ng": "ng",\n "start": "ng serve",\n "build": "ng build",\n "test": "ng test"\n },\n "dependencies": {\n "@angular/animations": "^19.0.0",\n "@angular/common": "^19.0.0",\n "@angular/compiler": "^19.0.0",\n "@angular/core": "^19.0.0",\n "@angular/forms": "^19.0.0",\n "@angular/platform-browser": "^19.0.0",\n "@angular/platform-browser-dynamic": "^19.0.0",\n "@angular/router": "^19.0.0",\n "rxjs": "~7.8.0",\n "tslib": "^2.3.0",\n "zone.js": "~0.15.0"\n },\n "devDependencies": {\n "@angular-devkit/build-angular": "^19.0.0",\n "@angular/cli": "^19.0.0",\n "@angular/compiler-cli": "^19.0.0",\n "typescript": "~5.6.0"\n }\n}\n'); zip.file(folder+"angular.json",'{\n "$schema": "./node_modules/@angular/cli/lib/config/schema.json",\n "version": 1,\n "newProjectRoot": "projects",\n "projects": {\n "'+pn+'": {\n "projectType": "application",\n "root": "",\n "sourceRoot": "src",\n "prefix": "app",\n "architect": {\n "build": {\n "builder": "@angular-devkit/build-angular:application",\n "options": {\n "outputPath": "dist/'+pn+'",\n "index": "src/index.html",\n "browser": "src/main.ts",\n "tsConfig": "tsconfig.app.json",\n "styles": ["src/styles.css"],\n "scripts": []\n }\n },\n "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"}\n }\n }\n }\n}\n'); zip.file(folder+"tsconfig.json",'{\n "compileOnSave": false,\n "compilerOptions": {"baseUrl":"./","outDir":"./dist/out-tsc","forceConsistentCasingInFileNames":true,"strict":true,"noImplicitOverride":true,"noPropertyAccessFromIndexSignature":true,"noImplicitReturns":true,"noFallthroughCasesInSwitch":true,"paths":{"@/*":["src/*"]},"skipLibCheck":true,"esModuleInterop":true,"sourceMap":true,"declaration":false,"experimentalDecorators":true,"moduleResolution":"bundler","importHelpers":true,"target":"ES2022","module":"ES2022","useDefineForClassFields":false,"lib":["ES2022","dom"]},\n "references":[{"path":"./tsconfig.app.json"}]\n}\n'); zip.file(folder+"tsconfig.app.json",'{\n "extends":"./tsconfig.json",\n "compilerOptions":{"outDir":"./dist/out-tsc","types":[]},\n "files":["src/main.ts"],\n "include":["src/**/*.d.ts"]\n}\n'); zip.file(folder+"src/index.html","\n\n\n \n "+slugTitle(pn)+"\n \n \n \n\n\n \n\n\n"); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser';\nimport { appConfig } from './app/app.config';\nimport { AppComponent } from './app/app.component';\n\nbootstrapApplication(AppComponent, appConfig)\n .catch(err => console.error(err));\n"); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; }\nbody { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; }\n"); var hasComp=Object.keys(extracted).some(function(k){return k.indexOf("app.component")>=0;}); if(!hasComp){ zip.file(folder+"src/app/app.component.ts","import { Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\n@Component({\n selector: 'app-root',\n standalone: true,\n imports: [RouterOutlet],\n templateUrl: './app.component.html',\n styleUrl: './app.component.css'\n})\nexport class AppComponent {\n title = '"+pn+"';\n}\n"); zip.file(folder+"src/app/app.component.html","
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n \n
\n"); zip.file(folder+"src/app/app.component.css",".app-header{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:16px}h1{font-size:2.5rem;font-weight:700;color:#6366f1}\n"); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';\nimport { provideRouter } from '@angular/router';\nimport { routes } from './app.routes';\n\nexport const appConfig: ApplicationConfig = {\n providers: [\n provideZoneChangeDetection({ eventCoalescing: true }),\n provideRouter(routes)\n ]\n};\n"); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router';\n\nexport const routes: Routes = [];\n"); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nng serve\n# or: npm start\n\`\`\`\n\n## Build\n\`\`\`bash\nng build\n\`\`\`\n\nOpen in VS Code with Angular Language Service extension.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n.angular/\n"); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/m,"").trim(); var reqMap={"numpy":"numpy","pandas":"pandas","sklearn":"scikit-learn","tensorflow":"tensorflow","torch":"torch","flask":"flask","fastapi":"fastapi","uvicorn":"uvicorn","requests":"requests","sqlalchemy":"sqlalchemy","pydantic":"pydantic","dotenv":"python-dotenv","PIL":"Pillow","cv2":"opencv-python","matplotlib":"matplotlib","seaborn":"seaborn","scipy":"scipy"}; var reqs=[]; Object.keys(reqMap).forEach(function(k){if(src.indexOf("import "+k)>=0||src.indexOf("from "+k)>=0)reqs.push(reqMap[k]);}); var reqsTxt=reqs.length?reqs.join("\n"):"# add dependencies here\n"; zip.file(folder+"main.py",src||"# "+title+"\n# Generated by PantheraHive BOS\n\nprint(title+\" loaded\")\n"); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\npython3 -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n\`\`\`\n\n## Run\n\`\`\`bash\npython main.py\n\`\`\`\n"); zip.file(folder+".gitignore",".venv/\n__pycache__/\n*.pyc\n.env\n.DS_Store\n"); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/m,"").trim(); var depMap={"mongoose":"^8.0.0","dotenv":"^16.4.5","axios":"^1.7.9","cors":"^2.8.5","bcryptjs":"^2.4.3","jsonwebtoken":"^9.0.2","socket.io":"^4.7.4","uuid":"^9.0.1","zod":"^3.22.4","express":"^4.18.2"}; var deps={}; Object.keys(depMap).forEach(function(k){if(src.indexOf(k)>=0)deps[k]=depMap[k];}); if(!deps["express"])deps["express"]="^4.18.2"; var pkgJson=JSON.stringify({"name":pn,"version":"1.0.0","main":"src/index.js","scripts":{"start":"node src/index.js","dev":"nodemon src/index.js"},"dependencies":deps,"devDependencies":{"nodemon":"^3.0.3"}},null,2)+"\n"; zip.file(folder+"package.json",pkgJson); var fallback="const express=require(\"express\");\nconst app=express();\napp.use(express.json());\n\napp.get(\"/\",(req,res)=>{\n res.json({message:\""+title+" API\"});\n});\n\nconst PORT=process.env.PORT||3000;\napp.listen(PORT,()=>console.log(\"Server on port \"+PORT));\n"; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000\n"); zip.file(folder+".gitignore","node_modules/\n.env\n.DS_Store\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\n\`\`\`\n\n## Run\n\`\`\`bash\nnpm run dev\n\`\`\`\n"); } /* --- Vanilla HTML --- */ function buildVanillaHtml(zip,folder,app,code){ var title=slugTitle(app); var isFullDoc=code.trim().toLowerCase().indexOf("=0||code.trim().toLowerCase().indexOf("=0; var indexHtml=isFullDoc?code:"\n\n\n\n\n"+title+"\n\n\n\n"+code+"\n\n\n\n"; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e}\n"); zip.file(folder+"script.js","/* "+title+" — scripts */\n"); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Open\nDouble-click \`index.html\` in your browser.\n\nOr serve locally:\n\`\`\`bash\nnpx serve .\n# or\npython3 -m http.server 3000\n\`\`\`\n"); zip.file(folder+".gitignore",".DS_Store\nnode_modules/\n.env\n"); } /* ===== MAIN ===== */ var sc=document.createElement("script"); sc.src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"; sc.onerror=function(){ if(lbl)lbl.textContent="Download ZIP"; alert("JSZip load failed — check connection."); }; sc.onload=function(){ var zip=new JSZip(); var base=(_phFname||"output").replace(/\.[^.]+$/,""); var app=base.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")||"my_app"; var folder=app+"/"; var vc=document.getElementById("panel-content"); var panelTxt=vc?(vc.innerText||vc.textContent||""):""; var lang=detectLang(_phCode,panelTxt); if(_phIsHtml){ buildVanillaHtml(zip,folder,app,_phCode); } else if(lang==="flutter"){ buildFlutter(zip,folder,app,_phCode,panelTxt); } else if(lang==="react-native"){ buildReactNative(zip,folder,app,_phCode,panelTxt); } else if(lang==="swift"){ buildSwift(zip,folder,app,_phCode,panelTxt); } else if(lang==="kotlin"){ buildKotlin(zip,folder,app,_phCode,panelTxt); } else if(lang==="react"){ buildReact(zip,folder,app,_phCode,panelTxt); } else if(lang==="vue"){ buildVue(zip,folder,app,_phCode,panelTxt); } else if(lang==="angular"){ buildAngular(zip,folder,app,_phCode,panelTxt); } else if(lang==="python"){ buildPython(zip,folder,app,_phCode); } else if(lang==="node"){ buildNode(zip,folder,app,_phCode); } else { /* Document/content workflow */ var title=app.replace(/_/g," "); var md=_phAll||_phCode||panelTxt||"No content"; zip.file(folder+app+".md",md); var h=""+title+""; h+="

"+title+"

"; var hc=md.replace(/&/g,"&").replace(//g,">"); hc=hc.replace(/^### (.+)$/gm,"

$1

"); hc=hc.replace(/^## (.+)$/gm,"

$1

"); hc=hc.replace(/^# (.+)$/gm,"

$1

"); hc=hc.replace(/\*\*(.+?)\*\*/g,"$1"); hc=hc.replace(/\n{2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\nFiles:\n- "+app+".md (Markdown)\n- "+app+".html (styled HTML)\n"); } zip.generateAsync({type:"blob"}).then(function(blob){ var a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download=app+".zip"; a.click(); URL.revokeObjectURL(a.href); if(lbl)lbl.textContent="Download ZIP"; }); }; document.head.appendChild(sc); } function phShare(){navigator.clipboard.writeText(window.location.href).then(function(){var el=document.getElementById("ph-share-lbl");if(el){el.textContent="Link copied!";setTimeout(function(){el.textContent="Copy share link";},2500);}});}function phEmbed(){var runId=window.location.pathname.split("/").pop().replace(".html","");var embedUrl="https://pantherahive.com/embed/"+runId;var code='';navigator.clipboard.writeText(code).then(function(){var el=document.getElementById("ph-embed-lbl");if(el){el.textContent="Embed code copied!";setTimeout(function(){el.textContent="Get Embed Code";},2500);}});}