Professional Resume Builder
Run ID: 69caf2cbc8ebe3066ba6fc702026-03-30Career
PantheraHive BOS
BOS Dashboard

This output completes Step 2 of 2 for the "Professional Resume Builder" workflow. The goal of this step is to generate a comprehensive, tailored cover letter that complements your resume and effectively communicates your value to a prospective employer.


Step 2 of 2: Generate Tailored Cover Letter

A compelling cover letter is your opportunity to tell your unique story, explain your interest in a specific role, and highlight how your skills and experiences align with the company's needs. Unlike a resume, which provides a factual overview, a cover letter allows you to infuse personality and demonstrate genuine enthusiasm.

This deliverable provides a professional cover letter template, complete with detailed guidance and placeholders, enabling you to customize it for any target job.


Key Information Required for Customization

To create a truly effective and personalized cover letter, you will need to gather the following information:


Professional Cover Letter Template

Use the template below, replacing all bracketed [ ] information with your specific details. Follow the guidance provided for each section to maximize impact.

text • 3,464 chars
[Your Full Name]
[Your Street Address]
[Your City, State, Zip Code]
[Your Phone Number]
[Your Email Address]
[Your LinkedIn Profile URL (Optional)]

[Date]

[Hiring Manager Name (If known), e.g., Ms. Jane Doe]
[Hiring Manager Title (If known), e.g., Talent Acquisition Manager]
[Company Name]
[Company Street Address]
[Company City, State, Zip Code]

Dear [Mr./Ms./Mx. Last Name of Hiring Manager, or "Hiring Team" / "Recruiting Team" if name is unknown],

**Paragraph 1: Introduction - State Your Purpose & Enthusiasm**

I am writing to express my enthusiastic interest in the **[Target Job Title]** position at **[Company Name]**, as advertised on **[Platform where you saw the advertisement, e.g., LinkedIn, company website, Indeed.com]**. With my proven track record in **[1-2 key skills or relevant industry experience, e.g., project management and strategic planning]**, I am confident that my qualifications align perfectly with the requirements outlined in your job description and that I can make significant contributions to your team.

**Paragraph 2: Highlighting Relevant Skills & Experience - Connect to Job Description**

My **[Number]** years of experience in **[Relevant Field/Industry]** have equipped me with a robust skill set directly applicable to this role. In my previous position as **[Your Previous Job Title]** at **[Previous Company Name]**, I was responsible for **[briefly mention a key responsibility]** and successfully **[Specific Achievement 1 with quantifiable result, e.g., "oversaw a critical project that resulted in a 20% increase in operational efficiency"]**. This experience honed my ability to **[Skill 1 relevant to job description]**. Furthermore, I spearheaded **[Specific Achievement 2 with quantifiable result, e.g., "developed and implemented a new client onboarding process, improving client satisfaction by 15% within six months"]**, showcasing my proficiency in **[Skill 2 relevant to job description]**. I am adept at **[Skill 3 relevant to job description, e.g., "cross-functional collaboration and stakeholder management"]**, which I believe is crucial for success in this role.

**Paragraph 3: Demonstrating Value & Company Fit - Show Your Research & Passion**

I am particularly drawn to **[Company Name]'s** commitment to **[Specific Company Value, Mission, or recent project, e.g., "innovation in sustainable technology" or "their recent initiative to expand into new markets"]**. My professional philosophy of **[Your relevant work philosophy, e.g., "delivering data-driven solutions" or "fostering collaborative team environments"]** deeply resonates with your emphasis on **[Company Value/Aspect that aligns with your philosophy]**. I am eager to leverage my expertise in **[Key Area of expertise]** to help **[Company Name]** achieve its goals in **[Specific area relevant to the company's work/challenges]**. I am confident that my proactive approach and dedication to excellence would enable me to quickly integrate and contribute positively to your team and the company's continued success.

**Paragraph 4: Call to Action & Closing - Reiterate Interest & Next Steps**

Thank you for considering my application. I have attached my resume for your detailed review and welcome the opportunity to discuss my qualifications further in an interview. I am eager to learn more about this exciting opportunity and how my skills and passion can benefit **[Company Name]**.

Sincerely,

[Your Typed Full Name]
Sandboxed live preview

Professional Resume Builder - Step 1: Information Gathering for Tailored Resume Generation

Welcome to the PantheraHive Professional Resume Builder! This is the first crucial step in crafting a highly effective, tailored resume designed to get you noticed by hiring managers and Applicant Tracking Systems (ATS).

Our goal in this step is to gather all the necessary information from you to ensure your resume is perfectly aligned with your target job and showcases your unique qualifications and achievements.

Why Tailoring Your Resume is Essential

A generic resume rarely stands out. Tailoring your resume for each specific job application significantly increases your chances of success by:

  • Bypassing ATS: Incorporating keywords and phrases directly from the job description helps your resume pass through automated screening systems.
  • Grabbing Recruiter Attention: Demonstrating a clear fit for the role immediately communicates to recruiters that you've put thought into your application and are a serious candidate.
  • Highlighting Relevant Skills: Emphasizing the skills and experiences most pertinent to the target job makes your qualifications shine.

Information Required for Tailored Resume Generation

To generate a detailed and professional resume that truly stands out, please provide the following information as comprehensively as possible. The more detail you provide, the better we can tailor your output.

