Professional Resume Builder
Run ID: 69cc4b568f41b62a970c245d2026-03-31Career
PantheraHive BOS
BOS Dashboard

Professional Resume Builder: Step 2 of 2 - Generate Tailored Cover Letter

You are currently executing Step 2 of 2 in the "Professional Resume Builder" workflow: resume → generate_cover_letter.

This step focuses on generating a professional and highly customizable cover letter designed to complement your resume and specifically target the job you are applying for. A well-crafted cover letter introduces you, highlights your most relevant qualifications, and explains why you are an ideal candidate for the position and the company.


Understanding the Importance of a Cover Letter

While your resume provides a factual overview of your experience and skills, a cover letter offers a unique opportunity to:


Key Components of a Professional Cover Letter

Every effective cover letter should include the following sections, tailored to the specific job and company:

  1. Your Contact Information:

* Your Full Name

* Your Phone Number

* Your Email Address

* Your LinkedIn Profile URL (Optional, but recommended)

* Your City, State (Optional)

  1. Date:

* The date you are writing the letter.

  1. Hiring Manager/Recipient Information:

Hiring Manager's Name (If known, always* try to find it)

* Hiring Manager's Title

* Company Name

* Company Address

  1. Salutation:

* Formal and personalized (e.g., "Dear Mr./Ms. [Last Name]," or "Dear [Hiring Manager's Name],"). If you cannot find a specific name, use "Dear Hiring Manager," or "Dear [Department] Team,".

  1. Opening Paragraph (1-2 sentences):

* Clearly state the position you are applying for.

* Mention where you saw the job advertisement.

* Briefly express your enthusiasm and a key reason why you are interested.

  1. Body Paragraphs (2-3 paragraphs):

* Paragraph 1 (Skills & Experience Alignment): Connect your most relevant skills and experiences to the specific requirements mentioned in the job description. Use keywords from the job posting.

Paragraph 2 (Achievements & Value Proposition): Provide concrete examples of your achievements using the STAR method (Situation, Task, Action, Result) where possible. Quantify your accomplishments. Explain how you can add value to their team and help them achieve their* goals.

* Paragraph 3 (Cultural Fit & Research): Demonstrate that you've researched the company. Mention specific projects, values, or initiatives that resonate with you and explain why you believe you'd be a great cultural fit.

  1. Closing Paragraph (1-2 sentences):

* Reiterate your strong interest in the role.

* Express eagerness for an interview to discuss your qualifications further.

* Thank the reader for their time and consideration.

  1. Professional Closing:

* "Sincerely," "Regards," "Best regards,"

  1. Your Signature:

* Typed full name (and a handwritten signature if sending a hard copy).


Customizable Cover Letter Template

Below is a comprehensive, customizable cover letter template. Remember to replace all bracketed [PLACEHOLDER] text with your specific information and tailor the content for each job application.

text • 2,571 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 (e.g., Ms. Jane Doe)]
[Hiring Manager Title (e.g., Director of Marketing)]
[Company Name]
[Company Street Address]
[Company City, State, Zip Code]

Dear [Mr./Ms./Mx. Last Name OR Hiring Manager],

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 [Number] years of experience in [Your Industry/Field] and a proven track record in [Key Skill/Achievement relevant to the role], I am confident that my skills and qualifications align perfectly with the requirements outlined in your job description.

In my previous role as [Your Previous Job Title] at [Previous Company], I was responsible for [mention 1-2 key responsibilities relevant to the target job]. For example, I successfully [describe a specific achievement using quantifiable results, e.g., "streamlined the client onboarding process, leading to a 20% reduction in setup time and a 15% increase in client satisfaction"]. My expertise in [mention a specific software, methodology, or skill, e.g., "data analysis, project management, or UX design"] allowed me to [describe the positive impact or result]. I am particularly adept at [mention another key skill, e.g., "cross-functional collaboration, problem-solving, or strategic planning"], which I believe would be invaluable in contributing to your team's success.

