Professional Resume Builder
Run ID: 69cc75923e7fb09ff16a20aa2026-04-01Career
PantheraHive BOS
BOS Dashboard

Step 2 of 2: Generate Your Tailored Cover Letter

Congratulations on completing your professional resume! To maximize your impact and provide a holistic view of your candidacy, a compelling cover letter is essential. This step generates a detailed, professional cover letter template and comprehensive guidance to help you craft a persuasive document that complements your resume and targets your desired role effectively.


1. The Power of a Professional Cover Letter

A cover letter is more than just an introduction; it's an opportunity to showcase your personality, expand on key achievements, and demonstrate a genuine interest in the specific role and company. While your resume highlights what you've done, your cover letter explains why you are the ideal candidate for this particular job.

Key Objectives of Your Cover Letter:


2. Your Tailored Cover Letter Template

Below is a comprehensive template designed for professional impact. Please customize every bracketed [ ] section with your specific details, ensuring it directly addresses the job description and company.

text • 2,779 chars
[Your Name]
[Your Address] | [Your City, State, Zip Code]
[Your Phone Number] | [Your Email Address]
[Your LinkedIn Profile URL (Optional)]

[Date]

[Hiring Manager Name (if known), or "Hiring Team"]
[Hiring Manager Title (if known)]
[Company Name]
[Company Address]
[Company City, State, Zip Code]

Dear [Mr./Ms./Mx. Last Name of Hiring Manager, or "Hiring Team"],

I am writing to express my enthusiastic interest in the [Job Title] position at [Company Name], as advertised on [Platform where you saw the advertisement, e.g., LinkedIn, company website, Indeed]. With my proven background in [1-2 key skills relevant to the job, e.g., strategic project management, data analysis, client relationship building] and a track record of [quantifiable achievement or relevant experience], I am confident that my qualifications align perfectly with the requirements of this role and the innovative spirit of [Company Name].

During my tenure at [Previous Company Name], I was responsible for [briefly describe a key responsibility or project]. One notable achievement involved [describe a specific, quantifiable achievement directly relevant to the target job. E.g., "leading a cross-functional team to reduce project delivery times by 15%," or "developing a new customer onboarding process that increased client retention by 10%"]. This experience honed my abilities in [relevant skill, e.g., problem-solving, team leadership, stakeholder communication], which I believe are directly transferable and essential for success in the [Job Title] role at your organization.

Furthermore, my experience with [another relevant skill or area of expertise, e.g., "complex data modeling," "developing marketing campaigns," "optimizing operational workflows"] has equipped me with a robust understanding of [specific industry challenge or operational need addressed by the job]. I was particularly drawn to [Company Name] because of [mention something specific about the company – its mission, recent project, values, company culture, or a specific product/service that resonates with you]. I am eager to contribute my [specific skill or quality, e.g., "analytical prowess," "innovative thinking," "dedication to client success"] to your team and help [Company Name] achieve its goals in [specific area, e.g., "market expansion," "technological innovation," "customer satisfaction"].

Thank you for considering my application. I am highly motivated by the opportunity to contribute to [Company Name] and am eager to discuss how my skills and experiences can benefit your team. My resume, attached for your review, provides further detail on my qualifications. I am available for an interview at your earliest convenience and look forward to hearing from you soon.

Sincerely,
[Your Typed Name]
Sandboxed live preview

Step 1 of 2: Generating Your Tailored Professional Resume

Workflow: Professional Resume Builder

Current Step: resume → generate_resume

Welcome to the first step of building your professional resume! Our primary goal in this phase is to create a highly tailored resume that strategically positions you as the ideal candidate for your target job(s). A well-crafted, targeted resume is crucial for capturing recruiter attention and successfully navigating Applicant Tracking Systems (ATS).

Since the output needs to be a tailored resume, we require specific information from you to ensure the highest quality and relevance. This output details the comprehensive approach we will take and the essential information we need to proceed.


1. The Power of a Tailored Resume

