AI Study Plan Generator
Run ID: 69bc9f5857a81007869c56812026-03-29Education
PantheraHive BOS
BOS Dashboard

Create a personalized study plan with flashcards and quizzes

AI Study Plan Generation: Spanish Language (Beginner - Basic Conversation)

Workflow Execution Confirmation

This output represents the successful execution of the generate_study_plan step for the "AI Study Plan Generator" workflow, utilizing the aistudygenius application.

Parameters Used:

  • Subject: Spanish Language
  • Duration: 1 month
  • Current Level: Beginner
  • Goals: Basic conversation

Overall Study Plan Philosophy

This 1-month study plan is designed for a complete beginner to achieve basic conversational skills in Spanish. The philosophy centers on:

  1. Consistency: Daily engagement, even for short periods.
  2. Spaced Repetition: Utilizing flashcards and quizzes to reinforce learning and memory.
  3. Practical Application: Focusing on common phrases, real-life scenarios, and active speaking/listening.
  4. Balanced Learning: Integrating vocabulary, grammar, pronunciation, and cultural context.
  5. Immersion (Controlled): Gradually exposing yourself to authentic Spanish content.

Monthly Overview

| Week | Core Focus Area | Key Grammar Points | Conversational Goal | Flashcards (Target) | Quizzes (Target) |

| :--- | :----------------------------------------------- | :------------------------------------------------ | :--------------------------------------------------- | :------------------ | :--------------- |

| 1 | Greetings, Introductions, Basic Nouns, Alphabet | Ser (to be), Articles, Noun Gender | Introduce self, ask/state name, basic pleasantries | 50-70 words/phrases | 2-3 short quizzes |

| 2 | Describing People/Things, Daily Routines, Numbers | Estar (to be), Adjectives, Regular -AR verbs | Describe self/others, talk about simple actions, count | 60-80 words/phrases | 2-3 short quizzes |

| 3 | Asking Questions, Locations, Food & Drink | Question Words, Prepositions, Regular -ER/-IR verbs | Ask for directions, order food, express preferences | 70-90 words/phrases | 2-3 short quizzes |

| 4 | Expressing Likes/Dislikes, Future Plans (basic), Review | Gustar, Ir + a + infinitive, Review of Tenses | Talk about hobbies, make simple plans, summarize week | 80-100 words/phrases | 3-4 short quizzes |

Detailed Weekly Breakdown

Week 1: Foundations & Introductions

Goal: Confidently introduce yourself, understand basic greetings, and identify common objects.

  • Daily Time Recommendation: 30-60 minutes
  • Topics:

* The Spanish Alphabet & Pronunciation (vowels, key consonants)

* Basic Greetings (Hola, Adiós, Buenos días/tardes/noches)

* Introductions (Me llamo..., ¿Cómo te llamas?, Mucho gusto)

* Basic pleasantries (¿Cómo estás?, Estoy bien/mal, Gracias, Por favor, De nada)

* Common Nouns (el hombre, la mujer, el niño, la niña, la casa, el perro, el gato, el libro)

* Numbers 0-10

  • Grammar:

* Verb "Ser" (to be): yo soy, tú eres, él/ella/usted es

* Definite & Indefinite Articles: el/la/los/las, un/una/unos/unas

* Noun Gender: Masculine vs. Feminine nouns

  • Activities:

* Day 1-2: Master alphabet pronunciation. Listen to native speakers. Practice saying your name and "Hola, ¿cómo estás?"

* Day 3-4: Learn "Ser" conjugations. Practice simple sentences: "Yo soy [your name]." "Él es un hombre."

* Day 5-7: Focus on common nouns and articles. Label objects around your house in Spanish. Practice basic greetings and introductions with imaginary people or a language partner.

* Listening: Find beginner Spanish podcasts or YouTube channels for alphabet songs and simple dialogues.

  • Flashcards (Target: 50-70 words/phrases):

Greetings, personal pronouns (yo, tú, él, ella, usted), basic "Ser" conjugations, 20-30 common nouns (e.g., agua, comida, sol, luna, árbol, flor*), numbers 0-10.

* Strategy: Create physical or digital flashcards. Review daily, focusing on active recall.

  • Quizzes (Target: 2-3 short quizzes):