I am particularly drawn to [Company Name] because of [mention something specific about the company – its mission, values, recent project, innovation, or reputation]. I admire your commitment to [mention a specific company value or initiative, e.g., "sustainable practices," "customer-centric innovation," or "community engagement"], which deeply resonates with my own professional values. I am eager to apply my [relevant skill 1] and [relevant skill 2] to contribute to [mention a specific company goal or project area, e.g., "your upcoming product launch," "expanding your market reach," or "optimizing operational efficiencies"].

Thank you for considering my application. I have attached my resume for your review and welcome the opportunity to discuss how my skills and experience can benefit [Company Name] in more detail. I am available for an interview at your earliest convenience and look forward to hearing from you soon.

Sincerely,
[Your Full Name]
Sandboxed live preview

Professional Resume: Resume Builder

This tailored resume is designed to highlight the key skills, experiences, and achievements relevant to a "Professional Resume Builder" role. It emphasizes expertise in career strategy, ATS optimization, compelling content creation, and client success.


[Your Name Here]

[Your Phone Number] | [Your Email Address] | [Your LinkedIn Profile URL] | [Your Professional Portfolio URL] | [Your City, State]


Summary

Highly accomplished and results-driven Professional Resume Builder with over 7 years of experience in crafting ATS-optimized, impactful resumes, cover letters, and LinkedIn profiles that secure interviews and accelerate career progression. Adept at translating diverse career histories into compelling narratives, leveraging deep knowledge of recruitment trends, industry-specific keywords, and modern job search strategies. Proven ability to empower clients across various industries to achieve their career goals through expert guidance and personalized professional branding.


Experience

Senior Resume & Career Consultant | Elite Career Solutions | [City, State]

May 2019 – Present

  • Lead a team of 3 junior resume writers, providing training, quality assurance, and feedback to ensure high-caliber client deliverables.
  • Successfully developed and optimized over 500 professional resumes, cover letters, and LinkedIn profiles, resulting in a documented 85% client interview success rate within 3 months of service completion.
  • Conducted in-depth career consultations for 200+ clients annually, identifying unique value propositions and tailoring strategic job search documents to specific target roles and industries.
  • Implemented an ATS keyword optimization strategy that increased resume visibility by an average of 40% for clients applying to competitive positions.
  • Authored and maintained a comprehensive internal style guide and best practices manual, ensuring consistency and excellence across all client-facing materials.
  • Developed and delivered workshops on resume writing, interview preparation, and personal branding to groups of 50+ job seekers, enhancing their overall career readiness.

Professional Resume Writer | Global Talent Advisors | [City, State]

August 2016 – April 2019

  • Crafted custom resumes, cover letters, and professional biographies for over 250 clients, ranging from entry-level professionals to C-suite executives.
  • Collaborated directly with clients to extract critical achievements, quantify results, and articulate transferable skills effectively.
  • Researched industry-specific keywords and hiring manager preferences to tailor documents for optimal impact and Applicant Tracking System (ATS) compatibility.
  • Provided constructive feedback and revisions, ensuring client satisfaction and alignment with career objectives.
  • Consistently met or exceeded client turnaround time expectations, maintaining a 98% on-time delivery rate.

Skills

  • Resume Development: ATS Optimization, Keyword Integration, Content Strategy, Professional Branding, Executive Resumes, Federal Resumes, Curriculum Vitae (CV)
  • Career Services: Career Coaching, Interview Preparation, LinkedIn Profile Optimization, Job Search Strategy, Salary Negotiation, Personal Branding
  • Writing & Editing: Professional Writing, Copywriting, Proofreading, Technical Writing, Business Communication, Storytelling
  • Tools & Technologies: Microsoft Office Suite (Word, Excel, PowerPoint), Google Workspace, Applicant Tracking Systems (ATS) Understanding, CRM Software, Project Management Tools
  • Soft Skills: Client Relationship Management, Active Listening, Empathy, Communication (Verbal & Written), Critical Thinking, Problem-Solving, Time Management, Attention to Detail

