Instant Resume Enhancement
Run ID: 69cae3fc74bac0555ea312982026-03-30Career
PantheraHive BOS
BOS Dashboard

Generate a professional resume with ATS optimization

Instant Resume Enhancement: Professional & ATS-Optimized Resume Generation

This deliverable provides a comprehensive, ATS-optimized resume template and detailed guidance to help you craft a professional resume that stands out to both hiring managers and Applicant Tracking Systems.


1. Core Principles for ATS Optimization

Before diving into the template, understanding these principles is crucial for maximizing your resume's visibility:

  • Keywords: Research job descriptions for your target roles and integrate relevant keywords naturally throughout your resume (summary, experience, skills). ATS systems scan for these.
  • Standard Formatting: Use a clean, simple layout with standard headings (e.g., "Work Experience," "Education," "Skills"). Avoid complex graphics, tables, or unusual fonts that can confuse ATS.
  • Clear Headings: Ensure headings are easily scannable and standard.
  • Quantifiable 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").
  • Action Verbs: Start bullet points with strong action verbs (e.g., "Developed," "Managed," "Implemented," "Analyzed," "Led").
  • File Type: Save your resume as a PDF unless explicitly requested otherwise. PDFs maintain formatting across different systems.
  • Tailoring: Customize your resume for each job application by aligning your skills and experience with the specific requirements of the job description.

2. ATS-Optimized Resume Template

Use the following structure as a foundation. Replace the bracketed placeholders [ ] with your specific information.


[Your Full Name]

[Your Phone Number] | [Your Email Address] | [Your LinkedIn Profile URL] | [Your Portfolio/Website URL (Optional)] | [Your City, State]


Professional Summary / Objective

(Choose ONE: A Professional Summary is ideal for experienced professionals, an Objective for new graduates or career changers.)

  • Professional Summary (3-5 sentences):

Highly accomplished and results-driven [Your Primary Profession/Role] with [X] years of experience in [Key Industry/Field]. Proven expertise in [Skill 1], [Skill 2], and [Skill 3], with a strong track record of [Quantifiable Achievement 1] and [Quantifiable Achievement 2]. Seeking to leverage [Your Key Strengths] to contribute to the success of [Target Company/Type of Role].

Example: Highly accomplished and results-driven Senior Marketing Manager with 10+ years of experience in SaaS. Proven expertise in digital campaign strategy, SEO, and content marketing, with a strong track record of increasing lead generation by 30% and boosting conversion rates by 15%. Seeking to leverage strategic planning and team leadership skills to contribute to the success of innovative tech companies.

  • Objective (1-2 sentences):

Enthusiastic and motivated [Your Profession/Field] eager to apply [Skill 1] and [Skill 2] to contribute to a dynamic team at [Target Company/Type of Role]. Seeking an opportunity to grow professionally while utilizing [Your Key Strengths] to achieve organizational goals.

Example: Enthusiastic and motivated recent Computer Science graduate eager to apply Python development and data analysis skills to contribute to a dynamic software engineering team. Seeking an opportunity to grow professionally while utilizing problem-solving abilities to achieve organizational goals.


Skills

(Categorize your skills for clarity and ATS readability. Include keywords from job descriptions.)

  • Technical Skills: [Specific Software/Tools - e.g., Python, SQL, AWS, Salesforce, Adobe Creative Suite, AutoCAD, SAP ERP]
  • Methodologies/Frameworks: [e.g., Agile, Scrum, Lean Six Sigma, ITIL, Project Management]
  • Soft Skills: [e.g., Leadership, Communication, Problem-Solving, Teamwork, Critical Thinking, Adaptability]
  • Languages: [e.g., English (Native), Spanish (Fluent), French (Intermediate)]

Work Experience

(List your positions in reverse chronological order. For each role, focus on accomplishments, not just duties. Use the STAR method (Situation, Task, Action, Result) mentally to formulate your bullet points, emphasizing the "Action" and "Result" with quantifiable metrics.)

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

[Start Date] – [End Date] (e.g., May 2020 – Present)

  • [Action Verb] [Specific Task/Project] resulting in [Quantifiable Achievement/Impact - e.g., "Increased X by Y%," "Reduced Z by A," "Managed B projects worth C dollars"].

Example: Spearheaded a new client acquisition strategy that grew the customer base by 25% within 12 months, exceeding targets by 10%.

  • [Action Verb] [Specific Responsibility] by [Method/Tool] to [Achieve Outcome].

Example: Developed and implemented a new CRM system, streamlining data entry processes and reducing manual errors by 20% for a team of 15.

  • [Action Verb] [Key Contribution] and [Another Key Contribution].

Example: Led cross-functional teams of 5-7 engineers in the successful delivery of 3 major software releases, consistently meeting deadlines and budget.

  • [Action Verb] [Problem Solved] leading to [Positive Result].

Example: Optimized cloud infrastructure costs by 18% through strategic resource allocation and identifying inefficient services.


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