* Quiz 1: Pronunciation/alphabet identification.

* Quiz 2: Matching Spanish words to English (greetings, basic nouns).

* Quiz 3: Simple "Ser" conjugation fill-in-the-blanks.

* Strategy: Use online quiz tools or self-test.

Week 2: Descriptions & Daily Actions

Goal: Describe people and objects simply, talk about basic daily actions, and count to 20.

  • Daily Time Recommendation: 45-75 minutes
  • Topics:

* Numbers 11-20

* Basic Adjectives (grande, pequeño, bonito, feo, alto, bajo, feliz, triste, nuevo, viejo)

* Colors (rojo, azul, verde, amarillo, blanco, negro)

* Family Members (madre, padre, hermano, hermana, hijo, hija)

* Simple daily activities (hablar, comer, vivir, trabajar, estudiar, escuchar, mirar)

  • Grammar:

* Verb "Estar" (to be - temporary states/location): yo estoy, tú estás, él/ella/usted está

Adjective Agreement: Matching gender and number with nouns (e.g., la casa roja, los perros grandes*)

* Regular -AR Verbs: Conjugation patterns (hablar, estudiar, trabajar)

* Possessive Adjectives (basic): mi, tu, su

  • Activities:

* Day 8-10: Learn "Estar" and differentiate between "Ser" and "Estar" (basic concept). Practice describing emotions and locations.

* Day 11-12: Focus on adjectives and their agreement. Describe family members and objects using colors and adjectives.

* Day 13-14: Learn regular -AR verb conjugations. Form simple sentences about daily actions: "Yo hablo español." "Tú estudias."

* Listening/Speaking: Describe photos in Spanish. Practice simple "What are you doing?" questions and answers.

  • Flashcards (Target: 60-80 words/phrases):

* Numbers 11-20, adjectives, colors, family members, 10-15 common -AR verbs (infinitive + basic conjugations), "Estar" conjugations.

* Strategy: Review previous week's flashcards daily, add new ones. Mix and match old and new for recall.

  • Quizzes (Target: 2-3 short quizzes):

* Quiz 1: Ser vs. Estar usage (simple sentences).

* Quiz 2: Adjective agreement with nouns.

* Quiz 3: Conjugation of regular -AR verbs.

Strategy: Focus on understanding the difference* between Ser/Estar and applying adjective rules.

Week 3: Questions, Locations & Food

Goal: Ask and answer simple questions, navigate basic locations, and order food/drinks.

  • Daily Time Recommendation: 60-90 minutes
  • Topics:

* Question Words (¿Qué?, ¿Quién?, ¿Dónde?, ¿Cuándo?, ¿Por qué?, ¿Cómo?)

* Prepositions of Location (en, a, de, con, sin, debajo de, encima de, al lado de)

* Places in a City (la calle, la plaza, el parque, la tienda, el restaurante, el baño)

* Food & Drink Vocabulary (el agua, el café, el té, la leche, el pan, la fruta, la carne, el pescado, el arroz)

* Ordering food/drinks (Quiero..., Me gustaría..., ¿Cuánto cuesta?)

  • Grammar:

* Regular -ER Verbs: Conjugation patterns (comer, beber, aprender)

* Regular -IR Verbs: Conjugation patterns (vivir, escribir, abrir)

* "Hay" (there is/there are): Simple existence statements.

  • Activities:

* Day 15-17: Learn question words and practice forming simple questions. "Dónde está la tienda?" "Qué es esto?"

* Day 18-19: Focus on prepositions and places. Describe where things are located.

* Day 20-21: Learn food vocabulary and practice ordering in a simulated restaurant scenario. Combine with "Quiero..." or "Me gustaría..."

* Listening/Speaking: Watch short videos of people ordering food. Role-play ordering food with a partner.

  • Flashcards (Target: 70-90 words/phrases):

* Question words, prepositions, places, 20-30 food/drink items, 10-15 common -ER/-IR verbs (infinitive + basic conjugations).

* Strategy: Daily review of all flashcards. Prioritize words that are still challenging.

  • Quizzes (Target: 2-3 short quizzes):

* Quiz 1: Matching question words to their meaning.

* Quiz 2: Preposition usage (fill-in-the-blank with location).

* Quiz 3: Conjugation of regular -ER/-IR verbs.