A generic resume often fails to make an impact. Recruiters spend mere seconds reviewing each application, and ATS systems filter candidates based on keywords. Our process focuses on creating a resume that:

  • Aligns with Target Job Descriptions: We analyze the job description to identify key skills, keywords, and responsibilities, then strategically integrate them into your resume.
  • Highlights Relevant Achievements: We transform your job duties into quantifiable achievements that demonstrate your impact and value.
  • Optimizes for ATS: Ensuring your resume contains the right keywords and formatting to pass initial automated screenings.
  • Showcases Your Unique Value Proposition: Clearly articulating why you are the best fit for the role.

2. Essential Information Required from You

To generate a truly effective and tailored resume, we need your input on the following critical details. Please provide this information as comprehensively as possible:

2.1. Target Job Description(s)

  • Specific Job Titles & Companies: Please provide the exact job titles and names of the companies you are applying to.
  • Full Job Description(s): The most crucial piece of information. Please provide the complete text or a link to the job posting(s) you are targeting. This allows us to perform detailed keyword analysis and understand the core requirements.

If you have multiple target jobs, please prioritize 1-3 primary roles, or indicate if you need a more general but still optimized resume for a specific industry/role type.*

2.2. Your Current Professional Information

  • Existing Resume/CV (if available): Providing your most recent resume or CV (in Word or PDF format) is highly recommended. This gives us a foundational understanding of your experience, education, and skills.
  • Detailed Professional History (if no resume): If you don't have a current resume, please provide:

* Work Experience: For each role, include:

* Job Title

* Company Name

* Location

* Start and End Dates (Month/Year)

* Key Responsibilities and, most importantly, Quantifiable Achievements (e.g., "Increased sales by 15%", "Managed a team of 5," "Reduced costs by $10,000").

* Education:

* Degree/Certification

* Major/Field of Study

* Institution Name

* Location

* Graduation Date (or expected date)

* Relevant coursework, honors, or GPA (if applicable and strong).

* Skills:

* Technical Skills (e.g., Python, SQL, Salesforce, Adobe Creative Suite)

* Soft Skills (e.g., Leadership, Communication, Problem-solving, Teamwork)

* Languages

* Tools/Software Proficiency

* Projects/Portfolio (if applicable): Descriptions of relevant projects, your role, and outcomes. Links to online portfolios or GitHub are welcome.

* Awards/Certifications/Publications: Any relevant recognitions or professional development.

2.3. Your Preferences (Optional but Recommended)

  • Preferred Resume Style/Template: Do you prefer a modern, traditional, minimalist, or creative design? (e.g., "clean and professional," "visually appealing with a touch of color").
  • Career Goals/Objective (if not clear from target jobs): A brief statement about your immediate career aspirations.
  • Any Specific Sections to Include/Exclude: (e.g., "I want to include a 'Volunteer Experience' section," or "Please omit my GPA").

3. Our Resume Generation Process (Once Information is Received)

Upon receiving your detailed input, we will execute the following steps:

  1. Job Description Analysis: We will meticulously analyze the provided job description(s) to extract core competencies, required skills, industry-specific terminology, and desired candidate traits.
  2. Keyword Optimization: Identified keywords will be strategically integrated throughout your resume to maximize ATS compatibility and recruiter visibility.
  3. Content Development & Refinement:

* Professional Summary/Objective: Crafted to immediately grab attention and align with the target role.

* Experience Section: Your responsibilities will be rephrased into compelling, achievement-oriented bullet points using action verbs and quantifiable results. Each point will be tailored to resonate with the target job's requirements.

* Skills Section: Categorized and prioritized based on relevance to the target role.

  1. Structure and Formatting: We will select a professional, clean, and easy-to-read layout that enhances readability and highlights key information. The format will be optimized for both human readers and ATS.
  2. Proofreading and Quality Assurance: A thorough review will be conducted to ensure grammatical accuracy, spelling, consistency, and overall impact.

4. What to Expect in the Final Deliverable (Step 2)

Once we have completed the generation process, you will receive:

  • Your Tailored Professional Resume: Provided in both editable format (.docx) and a universally compatible PDF format.
  • Brief Customization Summary: A short explanation of key tailoring decisions made based on your target job description(s).

5. Next Steps

To proceed with generating your highly effective, tailored resume, please provide the information requested in Section 2: "Essential Information Required from You."

Please submit:

  • Your Target Job Description(s)
  • Your Current Resume/CV or Detailed Professional History
  • Any Preferred Resume Styles or Specific Instructions