[Start Date] – [End Date]

  • [Action Verb] [Specific Task/Project] resulting in [Quantifiable Achievement/Impact].
  • [Action Verb] [Specific Responsibility] by [Method/Tool] to [Achieve Outcome].
  • [Action Verb] [Key Contribution] and [Another Key Contribution].

Education

(List your highest degree first. Include relevant coursework or honors if applicable.)

[Degree Name] (e.g., Master of Business Administration, Bachelor of Science in Computer Science)

[University Name], [City, State]

[Graduation Date] (e.g., May 2020)

  • [Optional: GPA if 3.5 or higher - e.g., GPA: 3.8/4.0]
  • [Optional: Relevant Coursework - e.g., Data Structures, Financial Modeling, Digital Marketing Analytics]
  • [Optional: Honors/Awards - e.g., Cum Laude, Dean's List]

[Previous Degree Name (if applicable)]

[Previous University Name], [City, State]

[Graduation Date]


Projects / Portfolio (Optional but Recommended for Tech, Creative, or Project-Based Roles)

(Highlight significant personal or academic projects that demonstrate your skills. Provide links if available.)

[Project Name] | [Link to Project/GitHub (Optional)]

[Start Date] – [End Date]

  • [Briefly describe the project and your role in it.]
  • [Highlight technologies/skills used - e.g., "Developed using Python and Flask, integrating a PostgreSQL database."]
  • [Quantify impact or outcome - e.g., "Improved data processing speed by 30%."]

Certifications & Awards (Optional)

(List any relevant certifications, licenses, or significant awards.)

  • [Certification Name], [Issuing Body], [Date of Issuance/Expiration]

Example: Project Management Professional (PMP), PMI, Issued Jan 2022

  • [Award Name], [Issuing Body], [Year]

Example: Employee of the Year, Acme Corp, 2021


3. Detailed Guidance for Each Section

Contact Information

  • Name: Your full legal name.
  • Phone Number: A professional number where you can be reached.
  • Email Address: A professional email address (e.g., firstname.lastname@email.com). Avoid informal addresses.
  • LinkedIn Profile URL: Crucial for recruiters to learn more about you. Ensure your LinkedIn profile is up-to-date and consistent with your resume.
  • Portfolio/Website URL (Optional): Essential for designers, developers, writers, or anyone with a professional portfolio.
  • City, State: Your current location. Full address is generally not needed.

Professional Summary / Objective

  • Summary: Best for experienced professionals. It's a concise pitch highlighting your top skills, experience, and achievements, tailored to the job. Use keywords!
  • Objective: Best for new graduates or career changers. Focus on what you want to achieve and how your skills can benefit the employer.

Skills

  • Keyword Rich: Populate this section with keywords directly from job descriptions.
  • Categorization: Grouping skills (Technical, Soft, Languages) makes it easy to read for both humans and ATS.
  • Specificity: Be specific with software (e.g., "Adobe Photoshop" instead of "Adobe Suite" if only Photoshop is relevant).

Work Experience

  • Reverse Chronological: Always list your most recent job first.
  • Impact over Duties: Instead of "Responsible for managing projects," write "Managed 10+ software development projects, delivering them 15% under budget."
  • Quantify Everything: Numbers speak volumes. How much? How many? How often? By what percentage?
  • Action Verbs: Start each bullet point with a strong action verb (e.g., Developed, Implemented, Led, Analyzed, Optimized, Generated, Managed, Mentored, Collaborated).
  • Tailor: Adjust bullet points to highlight experiences most relevant to the job you're applying for.

Education

  • Highest Degree First: List your most recent or highest degree.
  • GPA: Include only if it's 3.5 or higher (on a 4.0 scale).
  • Relevant Coursework: Especially useful for new graduates to show specific knowledge.
  • Honors/Awards: Include academic distinctions.

Projects / Portfolio

  • Demonstrate Application: This section is excellent for showcasing how you apply your skills in real-world (or simulated) scenarios, especially if you have limited professional experience.
  • Link Out: Provide links to live projects, GitHub repositories, or detailed case studies.

Certifications & Awards

  • Relevance: Only include certifications or awards directly relevant to your career path.
  • Date: Include the date of issuance and/or expiration.

4. Final Checks & Best Practices

  • Proofread Meticulously: Typos and grammatical errors are instant red flags. Use grammar checkers (e.g., Grammarly) and ask someone else to review it.
  • Consistency: Ensure consistent formatting (fonts, sizing, bullet points) throughout the document.
  • Length: For most professionals, a one-page resume is ideal. For those with extensive experience (10+ years), two pages are acceptable.
  • Save as PDF: Unless explicitly stated otherwise in the job application, always submit your resume as a PDF to preserve formatting.
  • File Naming: Use a professional file name (e.g., FirstName_LastName_Resume.pdf).

By diligently following this template and guidance, you will significantly enhance your resume's professionalism and ATS compatibility, increasing your chances of landing an interview. Good luck!

instant_resume_enhancement.md
Download as Markdown
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);}});}