* Strategy: Focus on understanding the context for using different question words and prepositions.

Week 4: Likes, Plans & Review

Goal: Express likes/dislikes, talk about simple future plans, and consolidate all learned material for basic conversation.

  • Daily Time Recommendation: 60-90 minutes
  • Topics:

* Hobbies & Interests (leer, bailar, cantar, viajar, cocinar, deportes)

* Expressing Likes/Dislikes (Me gusta/n, No me gusta/n)

* Simple Future Plans (Ir + a + infinitive)

* Days of the Week & Months (basic)

* Telling Time (basic, e.g., Es la una, Son las dos)

  • Grammar:

* Verb "Gustar": Me gusta, Te gusta, Le gusta, Nos gusta, Les gusta (and plural forms)

Ir + a + infinitive: Expressing immediate future (e.g., Voy a estudiar, Vamos a comer*)

* Review of all previous grammar: Ser vs. Estar, verb conjugations, adjective agreement.

  • Activities:

* Day 22-24: Learn "Gustar" and practice expressing what you like/dislike. Combine with hobby vocabulary.

* Day 25-26: Learn "Ir + a + infinitive" for future plans. Practice sentences like "Voy a ir al parque." "Vamos a comer."

* Day 27-28: Comprehensive review of all vocabulary and grammar. Practice mini-conversations incorporating all learned elements.

* Listening/Speaking: Listen to simple Spanish songs. Try to describe your daily routine or weekend plans using the new grammar.

  • Flashcards (Target: 80-100 words/phrases):

* Hobbies, days of the week, months, basic time phrases, "Gustar" phrases, "Ir + a + infinitive" examples.

* Strategy: Create a master deck of ALL flashcards from the month. Use a spaced repetition system (e.g., Anki) to ensure review of older items.

  • Quizzes (Target: 3-4 short quizzes):

* Quiz 1: "Gustar" usage.

* Quiz 2: "Ir + a + infinitive" sentence construction.

* Quiz 3: Comprehensive vocabulary review (matching, fill-in-the-blank).

* Quiz 4: Grammar challenge (mixed Ser/Estar, verb conjugations, adjective agreement).

* Strategy: Focus on integrating different grammar points and vocabulary into more complex sentences.

Learning Resources (General Recommendations)

  • Language Learning Apps: Duolingo, Babbel, Memrise (for vocabulary and gamified learning).
  • Flashcard Systems: Anki (for powerful spaced repetition), Quizlet.
  • Online Dictionaries: WordReference, SpanishDict.
  • YouTube Channels: "Spanish with Juan," "Butterfly Spanish," "Easy Spanish" (for listening comprehension).
  • Textbooks/Workbooks: "Easy Spanish Step-by-Step," "Madres y Hermanas" (for structured learning).
  • Podcasts: "Coffee Break Spanish" (beginner levels).
  • Language Exchange Partners: HelloTalk, Tandem (for practicing speaking).

Progress Tracking & Motivation

  • Daily Checklist: Keep a simple checklist of daily tasks (e.g., "Flashcards reviewed," "10 min listening," "5 new sentences").
  • Mini-Goals: Set weekly mini-goals (e.g., "By Friday, I can introduce myself and 3 family members").
  • Reward System: Treat yourself for hitting milestones.
  • Journaling: Briefly write down what you learned or struggled with each day (in English, or simple Spanish as you progress).
  • Practice with Others: Find a language partner online or in person to practice simple conversations.

Flashcard Strategy

  • Creation: Create flashcards for new vocabulary, key phrases, and verb conjugations. Include gender for nouns (e.g., el libro, la casa).
  • Active Recall: Don't just look at the answer. Try to produce the answer before flipping the card.
  • Spaced Repetition: Use an app like Anki or Memrise that automatically schedules reviews based on your memory performance. This is crucial for long-term retention.
  • Context: For verbs, include a simple sentence example. For nouns, include an article.
  • Pronunciation: If using digital flashcards, include audio or record yourself saying the word.

Quiz Strategy

  • Regular Assessment: Use quizzes not just for testing, but for identifying weak areas.
  • Varied Formats: Utilize multiple choice, fill-in-the-blank, matching, and short answer questions.
  • Self-Correction: After a quiz, review your mistakes immediately. Understand why an answer was wrong.
  • Application: Look for opportunities to turn quiz concepts into spoken or written sentences. For example, if a quiz tests verb conjugations, try to use those verbs in a new sentence.