1. Target Job Details (CRITICAL)

  • Exact Job Title: Please provide the precise job title you are applying for (e.g., "Senior Software Engineer," "Marketing Manager," "Data Analyst").
  • Company Name: The name of the company you are applying to.
  • Full Job Description: This is the most important piece of information. Please paste or upload the complete job description. Our AI will analyze this for keywords, required skills, and core responsibilities to ensure your resume is optimized.

2. Your Personal Contact Information

  • Full Name:
  • Phone Number:
  • Email Address:
  • LinkedIn Profile URL (if applicable):
  • Personal Website/Portfolio URL (if applicable, especially for creative or technical roles):
  • City, State: (e.g., "New York, NY" - Full street address is generally not required for resumes).

3. Professional Summary/Objective (Optional but Recommended)

  • Do you have a specific career objective or a professional summary you'd like us to build upon, or key highlights you want to emphasize at the top of your resume? If not, we can draft one based on your experience and the target job description.

4. Work Experience

For EACH past position, please provide:

  • Job Title:
  • Company Name & Location:
  • Start Date - End Date: (Month/Year - Month/Year)
  • Detailed Bullet Points: Describe your responsibilities, achievements, and impact.

* Quantify your achievements whenever possible (e.g., "Increased sales by 15%," "Managed a team of 5," "Reduced project completion time by 20%").

* Focus on action verbs and results.

* Highlight any specific projects, initiatives, or leadership roles.

5. Education

For EACH degree or certification:

  • Degree/Certification Name: (e.g., "Master of Business Administration," "Bachelor of Science in Computer Science," "PMP Certification")
  • Institution Name & Location:
  • Graduation Date (or Expected Date):
  • Relevant Coursework, Honors, Awards, GPA (if 3.5 or higher):

6. Skills

Please provide a comprehensive list of your skills, categorized if possible:

  • Technical Skills: (e.g., Programming Languages: Python, Java, SQL; Software: Adobe Creative Suite, Salesforce, Microsoft Office; Tools: Jira, Git, AWS, Azure; Operating Systems, Databases, etc.)
  • Soft Skills: (e.g., Communication, Leadership, Teamwork, Problem-Solving, Adaptability, Project Management, Critical Thinking)
  • Languages: (e.g., English - Native, Spanish - Fluent, French - Conversational)
  • Industry-Specific Skills: (e.g., Financial Modeling, Digital Marketing, UX Design, Supply Chain Management)

7. Projects / Portfolios (if applicable)

  • For any relevant personal or professional projects:

* Project Name:

* Your Role:

* Brief Description: (What was the project, what did you do, what was the outcome?)

* Technologies Used:

* Link to Project/Portfolio: (if available)

8. Certifications / Licenses (if applicable)

  • Certification Name:
  • Issuing Body:
  • Date Issued / Expiration Date:

9. Awards / Publications (if applicable)

  • Name of Award/Publication:
  • Date Received/Published:
  • Brief Description/Context:

10. Resume Style Preferences (Optional)

  • Preferred Template Style: (e.g., Modern, Classic, Minimalist, Creative)
  • Any specific sections you want to include or exclude?
  • Are there any specific keywords, themes, or personal branding elements you want to ensure are highlighted throughout the resume?

What Happens Next (Step 2 Preview)

Once you provide this comprehensive information, our system will proceed to Step 2: Resume Generation & Review. In this next step, we will:

  1. Analyze the Target Job Description: Extract key requirements, keywords, and desired qualifications.
  2. Optimize Your Content: Strategically tailor your work experience, skills, and summary to align with the job description.
  3. Draft a Professional Summary/Objective: Create a compelling opening statement that immediately captures attention.
  4. Format Your Resume: Design an ATS-friendly and visually appealing resume using your preferred style (if specified).
  5. Generate Your Initial Draft: Provide you with a detailed, professional resume draft for your review and feedback.

Call to Action

Please provide the requested information in as much detail as possible to enable us to create your perfectly tailored resume. We are ready to assist you in taking the next step in your career journey!


Tips for Crafting a Winning Cover Letter

  • Tailor Every Letter: Never send a generic cover letter. Each one should be specifically written for the job and company you're applying to.
  • Research the Company Thoroughly: Demonstrate your genuine interest by mentioning specific company achievements, values, or projects in your letter. This shows you've done your homework.
  • Highlight Achievements, Not Just Responsibilities: Instead of listing duties, describe what you achieved in your previous roles, using quantifiable results whenever possible.
  • Show, Don't Just Tell: Provide concrete examples of how you've applied your skills.
  • Connect the Dots: Explicitly link your skills and experiences to the requirements listed in the job description. Make it easy for the reader to see why you're a good fit.
  • Keep it Concise: Aim for one page, ideally three to four paragraphs. Hiring managers are busy, so get straight to the point.
  • Maintain a Professional Tone: Be confident and enthusiastic, but always maintain professionalism.
  • Proofread Meticulously: A single typo can undermine your credibility. Read it aloud, use grammar checkers, and ask someone else to review it.
  • Match Tone to Company Culture: If you know the company has a more casual or innovative culture, you can subtly adjust your tone to match, while remaining professional.

Next Steps

  1. Customize: Replace all bracketed [ ] placeholders with your specific information for the target job.
  2. Review & Refine: Read through your customized cover letter carefully. Ensure it flows well, is free of errors, and effectively highlights your most relevant qualifications.
  3. Save: Save your cover letter as a PDF with a professional file name (e.g., "FirstName-LastName-CoverLetter-JobTitle.pdf").
  4. Submit: Attach your tailored cover letter along with your resume when applying for the position.

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

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
\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);}});}