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

Professional Cover Letter Generation

This step provides you with a comprehensive, tailored cover letter template designed to complement your professional resume. A well-crafted cover letter is your opportunity to introduce yourself, express your specific interest in the role, and highlight how your unique skills and experiences align with the employer's needs, often elaborating on key points from your resume.


Understanding the Purpose of Your Cover Letter

Your cover letter serves as a crucial bridge between your resume and the hiring manager. It allows you to:


Your Tailored Cover Letter Template

Below is a professional cover letter template. You must customize the bracketed [PLACEHOLDER] sections with specific details relevant to the target job and your personal qualifications.

text • 2,781 chars
[Your Name]
[Your Address]
[Your City, Postal 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, Postal 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, professional network]. With a robust background in [mention 1-2 key areas/skills directly relevant to the job, e.g., project management, data analysis, software development] and a proven track record of [mention a key achievement or quality, e.g., driving efficiency, leading successful teams, exceeding targets], I am confident that my qualifications align perfectly with the requirements outlined for this role and your company's mission.

In my previous role as [Your Previous Job Title] at [Previous Company], I was responsible for [mention 2-3 specific responsibilities or achievements that directly relate to the target job, quantifying results where possible]. For example, I [describe a specific project or initiative where you excelled, highlighting a skill mentioned in the job description]. This experience honed my ability to [mention a key skill, e.g., lead cross-functional teams, optimize processes, develop innovative solutions], which I believe would be invaluable in contributing to [Company Name]'s success in [mention a specific area of the company's work or a challenge they might face]. My resume further details my expertise in [mention 1-2 additional skills or technologies relevant to the job, e.g., CRM software, agile methodologies, market research].

What particularly draws me to [Company Name] is [mention something specific about the company that resonates with you – their mission, a recent project, their culture, a value they promote]. I am genuinely impressed by [mention a specific company achievement, value, or initiative, e.g., your innovative approach to sustainable technology, your commitment to community engagement, your leadership in the industry]. I am eager to bring my [mention a key quality, e.g., proactive problem-solving, strategic thinking, collaborative spirit] and dedication to a team that is clearly committed to [reiterate a company value or goal].

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 Typed Name]
Sandboxed live preview

Step 1 of 2: Prepare for Professional Resume Generation

Welcome to the Professional Resume Builder workflow! This first step is crucial for laying the groundwork for a highly effective and tailored resume. Our goal is to create a document that not only highlights your qualifications but also strategically aligns with your target job, making you stand out to potential employers.

To achieve this, we need to gather comprehensive information about your professional background, skills, and career aspirations. This output details the essential components of a professional resume and outlines the specific information we will need from you to craft a compelling document.


Understanding the Goal: A Tailored Professional Resume

A professional resume is more than just a list of your past jobs; it's a strategic marketing document designed to showcase your value to a prospective employer. Key characteristics include:

  • Targeted: Directly addresses the requirements and keywords of your desired job description.
  • Concise & Impactful: Uses strong action verbs and quantifiable achievements to demonstrate impact.
  • Clear & Readable: Easy for hiring managers and Applicant Tracking Systems (ATS) to scan and understand.
  • Professional Formatting: Adheres to industry standards for layout, fonts, and spacing.
  • Error-Free: Flawless grammar and spelling are non-negotiable.

Essential Components of a Professional Resume

To build a resume that meets these standards, we will structure it around several key sections. Each section serves a specific purpose in presenting your professional narrative.

  1. Contact Information: Your professional identity.
  2. Professional Summary/Objective: Your elevator pitch.
  3. Work Experience: Your career journey and achievements.
  4. Education: Your academic foundation.
  5. Skills: Your core competencies.
  6. Optional Sections (as applicable): Enhancements like projects, certifications, publications, etc.

Information Required for Your Tailored Resume

To generate a truly professional and tailored resume, we will need detailed input from you. Please prepare the following information, as this will form the basis of your resume.

1. Target Job Information

  • Specific Job Title(s): The exact title(s) of the role(s) you are applying for.
  • Company Name(s): If known, the companies you are targeting.
  • Job Description(s): The most critical piece of information. Please provide the full job description(s) for the role(s) you are interested in. This allows us to identify keywords, required skills, and responsibilities to tailor your resume effectively.