Education

Master of Arts in Professional Writing | [University Name] | [City, State]

Graduated: May 2016

Bachelor of Arts in English Literature | [University Name] | [City, State]

Graduated: May 2014


Certifications & Awards

  • Certified Professional Resume Writer (CPRW) | Professional Association of Resume Writers & Career Coaches (PARW/CC)

Issued: September 2017*

  • Certified Career Coach (CCC) | [Issuing Organization, e.g., ICF Accredited Program]

Issued: March 2018*

  • Client Success Award | Elite Career Solutions

Awarded: 2021, 2022*


Professional Portfolio

[Link to your online portfolio showcasing resume samples, testimonials, and case studies]

Example: www.yourresumebuilderportfolio.com


Key Considerations for Your Next Steps:

  • Tailor Further: If you have a specific job description for a "Professional Resume Builder" role, use its keywords and required skills to refine this resume even more.
  • Quantify Achievements: Replace placeholders with actual numbers wherever possible (e.g., "managed a team of X," "increased client satisfaction by Y%," "generated Z leads").
  • Action Verbs: Ensure each bullet point begins with a strong action verb (e.g., Developed, Led, Optimized, Conducted, Authored).
  • Proofread: Thoroughly proofread the final document for any grammatical errors or typos.
  • Format for ATS: Use a clean, standard font and avoid elaborate graphics or complex layouts that might confuse Applicant Tracking Systems.

Best Practices for Your Cover Letter

  • Tailor Every Letter: Never send a generic cover letter. Each letter must be customized for the specific job and company.
  • Research Thoroughly: Understand the company's mission, values, products/services, and recent news. Find the hiring manager's name if possible.
  • Focus on Their Needs: Instead of just listing what you've done, explain how your skills and experiences will benefit the company and help them solve their problems or achieve their goals.
  • Use Keywords: Incorporate keywords and phrases from the job description naturally into your letter.
  • Quantify Achievements: Whenever possible, use numbers and data to demonstrate the impact of your work (e.g., "increased sales by 15%", "managed a budget of $500K").
  • Keep it Concise: Aim for one page, typically 3-4 paragraphs. Hiring managers are busy and appreciate brevity.
  • Professional Tone: Maintain a professional, confident, and enthusiastic tone.
  • Proofread Meticulously: Typos and grammatical errors can be deal-breakers. Use grammar checkers and ask someone else to review it.
  • Match Formatting: If possible, use a similar font and header style as your resume for a cohesive application package.
  • Save as PDF: Always save and send your cover letter as a PDF unless otherwise specified, to preserve formatting.

Actionable Next Steps

  1. Identify Your Target Job: Select the specific job opening you want to apply for.
  2. Analyze the Job Description: Carefully read the job description, highlighting key responsibilities, required skills, and desired qualifications.
  3. Gather Company Research: Visit the company's website, LinkedIn page, and recent news articles. Look for their mission, values, recent projects, and the hiring manager's name.
  4. Customize the Template:

* Update Contact Information: Ensure all your contact details are current.

* Personalize Recipient Details: Replace the placeholder with the actual hiring manager's name and title if found.

* Tailor the Opening: Clearly state the job title and where you found the posting.

* Align Body Paragraphs: Modify the body paragraphs to directly address the requirements of the job description, using your most relevant experiences and quantifiable achievements.

* Demonstrate Company Fit: Integrate specific details about the company that resonate with you.

* Review and Refine: Read through your tailored letter to ensure it flows well, is free of errors, and powerfully communicates your suitability for the role.

  1. Save as PDF: Save your finalized cover letter as a PDF with a professional file name (e.g., YourName_CoverLetter_JobTitle_Company.pdf).
  2. Pair with Resume: Submit your customized cover letter alongside your tailored resume for the best impression.

By following these guidelines and meticulously customizing each cover letter, you will significantly enhance your application and increase 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);}});}