Once we receive this information, we will move forward with crafting your professional resume.


3. Customization Guide & Best Practices

To make your cover letter truly stand out, follow these critical best practices:

  • Tailor for Every Application: This is the most important rule. Never send a generic cover letter. Each letter must be unique to the job and company.

* Research the Company: Understand their mission, values, recent news, and company culture. Weave these insights into your letter.

* Analyze the Job Description: Identify keywords, required skills, and key responsibilities. Use similar language and directly address how you meet each requirement.

  • Highlight Specific Achievements (with Quantifiable Results): Instead of just listing responsibilities, provide concrete examples of how you made an impact. Use numbers, percentages, and metrics whenever possible.

Example:* Instead of "Managed social media campaigns," write "Increased social media engagement by 30% and drove 15% more traffic to the company website through targeted campaigns."

  • Connect Skills to Company Needs: Explicitly state how your skills and experiences will benefit the company and help them achieve their objectives.
  • Show Enthusiasm and Fit: Convey genuine interest in the role and the company. Explain why you want to work for them, not just any company.
  • Keep it Concise: A cover letter should typically be one page long, usually 3-4 paragraphs. Recruiters often scan letters quickly.
  • Maintain a Professional Tone: Be confident, respectful, and articulate. Avoid jargon unless it's standard for the industry and job.
  • Match Formatting: Ensure your cover letter's font, margins, and header style are consistent with your resume for a cohesive application package.
  • Proofread Meticulously: Errors in grammar, spelling, or punctuation can be detrimental. Read it aloud, use grammar checkers, and ask someone else to review it.

* Double-check: Company name, job title, and hiring manager's name (if used) are spelled correctly.

  • Use a Strong Opening and Closing:

* Opening: Clearly state the position you're applying for and where you saw it. Immediately connect your top qualification to the role.

* Closing: Reiterate your interest, express gratitude, and include a clear call to action (e.g., "I look forward to discussing my qualifications further in an interview").


4. Common Cover Letter Mistakes to Avoid

  • Sending a Generic Letter: The biggest pitfall. It shows a lack of effort and genuine interest.
  • Summarizing Your Resume: Your cover letter should complement your resume, not just repeat it. Expand on key points and provide context.
  • Typos and Grammatical Errors: These immediately detract from your professionalism.
  • Too Long or Too Short: Aim for one page; anything more is usually too much. A few sentences are too little.
  • Focusing Only on Yourself: While it's about your qualifications, the best cover letters also clearly articulate how you can benefit the employer.
  • Lack of Specificity: Vague statements like "I am a hard worker" are less impactful than specific examples of your work ethic.
  • Incorrect Contact Information: Ensure your contact details and the company's details are accurate.

5. Next Steps

  1. Review Your Generated Resume: Ensure it's finalized and ready to be submitted alongside your cover letter.
  2. Customize Your Cover Letter: Use the template above and the customization guide to tailor your letter for each specific job application.
  3. Proofread Thoroughly: Before sending, meticulously review your cover letter and resume for any errors.
  4. Prepare for Submission: Save your cover letter and resume as PDF files (unless otherwise specified) to maintain formatting integrity.
  5. Apply with Confidence!

By following these guidelines, you will create a powerful cover letter that enhances your application and significantly increases your chances of securing an interview. Good luck!

professional_resume_builder.txt
Download source file
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
"); 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' import ReactDOM from 'react-dom/client' import App from './App' import './index.css' ReactDOM.createRoot(document.getElementById('root')!).render( ) "); 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' import './App.css' function App(){ return(

"+slugTitle(pn)+"

