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

Professional Cover Letter Generation

This output provides a comprehensive framework and template for a professional, tailored cover letter. To ensure the cover letter perfectly aligns with your target job and highlights your unique qualifications, you will need to provide specific details about the job you are applying for and your relevant experiences.


Understanding the Importance of a Cover Letter

A cover letter is your opportunity to tell your story beyond the bullet points of your resume. It allows you to:


Key Information Required for a Tailored Cover Letter

To generate a truly effective and personalized cover letter, please be prepared to provide the following details:

  1. Target Job Title: The exact title of the position you are applying for.
  2. Company Name: The full legal name of the company.
  3. Hiring Manager Name (Optional but Recommended): If known, the name and title of the hiring manager or recruiter. If not, "Hiring Team" or "Hiring Manager" is acceptable.
  4. Key Requirements/Keywords from the Job Description: Identify 2-3 critical skills, responsibilities, or experiences mentioned in the job posting that you possess.
  5. Specific Achievements/Experiences from Your Resume: Choose 2-3 quantifiable achievements or relevant experiences from your resume that directly address the key requirements identified above. Think about "STAR" method examples (Situation, Task, Action, Result).
  6. Why You Are Interested in This Specific Company: What about their mission, values, products, or culture excites you?
  7. Why You Are a Good Fit for This Specific Role: How do your skills and career aspirations align with the position's responsibilities and growth opportunities?

Professional Cover Letter Template

Below is a detailed template. Please replace all bracketed [ ] information with your specific details.

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

[Date]

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

**Subject: Application for [Target Job Title] - [Your Name]**

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

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]. With a proven track record in [mention 1-2 key areas from your resume relevant to the job], I am confident that my skills and experience align perfectly with the requirements outlined in your job description and will enable me to make a significant contribution to your team.

During my [Number] years of experience in [Your Industry/Field], I have developed strong expertise in areas such as [Skill 1 from job description], [Skill 2 from job description], and [Skill 3 from job description]. For instance, in my previous role at [Previous Company Name], I successfully [describe a key achievement using STAR method, e.g., "led a project to optimize X process, resulting in a Y% efficiency increase and Z cost savings"]. This experience honed my ability to [relate achievement back to a desired skill from the job description, e.g., "drive efficiency and deliver measurable results"]. I am particularly drawn to [Company Name]'s commitment to [mention a company value, mission, or recent project that resonates with you] and believe my proactive approach would thrive in such an environment.

My resume further details my qualifications, including [mention another specific accomplishment or skill from your resume]. I am adept at [mention another key skill, e.g., "cross-functional collaboration" or "data analysis"], which I believe would be invaluable in [mention a specific responsibility of the target role, e.g., "managing complex projects" or "informing strategic decisions"]. I am eager to bring my dedication to [mention a relevant quality, e.g., "innovation," "client satisfaction," or "problem-solving"] and my ability to [mention another relevant skill] to your team at [Company Name].

Thank you for considering my application. I am very keen to learn more about this opportunity and discuss how my background and enthusiasm can benefit [Company Name]. I have attached my resume for your review and welcome the opportunity for an interview at your earliest convenience.

Sincerely,
[Your Name]
Sandboxed live preview

Professional Resume Builder: Step 1 of 2 - Generate Tailored Resume

This output details the comprehensive framework and required inputs for generating a professional, tailored resume designed to maximize your chances of securing your target job.

Understanding Your Request

You have requested the generation of a detailed professional resume. The core objective of this step is to create a resume that is highly tailored to a specific job or industry, highlighting your most relevant skills, experiences, and achievements.

To effectively "tailor" your resume, we require specific information from you. Without this personalized input, we can only provide a general professional template and best practices.

Critical Input Required for Tailored Resume Generation

To proceed with generating your truly tailored professional resume, please provide the following details. The more specific and comprehensive you are, the better we can optimize your resume for your target role.

  1. Target Job Description(s):

* Crucial: Provide the exact job description(s) for the role(s) you are applying for. This is paramount for keyword optimization and tailoring content.

* If you have a general industry or type of role in mind, describe it comprehensively (e.g., "Senior Marketing Manager in SaaS," "Entry-Level Software Engineer with Python experience").

  1. Your Contact Information:

* Full Name

* Phone Number

* Email Address

