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

Professional Cover Letter Generation

Congratulations! You've successfully completed the resume building phase. The next crucial step in securing your desired role is crafting a compelling cover letter. While your resume highlights your qualifications, a cover letter tells your unique story, demonstrates your enthusiasm, and explains why you are the perfect fit for this specific job at this specific company.

This output provides you with a detailed, customizable template and a comprehensive guide to generate a professional cover letter that stands out to hiring managers and Applicant Tracking Systems (ATS).


Your Tailored Cover Letter Template

Below is a professional cover letter template. Please replace all bracketed [ ] information with your specific details and customize the paragraphs to reflect your unique skills, experiences, and genuine interest in the target role and company.

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

[Date]

[Hiring Manager Name (If known, otherwise use title or "Hiring Team")]
[Hiring Manager Title (If known)]
[Company Name]
[Company Street 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 **[Exact Job Title]** position at **[Company Name]**, as advertised on **[Platform where you saw the advertisement, e.g., LinkedIn, company website, professional network]**. With my proven track record in **[Your Key Skill Area 1, e.g., project management]** and **[Your Key Skill Area 2, e.g., strategic planning]**, I am confident that my skills and experience align perfectly with the requirements outlined in your job description and will allow me to make significant contributions to your team.

Throughout my [Number] years of experience in [Your Industry/Field], I have consistently demonstrated my ability to [Specific achievement relevant to the job, with a quantifiable result if possible, e.g., "lead cross-functional teams to deliver projects 15% under budget"]. For instance, in my previous role at [Previous Company], I was responsible for [Specific Duty 1 relevant to the job] and successfully [Quantifiable achievement 1, e.g., "implemented a new client onboarding process that reduced initial setup time by 25%"]. My expertise in [Specific Skill from job description, e.g., "data analysis"] and [Another specific skill, e.g., "stakeholder communication"] has allowed me to [Connect skills to positive outcome, e.g., "drive informed decision-making and foster strong collaborative relationships"].

I am particularly drawn to [Company Name]'s commitment to [Specific Company Value, Mission, or recent initiative that resonates with you, e.g., "innovation in sustainable technology" or "its dedication to customer success"]. I admire [Specific Company Achievement or Project, e.g., "your recent work on the Eco-Friendly Packaging initiative"] and believe my approach to [Relevant work aspect, e.g., "problem-solving" or "developing scalable solutions"] would be a valuable asset to your team as you continue to [Company's future goal or challenge]. My professional values closely align with [Company Name]'s culture of [Specific Cultural Trait, e.g., "collaboration and continuous improvement"].

My resume, which is attached for your review, provides further detail on my qualifications and achievements. I am eager to learn more about this opportunity and discuss how my skills and passion for [Your Industry/Field] can contribute to the continued success of [Company Name]. Thank you for your time and consideration.

Sincerely,

[Your Typed Full Name]
Sandboxed live preview

This output represents Step 1 of 2 in your "Professional Resume Builder" workflow. The goal of this step is to gather the necessary information to create a highly tailored resume for your target job.


Professional Resume Builder: Information Gathering for Tailored Resume Creation

Welcome to the first step of building your professional resume! To create a truly impactful and tailored resume that stands out to hiring managers and Applicant Tracking Systems (ATS), we need specific details about your professional background and career aspirations.

This initial output will outline the comprehensive information required. Once you provide these details, we will proceed to generate a detailed, professional resume optimized for your target role.

Understanding the Importance of Tailored Information

A generic resume often fails to capture the attention of recruiters. To maximize your chances, your resume must be customized for each job you apply for. This involves highlighting relevant skills, experiences, and achievements that directly align with the job description.

To achieve this, we need your input on the following key areas:

Required Information for Resume Generation

Please provide the following details. The more specific and detailed you are, the better we can tailor your resume.

1. Target Job Information

  • Specific Job Title(s) or Type of Role You Are Targeting: (e.g., "Senior Software Engineer at Google," "Marketing Manager in Tech," "Financial Analyst at an Investment Bank")
  • Key Responsibilities and Requirements of Your Target Role(s): (If you have a specific job description, please provide it. Otherwise, describe the typical duties and qualifications.)
  • Target Industry/Company Type: (e.g., "Fintech," "Healthcare," "SaaS Startup," "Fortune 500 Tech Company")

2. Contact Information

  • Full Name:
  • Phone Number:
  • Email Address:
  • LinkedIn Profile URL: (Highly recommended)
  • Portfolio/Personal Website URL (if applicable): (e.g., GitHub, Behance, personal blog)
  • City, State, Country: (Optional, but often helpful for local jobs)

3. Professional Summary or Objective (Optional, but Recommended)

  • Your Career Goals/Aspirations: (What kind of role are you seeking?)
  • Your Top 2-3 Core Strengths/Skills: (What makes you exceptional?)
  • Years of Experience:
  • Key Achievements or Contributions: (Briefly, what impact have you made?)

4. Work Experience

For EACH relevant position (starting with your most recent):

  • Job Title:
  • Company Name:
  • Company Location (City, State):
  • Employment Dates (Month, Year - Month, Year): (e.g., "June 2018 - Present" or "May 2015 - August 2017")
  • Key Responsibilities: (Describe your duties using action verbs)
  • Quantifiable Achievements and Contributions: (This is crucial! Use numbers, percentages, and metrics to show impact. E.g., "Increased sales by 15%," "Managed a team of 5," "Reduced project delivery time by 20%")

Example Structure for Bullet Points:* "Action Verb + Task/Project + Result (with metrics)"

5. Education