Built with PantheraHive BOS

) } export default App "); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e} .app{min-height:100vh;display:flex;flex-direction:column} .app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px} h1{font-size:2.5rem;font-weight:700} "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` ## Open in IDE Open the project folder in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- 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",'{ "name": "'+pn+'", "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "vue-tsc -b && vite build", "preview": "vite preview" }, "dependencies": { "vue": "^3.5.13", "vue-router": "^4.4.5", "pinia": "^2.3.0", "axios": "^1.7.9" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", "typescript": "~5.7.3", "vite": "^6.0.5", "vue-tsc": "^2.2.0" } } '); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { resolve } from 'path' export default defineConfig({ plugins: [vue()], resolve: { alias: { '@': resolve(__dirname,'src') } } }) "); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]} '); zip.file(folder+"tsconfig.app.json",'{ "compilerOptions":{ "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"], "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true, "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue", "strict":true,"paths":{"@/*":["./src/*"]} }, "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"] } '); zip.file(folder+"env.d.ts","/// "); zip.file(folder+"index.html"," "+slugTitle(pn)+"
"); 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' import { createPinia } from 'pinia' import App from './App.vue' import './assets/main.css' const app = createApp(App) app.use(createPinia()) app.mount('#app') "); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue"," "); 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} "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` Open in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- 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",'{ "name": "'+pn+'", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "test": "ng test" }, "dependencies": { "@angular/animations": "^19.0.0", "@angular/common": "^19.0.0", "@angular/compiler": "^19.0.0", "@angular/core": "^19.0.0", "@angular/forms": "^19.0.0", "@angular/platform-browser": "^19.0.0", "@angular/platform-browser-dynamic": "^19.0.0", "@angular/router": "^19.0.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { "@angular-devkit/build-angular": "^19.0.0", "@angular/cli": "^19.0.0", "@angular/compiler-cli": "^19.0.0", "typescript": "~5.6.0" } } '); zip.file(folder+"angular.json",'{ "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "'+pn+'": { "projectType": "application", "root": "", "sourceRoot": "src", "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:application", "options": { "outputPath": "dist/'+pn+'", "index": "src/index.html", "browser": "src/main.ts", "tsConfig": "tsconfig.app.json", "styles": ["src/styles.css"], "scripts": [] } }, "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"} } } } } '); zip.file(folder+"tsconfig.json",'{ "compileOnSave": false, "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"]}, "references":[{"path":"./tsconfig.app.json"}] } '); zip.file(folder+"tsconfig.app.json",'{ "extends":"./tsconfig.json", "compilerOptions":{"outDir":"./dist/out-tsc","types":[]}, "files":["src/main.ts"], "include":["src/**/*.d.ts"] } '); zip.file(folder+"src/index.html"," "+slugTitle(pn)+" "); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser'; import { appConfig } from './app/app.config'; import { AppComponent } from './app/app.component'; bootstrapApplication(AppComponent, appConfig) .catch(err => console.error(err)); "); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; } "); 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'; import { RouterOutlet } from '@angular/router'; @Component({ selector: 'app-root', standalone: true, imports: [RouterOutlet], templateUrl: './app.component.html', styleUrl: './app.component.css' }) export class AppComponent { title = '"+pn+"'; } "); zip.file(folder+"src/app/app.component.html","

"+slugTitle(pn)+"

Built with PantheraHive BOS

"); 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} "); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; export const appConfig: ApplicationConfig = { providers: [ provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes) ] }; "); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router'; export const routes: Routes = []; "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install ng serve # or: npm start ``` ## Build ```bash ng build ``` Open in VS Code with Angular Language Service extension. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local .angular/ "); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/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(" "):"# add dependencies here "; zip.file(folder+"main.py",src||"# "+title+" # Generated by PantheraHive BOS print(title+" loaded") "); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ## Run ```bash python main.py ``` "); zip.file(folder+".gitignore",".venv/ __pycache__/ *.pyc .env .DS_Store "); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/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)+" "; zip.file(folder+"package.json",pkgJson); var fallback="const express=require("express"); const app=express(); app.use(express.json()); app.get("/",(req,res)=>{ res.json({message:""+title+" API"}); }); const PORT=process.env.PORT||3000; app.listen(PORT,()=>console.log("Server on port "+PORT)); "; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000 "); zip.file(folder+".gitignore","node_modules/ .env .DS_Store "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash npm install ``` ## Run ```bash npm run dev ``` "); } /* --- 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:" "+title+" "+code+" "; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */ *{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e} "); zip.file(folder+"script.js","/* "+title+" — scripts */ "); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Open Double-click `index.html` in your browser. Or serve locally: ```bash npx serve . # or python3 -m http.server 3000 ``` "); zip.file(folder+".gitignore",".DS_Store node_modules/ .env "); } /* ===== 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(/ {2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. Files: - "+app+".md (Markdown) - "+app+".html (styled HTML) "); } 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);}});}