Next Steps

This comprehensive study plan provides the framework for your 1-month Spanish learning journey. The next step in this workflow, generate_flashcards_quizzes, will provide specific examples of flashcards and quiz questions based on the content outlined above, making your daily study even more concrete and actionable.

Step 2: aistudygenius

Workflow Step: AI Study Plan Generator - generate_flashcards

This output delivers the flashcards component of your personalized Spanish Language study plan, designed to support your goal of achieving basic conversation skills within one month as a beginner. These flashcards are curated to cover essential vocabulary, common phrases, and fundamental grammatical structures, aligning with a typical beginner's curriculum.

Contextual Overview

Based on your inputs (Subject: Spanish Language, Duration: 1 month, Current Level: Beginner, Goals: Basic conversation), the preceding step would have outlined a study plan focusing on foundational elements like greetings, basic personal information, common verbs, everyday vocabulary, and simple sentence construction. These flashcards directly support that plan by providing key terms and phrases for memorization and practice.

Personalized Spanish Language Flashcards

Here is a comprehensive set of flashcards, categorized for easier learning and integration into your daily study routine. Each flashcard includes the Spanish term (front) and its English translation (back), along with contextual notes or example usage where helpful.

Category 1: Greetings & Introductions

| Spanish (Front) | English (Back) | Notes |

| :------------------- | :--------------------------------------------- | :----------------------------------------------------------------- |

| Hola | Hello / Hi | Universal greeting. |

| Adiós | Goodbye | Universal farewell. |

| Buenos días | Good morning | Used until noon/early afternoon. |

| Buenas tardes | Good afternoon / Good evening | Used from noon/early afternoon until dusk/nightfall. |

| Buenas noches | Good evening / Good night | Used from dusk/nightfall onwards, also for bedtime. |

| ¿Cómo estás? | How are you? (informal singular) | Common informal greeting. |

| ¿Cómo está usted?| How are you? (formal singular) | Use for elders, superiors, or in formal settings. |

| Estoy bien, gracias.| I'm fine, thank you. | Common response. |

| ¿Y tú? | And you? (informal singular) | To return the question. |

| ¿Y usted? | And you? (formal singular) | To return the question formally. |

| Me llamo... | My name is... | To introduce yourself. (e.g., Me llamo Juan) |

| Mucho gusto | Nice to meet you | Common phrase after introductions. |

| Encantado/a | Delighted / Pleased to meet you (m/f) | Another way to say "Nice to meet you." |

| ¿De dónde eres? | Where are you from? (informal singular) | To ask someone's origin. |

| Soy de... | I am from... | To state your origin. (e.g., Soy de España) |

Category 2: Essential Phrases & Courtesy

| Spanish (Front) | English (Back) | Notes |

| :------------------- | :--------------------------------------------- | :----------------------------------------------------------------- |

| Por favor | Please | |

| Gracias | Thank you | |

| De nada | You're welcome / It's nothing | |

| Lo siento | I'm sorry / I regret it | For apologies. |

| Permiso | Excuse me / Pardon me | To ask for permission to pass or interrupt. |

| Con permiso | Excuse me (when passing through) | More formal way to ask to pass. |

| Disculpe | Excuse me (to get attention or apologize) | For attracting attention or a minor apology. |

| | Yes | |

| No | No | |

| Quizás / Tal vez | Maybe / Perhaps | |

| No entiendo | I don't understand | Crucial phrase for beginners. |

| ¿Puedes repetir? | Can you repeat? (informal singular) | |

| ¿Puede repetir? | Can you repeat? (formal singular) | |

| Más despacio, por favor.| Slower, please. | To ask someone to speak slower. |

| ¿Qué significa...?| What does... mean? | To ask for a definition. |

| No sé | I don't know | |

Category 3: Basic Verbs (Present Tense - Yo/Tú Forms)

| Spanish (Front) | English (Back) | Notes |

| :------------------- | :--------------------------------------------- | :----------------------------------------------------------------- |

| Ser (soy, eres) | To be (I am, you are) | For permanent characteristics, identity, origin. |