2. Contact Information

  • Full Name: Your complete legal name.
  • Phone Number: A professional contact number.
  • Email Address: A professional email address (e.g., firstname.lastname@email.com).
  • LinkedIn Profile URL: (Optional, but highly recommended) Your professional LinkedIn profile link.
  • Portfolio/Website URL: (Optional, if applicable) Link to your online portfolio or personal professional website.
  • City, State: Your current location (full address not typically required for privacy).

3. Professional Summary or Objective Statement

  • Career Goals: Briefly describe your career aspirations and what you are seeking in a new role.
  • Key Strengths: What are your top 2-3 most relevant skills or areas of expertise?
  • Years of Experience: Total years in your field or relevant industry.
  • Unique Value Proposition: What makes you a unique and valuable candidate for the target role?

4. Work Experience

For each relevant position you've held (starting with your most recent):

  • Job Title: Your exact title.
  • Company Name: Full name of the company.
  • City, State: Location of the company.
  • Employment Dates: Start date (month/year) to end date (month/year). If current, state "Present."
  • Key Responsibilities: A brief overview of your primary duties.
  • Quantifiable Achievements: This is critical. For each role, list 3-5 bullet points describing your accomplishments. Focus on:

* Action: What did you do? (Use strong action verbs: "Developed," "Managed," "Led," "Implemented")

* Result: What was the outcome?

* Quantifiable Metric: How much? How many? By what percentage? (e.g., "Increased sales by 15%," "Reduced costs by $10K," "Managed a team of 5," "Improved process efficiency by 20%").

Example:* "Led a cross-functional team of 5 to successfully launch a new product line, resulting in a 20% increase in market share within the first six months."

5. Education

For each degree or relevant certification:

  • Degree/Certification Name: (e.g., Bachelor of Science in Computer Science, Project Management Professional (PMP)).
  • Major/Field of Study: If applicable.
  • Institution Name: Full name of the university, college, or certifying body.
  • City, State: Location of the institution.
  • Graduation Date: (Month/Year or Year). If not yet graduated, expected graduation date.
  • GPA: (Optional, if 3.5 or higher).
  • Relevant Coursework/Projects: (Optional, especially for recent graduates or career changers).
  • Honors/Awards: (Optional).

6. Skills

  • Technical Skills: List all relevant software, programming languages, tools, platforms, etc. (e.g., Python, SQL, Salesforce, Adobe Creative Suite, AWS, Microsoft Excel, Tableau).
  • Soft Skills: List relevant interpersonal or transferable skills (e.g., Project Management, Leadership, Communication, Problem-Solving, Teamwork, Customer Service, Strategic Planning).
  • Languages: Any languages you are proficient in, with your level of proficiency.

7. Optional Sections (Provide if applicable)

  • Projects: Details about significant personal or professional projects (e.g., side projects, open-source contributions).
  • Certifications & Licenses: Any professional certifications or licenses held.
  • Publications & Presentations: If you have published articles, papers, or given presentations.
  • Awards & Honors: Any significant professional recognition.
  • Volunteer Experience: Relevant volunteer work that demonstrates skills or commitment.

Example Professional Resume Structure (General Template)

This is a typical structure we will aim for, adaptable based on your experience and the target role:

[Your Full Name]

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


PROFESSIONAL SUMMARY

[2-4 sentences highlighting your experience, key skills, and career objective, tailored to the target job.]


SKILLS

  • Technical: [List of technical skills, separated by commas]
  • Soft Skills: [List of soft skills, separated by commas]
  • Languages: [List of languages and proficiency levels]

WORK EXPERIENCE

[Most Recent Job Title] | [Company Name] | [City, State]

[Month Year] – [Month Year] (or Present)

  • [Action verb] + [Task/Project] + [Quantifiable Result/Impact]
  • [Action verb] + [Task/Project] + [Quantifiable Result/Impact]
  • [Action verb] + [Task/Project] + [Quantifiable Result/Impact]

[Previous Job Title] | [Company Name] | [City, State]