* LinkedIn Profile URL (ensure it's updated and professional)

* Portfolio/Personal Website URL (if applicable, e.g., for designers, developers, writers)

* City, State (optional, but often helpful)

  1. Professional Summary / Objective:

* A brief (2-4 sentence) overview of your career goals, key qualifications, and what you bring to a role. This should be highly customized to the target job.

Example:* "Highly motivated [Your Profession] with X years of experience in [Key Area], skilled in [Skill 1] and [Skill 2]. Seeking to leverage expertise in [Relevant Area] to contribute to [Target Company/Industry]."

  1. Work Experience:

* For each relevant position (typically 10-15 years back):

* Job Title:

* Company Name:

* Location (City, State):

* Employment Dates (Month, Year - Month, Year):

* Key Responsibilities & Achievements: Use bullet points (3-5 per role) focusing on quantifiable results and action verbs. Employ the STAR method (Situation, Task, Action, Result) where possible.

Example:* "Managed a team of 5 junior analysts, increasing project delivery efficiency by 20% through the implementation of agile methodologies."

Example:* "Developed and executed digital marketing campaigns that resulted in a 30% increase in lead generation and a 15% improvement in conversion rates."

  1. Education:

* Degree(s) / Certification(s): (e.g., Bachelor of Science in Computer Science, MBA)

* Major / Field of Study:

* University / Institution Name:

* Location (City, State):

* Graduation Date (Month, Year) / Expected Graduation Date:

* GPA (optional, include if 3.5 or higher):

* Relevant Coursework, Honors, Awards (optional):

  1. Skills:

* Categorize your skills for clarity:

* Technical Skills: (e.g., Programming Languages: Python, Java; Software: Salesforce, Adobe Creative Suite; Tools: JIRA, AWS; Databases: SQL, MongoDB)

* Soft Skills: (e.g., Leadership, Communication, Problem-Solving, Teamwork, Adaptability)

* Languages: (e.g., English - Native, Spanish - Fluent, French - Conversational)

  1. Optional Sections (Provide if applicable and relevant to target job):

* Projects: (Personal or professional projects, especially for technical roles. Describe your role, technologies used, and outcomes.)

* Certifications & Licenses: (e.g., PMP, AWS Certified Solutions Architect, CPA)

* Awards & Recognition: (Academic honors, professional awards)

* Publications & Presentations: (If relevant to your field)

* Volunteer Experience: (Showcases leadership, teamwork, or specific skills)

Professional Resume Structure & Content Guidelines (Template)

Below is the standard, highly effective structure we will use to build your resume once we receive your detailed input.

1. Contact Information (Top of Page)

  • Your Full Name: Prominently displayed.
  • Phone Number:
  • Email Address:
  • LinkedIn Profile URL: (Customized URL preferred)
  • Portfolio/Personal Website URL: (If applicable)
  • City, State: (Optional, but common)

2. Professional Summary / Objective (2-4 Sentences)

  • Purpose: A concise, impactful statement immediately conveying your value proposition.
  • Content: Tailor to the specific job. Include your profession, years of experience, 2-3 key skills, and your career objective or what you seek to contribute to the employer.
  • Keywords: Integrate keywords from the job description.

3. Skills (Categorized)

  • Purpose: Quick overview of your most relevant abilities.
  • Content:

* Technical Skills: List specific software, programming languages, tools, platforms, and methodologies.

* Soft Skills: Leadership, communication, problem-solving, teamwork, critical thinking, etc.

* Languages: Indicate proficiency levels.

  • Formatting: Use bullet points or a delimited list for readability.

4. Work Experience (Reverse Chronological Order)

  • Purpose: Showcase your career progression, responsibilities, and achievements.
  • For each role:

* Job Title: Bold and clear.

* Company Name, City, State:

* Dates of Employment: (e.g., May 2018 – Present)

* Bullet Points (3-5 per role):

* Start with strong action verbs.

* Focus on achievements and results, not just duties.

* Quantify wherever possible (e.g., "increased sales by 15%", "managed a budget of $2M", "reduced costs by 10%").

* Tailor these points to match keywords and requirements in the target job description.

5. Education (Reverse Chronological Order)

  • Purpose: Detail your academic background.
  • Content:

* Degree Name: (e.g., Bachelor of Science in Marketing)

* Major / Field of Study:

* University Name, City, State:

* Graduation Date: (or "Expected Month, Year")

* GPA: (Include if 3.5 or higher)

* Honors, Awards, Relevant Coursework: (Optional, if highly relevant)

6. Optional Sections (If Applicable and Relevant)

  • Projects: (Title, brief description, your role, technologies/skills used, outcome)
  • Certifications & Licenses: (Name of certification, issuing body, date obtained)
  • Awards & Recognition: (Name of award, issuing body, date)
  • Publications / Presentations: (Title, journal/conference, date)
  • Volunteer Experience: (Organization, your role, dates, key contributions)

Key Principles for an Effective, Tailored Resume

  • Targeted Customization: Every section, especially the summary and work experience bullet points, will be adapted to align with the specific job description provided. This means using their language and prioritizing skills they mention.
  • Keyword Optimization: We will strategically integrate keywords from the job description throughout your resume to ensure it passes Applicant Tracking Systems (ATS) and catches the eye of recruiters.
  • Quantifiable Achievements: Emphasize measurable results. Numbers, percentages, and dollar figures demonstrate impact.
  • Action-Oriented Language: Start bullet points with strong action verbs (e.g., "Developed," "Managed," "Implemented," "Analyzed," "Led").
  • Conciseness & Readability: Aim for a 1-2 page resume (one page for entry-level to mid-career, two pages for senior professionals with extensive experience). Use clear formatting, consistent fonts, and appropriate white space.
  • Proofreading: The final resume will be meticulously proofread for any grammatical errors or typos.

Next Steps: Providing Your Information

To move forward and generate your tailored resume, please provide the detailed information requested in the "Critical Input Required for Tailored Resume Generation" section above.

You can provide this information in any clear format (e.g., bullet points, a draft document, or by answering each prompt directly). Once we receive your input, we will proceed with crafting your professional resume in Step 2.


Tips for a Successful Cover Letter

  • Be Concise: Aim for one page, three to four paragraphs.
  • Tailor Every Letter: Never send a generic cover letter. Each one should be specific to the job and company.
  • Use Keywords: Incorporate keywords from the job description naturally into your letter.
  • Quantify Achievements: Whenever possible, use numbers, percentages, and metrics to demonstrate impact.
  • Proofread Meticulously: Typos and grammatical errors can be deal-breakers. Read it aloud or use a grammar checker.
  • Maintain a Professional Tone: Be confident, but avoid arrogance.
  • Research the Company: Show you've done your homework by mentioning something specific about the company.
  • Connect to the Resume: The cover letter should complement, not repeat, your resume. Elaborate on key points.
  • Save as PDF: Always send your cover letter as a PDF unless specified otherwise, to preserve formatting.

Next Steps to Get Your Fully Tailored Cover Letter

To receive a complete, personalized cover letter drafted specifically for you, please provide the "Key Information Required for a Tailored Cover Letter" listed above.

Once you provide these details, we will generate a customized cover letter that integrates your unique experiences and qualifications with the specific requirements of your target job.

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