| Estar (estoy, estás)| To be (I am, you are) | For temporary states, location, feelings. |

| Tener (tengo, tienes)| To have (I have, you have) | |

| Querer (quiero, quieres)| To want (I want, you want) | |

| Hablar (hablo, hablas)| To speak (I speak, you speak) | |

| Comer (como, comes)| To eat (I eat, you eat) | |

| Vivir (vivo, vives)| To live (I live, you live) | |

| Ir (voy, vas) | To go (I go, you go) | |

| Trabajar (trabajo, trabajas)| To work (I work, you work) | |

| Estudiar (estudio, estudias)| To study (I study, you study) | |

Category 4: Common Nouns & Adjectives

| Spanish (Front) | English (Back) | Notes |

| :------------------- | :--------------------------------------------- | :----------------------------------------------------------------- |

| El agua | The water | Feminine noun, but uses "el" for pronunciation. |

| La comida | The food | |

| El café | The coffee | |

| El té | The tea | |

| El libro | The book | |

| La casa | The house | |

| La ciudad | The city | |

| La persona | The person | |

| El hombre | The man | |

| La mujer | The woman | |

| El niño / La niña| The boy / The girl | |

| Grande | Big / Large | Adjective (doesn't change for gender). |

| Pequeño/a | Small (m/f) | Adjective (changes for gender). |

| Bueno/a | Good (m/f) | Adjective (changes for gender). |

| Malo/a | Bad (m/f) | Adjective (changes for gender). |

| Feliz | Happy | Adjective (doesn't change for gender). |

| Triste | Sad | Adjective (doesn't change for gender). |

| Nuevo/a | New (m/f) | Adjective (changes for gender). |

| Viejo/a | Old (m/f) | Adjective (changes for gender). |

Category 5: Question Words & Basic Numbers (1-10)

| Spanish (Front) | English (Back) | Notes |

| :------------------- | :--------------------------------------------- | :----------------------------------------------------------------- |

| ¿Qué? | What? | |

| ¿Quién? | Who? (singular) | |

| ¿Quiénes? | Who? (plural) | |

| ¿Dónde? | Where? | |

| ¿Cuándo? | When? | |

| ¿Por qué? | Why? | |

| Porque | Because | Note the difference from "¿Por qué?" |

| ¿Cómo? | How? | |

| ¿Cuánto/a? | How much? (m/f) | |

| ¿Cuántos/as? | How many? (m/f plural) | |

| Uno | One | |

| Dos | Two | |

| Tres | Three | |

| Cuatro | Four | |

| Cinco | Five | |

| Seis | Six | |

| Siete | Seven | |

| Ocho | Eight | |

| Nueve | Nine | |

| Diez | Ten | |

How to Effectively Use These Flashcards

  1. Daily Review: Dedicate 10-15 minutes daily to review a subset of these flashcards. Consistency is key.
  2. Active Recall: Don't just read. Look at the Spanish side and try to recall the English, then check. Vice versa.
  3. Spaced Repetition: Prioritize flashcards you find difficult and review them more frequently. Flashcards you know well can be reviewed less often. Many flashcard apps (like Anki, Quizlet) implement spaced repetition automatically.
  4. Pronunciation Practice: Say the Spanish word or phrase out loud. Try to mimic native speaker pronunciation.
  5. Contextualization: Try to form simple sentences using the words. For example, after learning "casa" and "grande," try "La casa es grande" (The house is big).
  6. Mix & Match: Don't stick to one category. Mix flashcards from different categories to simulate real-life conversation.
  7. Physical vs. Digital: You can print these out, write them on actual cards, or input them into a digital flashcard application for portability and features like audio and spaced repetition.

Next Steps

These flashcards form a critical part of your vocabulary and phrase acquisition. Integrate them into your broader study plan, which should also include:

  • Grammar Practice: Understanding how these words fit into sentences.
  • Listening Comprehension: Exposing yourself to spoken Spanish.
  • Speaking Practice: Actively using these words and phrases in conversations, even if with yourself or a language exchange partner.
  • Reading Practice: Encountering these words in simple texts.

Regularly revisit these flashcards throughout your 1-month study period to reinforce your learning and build a strong foundation for basic Spanish conversation.

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