For EACH degree or significant certification:

  • Degree/Program Name: (e.g., "Master of Business Administration," "Bachelor of Science in Computer Science")
  • Major/Minor (if applicable):
  • University/Institution Name:
  • University/Institution Location (City, State):
  • Graduation Date (Month, Year) or Expected Graduation Date:
  • GPA (Optional, if 3.5+):
  • Relevant Coursework/Honors/Awards (Optional): (e.g., "Dean's List," "Cum Laude," "Relevant coursework in Data Structures and Algorithms")

6. Skills

Please list your skills in the following categories:

  • Technical Skills: (e.g., Programming Languages: Python, Java; Software: Salesforce, Adobe Creative Suite; Tools: Jira, Tableau; Cloud Platforms: AWS, Azure)
  • Soft Skills: (e.g., Communication, Leadership, Problem-Solving, Teamwork, Adaptability, Project Management)
  • Languages: (e.g., English (Native), Spanish (Fluent), French (Conversational))

7. Certifications & Licenses (Optional)

  • Certification Name: (e.g., "Project Management Professional (PMP)," "Google Analytics Certified")
  • Issuing Body:
  • Date Issued/Expires:

8. Projects & Portfolios (Optional, but highly recommended for certain fields like tech, design, marketing)

  • Project Name:
  • Brief Description of Project:
  • Your Role/Contribution:
  • Technologies/Skills Used:
  • Link to Project (if applicable): (e.g., GitHub repo, live demo, portfolio link)

9. Awards, Honors, & Publications (Optional)

  • Award Name/Honor:
  • Issuing Body/Context:
  • Date Received:
  • Publication Title/Journal (if applicable):

Next Steps

Once you provide the requested information, we will use it to construct a professional, ATS-friendly resume that highlights your qualifications and achievements in the best possible light for your target job.

Please provide your details in a structured format (e.g., bullet points under each category) in your next input.

We look forward to building your exceptional resume!


How to Customize Your Cover Letter for Maximum Impact

A generic cover letter rarely succeeds. Follow these actionable steps to tailor your letter and significantly increase your chances of securing an interview:

  1. Research Thoroughly:

* Company: Understand their mission, values, recent news, projects, and company culture. Visit their "About Us" page, LinkedIn, and recent press releases.

* Role: Deconstruct the job description. Identify key responsibilities, required skills, preferred qualifications, and desired outcomes.

* Hiring Manager (If Possible): If you can find the hiring manager's name and title (e.g., via LinkedIn or company website), address the letter directly to them. This shows initiative and personalization.

  1. Tailor Every Paragraph:

* Opening: Clearly state the exact job title and where you found the posting. Immediately convey your enthusiasm and a brief, compelling reason why you're a strong candidate.

* Body Paragraph 1 (Skills & Experience): This is where you connect your past achievements directly to the job requirements.

* Use Keywords: Integrate specific keywords and phrases from the job description naturally into your sentences. This helps bypass ATS and shows you've read the posting carefully.

* Quantify Achievements: Whenever possible, use numbers, percentages, and metrics to demonstrate the impact of your work (e.g., "increased sales by 15%", "managed a budget of $500K", "reduced project delivery time by 10%").

* Show, Don't Just Tell: Instead of saying "I am a good leader," describe a situation where you demonstrated leadership and the positive outcome.

* Body Paragraph 2 (Value Proposition & Company Fit): This paragraph is crucial for demonstrating your understanding of and alignment with the company.

Explain "Why Them": Articulate why you want to work for this specific company and this specific role*, beyond just needing a job. Reference their specific projects, values, or culture.

* Connect Your Values: Explain how your professional values and work style align with the company's ethos.

* Future Contribution: Briefly explain how your unique skills will contribute to their future success or help solve a challenge they might face.

  1. Maintain Professionalism:

* Tone: Keep the tone professional, confident, and enthusiastic. Avoid overly casual language.

* Grammar & Spelling: Proofread meticulously! Even minor errors can reflect poorly on your attention to detail. Ask a trusted friend or colleague to review it.

* Conciseness: Aim for one page, typically 3-4 paragraphs. Hiring managers are busy and appreciate brevity.

  1. Formatting & Presentation:

* Match Your Resume: Ensure your cover letter's font, heading style, and overall aesthetic complement your resume for a cohesive application package.

* Standard Business Letter Format: Follow the professional format provided in the template.

* PDF Format: Always save and submit your cover letter as a PDF unless explicitly asked for a different format. This preserves formatting across different systems.

  1. Strong Closing:

* Reiterate your interest and confidence in your fit.

* Include a polite call to action, expressing your eagerness for an interview.

* Thank them for their time and consideration.


Important Considerations

  • Applicant Tracking Systems (ATS): Many companies use ATS to filter applications. By incorporating keywords from the job description, you increase the likelihood of your application being seen by a human recruiter.
  • No Generic Letters: Never use the same cover letter for multiple applications. Each letter should be a unique, targeted communication.
  • When Not to Send One: Some online application systems may not provide an option to upload a cover letter. In such cases, ensure your resume is highly optimized. If you're emailing your application, the cover letter can be the body of the email itself, with your resume attached.

Next Steps

  1. Fill in the Template: Use the provided template to draft your cover letter, replacing all bracketed information.
  2. Refer to Your Resume: Leverage the bullet points and achievements from your newly built resume to populate the body paragraphs of your cover letter.
  3. Target a Specific Job: Select a specific job description and company to tailor your first cover letter. This practice will make subsequent letters easier to customize.
  4. Review and Refine: Read your letter aloud to catch awkward phrasing. Ask someone else to proofread for clarity and errors.
  5. Save as PDF: Once finalized, save your cover letter as a PDF with a professional file name (e.g., "YourName_CoverLetter_JobTitle_Company.pdf").

By following these guidelines, you will create a powerful cover letter that effectively showcases your qualifications and passion, significantly enhancing your job application.

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