[Month Year] – [Month Year]

  • [Action verb] + [Task/Project] + [Quantifiable Result/Impact]
  • [Action verb] + [Task/Project] + [Quantifiable Result/Impact]

EDUCATION

[Degree Name], [Major/Field of Study]

[Institution Name], [City, State]

[Graduation Month Year] (or Expected Graduation Month Year)

  • [Relevant coursework, honors, or projects - optional]

[Optional Section, e.g., PROJECTS / CERTIFICATIONS]

[Project Title] | [Brief description of project and your role/impact]

  • [Key technologies/skills used]

Next Steps

To proceed with building your professional resume, please compile and provide the detailed information requested above. The more specific and comprehensive your input, especially regarding quantifiable achievements and the target job description, the more effective and tailored your resume will be.

Once you provide this information, we will move to Step 2: Generate Tailored Resume Draft, where our system will use your input to create a professional resume draft for your review.


Key Sections to Customize and Focus On

  1. Your Contact Information & Date: Ensure accuracy.
  2. Recipient's Information:

* Always try to find a specific hiring manager's name. Use LinkedIn or the company website. Addressing it to a named individual shows initiative.

* If a name is unavailable, "Hiring Team" or "Hiring Manager" is acceptable, but avoid "To Whom It May Concern."

  1. Salutation: Use "Mr./Ms./Mx." if you know their gender preference; otherwise, use their full name (e.g., "Dear Alex Johnson") or "Dear Hiring Team."
  2. Paragraph 1: Introduction

* Clearly state the position you're applying for and where you saw it.

* Hook the reader immediately by stating your strongest relevant qualification or interest.

  1. Paragraph 2-3: Body Paragraphs

* Directly connect your experience to the job description. Go through the job posting line by line and identify how your skills match.

* Quantify your achievements. Instead of "managed projects," say "managed 5 concurrent projects, reducing delivery time by 15%."

* Provide specific examples. Don't just list skills; illustrate them with brief anecdotes or project descriptions.

* Focus on what you can do for them, not just what you've done.

  1. Paragraph 4: Conclusion

* Reiterate your enthusiasm for the company and the role.

* Include a clear call to action: Express your desire for an interview.

* Thank them for their time and consideration.

  1. Closing: "Sincerely" is a standard professional closing.

Pro Tips for Maximum Impact

  • Research the Company Thoroughly: Understand their mission, values, recent projects, and company culture. Weave this knowledge into your letter to show genuine interest.
  • Identify Keywords: Scan the job description for keywords and phrases. Integrate these naturally into your letter to pass Applicant Tracking Systems (ATS) and demonstrate alignment.
  • Tailor for Each Application: Never send a generic cover letter. Each letter should be uniquely crafted for the specific job and company.
  • Quantify Everything Possible: Numbers speak volumes. Show the impact of your work with percentages, dollar figures, or specific metrics.
  • Proofread Meticulously: Typos and grammatical errors can be deal-breakers. Use grammar checkers, and ideally, have another person review your letter.
  • Keep it Concise: A cover letter should ideally be one page long. Get straight to the point and make every word count.
  • Maintain a Professional Tone: Be confident and enthusiastic, but always respectful and professional.
  • Match Your Resume's Branding: If your resume has a specific font or color scheme, consider using a subtle version of it in your cover letter for consistency.

Next Steps

  1. Download and Edit: Copy the template above into your preferred word processor (e.g., Microsoft Word, Google Docs).
  2. Customize Thoroughly: Replace all bracketed [PLACEHOLDER] text with your specific details, ensuring each point directly addresses the target job description.
  3. Review and Refine: Read through your completed cover letter multiple times. Check for clarity, conciseness, grammar, and spelling.
  4. Save as PDF: Always save your cover letter as a PDF to preserve formatting and ensure it looks professional on any device. Name the file professionally (e.g., "JohnDoe_CoverLetter_JobTitle.pdf").
  5. Submit with Your Resume: Attach your customized cover letter along with your tailored resume when applying for the position.

By following these guidelines and meticulously customizing the template, you will present a compelling narrative that significantly strengthens your job application. 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
\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);}});}