- Fix WebSocket server to properly broadcast logs to all connected clients - Integrate professional logging system with real-time WebSocket interface - Add network status indicator with DigitalOcean Spaces connectivity - Implement AWS Signature V4 authentication for private bucket access - Add JSON content loader with backward compatibility to JS modules - Restore navigation breadcrumb system with comprehensive logging - Add multiple content formats: JSON + JS with automatic discovery - Enhance top bar with logger toggle and network status indicator - Remove deprecated temp-games module and clean up unused files 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
244 lines
12 KiB
JSON
244 lines
12 KiB
JSON
{
|
|
"name": "English Class Demo",
|
|
"description": "Complete example with all content types - vocabulary, grammar, audio, poems, exercises",
|
|
"difficulty": "mixed",
|
|
"language": "english",
|
|
"icon": "🇬🇧",
|
|
"vocabulary": {
|
|
"apple": {
|
|
"translation": "pomme",
|
|
"type": "noun",
|
|
"pronunciation": "audio/apple.mp3",
|
|
"difficulty": "beginner",
|
|
"examples": ["I eat an apple every day", "The apple is red and sweet"],
|
|
"grammarNotes": "Count noun - can be singular or plural"
|
|
},
|
|
"run": {
|
|
"translation": "courir",
|
|
"type": "verb",
|
|
"pronunciation": "audio/run.mp3",
|
|
"difficulty": "beginner",
|
|
"examples": ["I run in the park", "She runs very fast"],
|
|
"grammarNotes": "Regular verb: run, runs, running, ran"
|
|
},
|
|
"beautiful": {
|
|
"translation": "beau/belle",
|
|
"type": "adjective",
|
|
"pronunciation": "audio/beautiful.mp3",
|
|
"difficulty": "intermediate",
|
|
"examples": ["The sunset is beautiful", "She has beautiful eyes"],
|
|
"grammarNotes": "Can be used before noun or after 'be'"
|
|
},
|
|
"hello": {
|
|
"translation": "bonjour",
|
|
"type": "greeting",
|
|
"pronunciation": "audio/hello.mp3",
|
|
"difficulty": "beginner",
|
|
"examples": ["Hello, how are you?", "Hello everyone!"],
|
|
"grammarNotes": "Common greeting used anytime"
|
|
},
|
|
"cat": "chat",
|
|
"dog": "chien",
|
|
"house": "maison"
|
|
},
|
|
"grammar": {
|
|
"presentSimple": {
|
|
"title": "Present Simple Tense",
|
|
"explanation": "Used for habits, facts, and general truths. Form: Subject + base verb (+ s for he/she/it)",
|
|
"examples": [
|
|
{ "english": "I walk to school", "french": "Je marche à l'école" },
|
|
{ "english": "She walks to school", "french": "Elle marche à l'école" },
|
|
{ "english": "They walk to school", "french": "Ils marchent à l'école" }
|
|
],
|
|
"exercises": [
|
|
"Complete: I _____ (play) tennis every Sunday",
|
|
"Transform: He walk to work → He _____ to work"
|
|
]
|
|
},
|
|
"articles": {
|
|
"title": "Articles: A, An, The",
|
|
"explanation": "A/An = indefinite articles (one of many). The = definite article (specific one)",
|
|
"examples": [
|
|
{ "english": "I see a cat", "french": "Je vois un chat" },
|
|
{ "english": "I see an elephant", "french": "Je vois un éléphant" },
|
|
{ "english": "I see the cat from yesterday", "french": "Je vois le chat d'hier" }
|
|
]
|
|
}
|
|
},
|
|
"audio": {
|
|
"withText": [
|
|
{
|
|
"title": "Daily Routine Conversation",
|
|
"audioFile": "audio/daily_routine.mp3",
|
|
"transcript": "A: What time do you wake up? B: I usually wake up at 7 AM. A: That's early! I wake up at 8:30. B: I like to exercise before work. A: That's a good habit!",
|
|
"translation": "A: À quelle heure te réveilles-tu? B: Je me réveille habituellement à 7h. A: C'est tôt! Je me réveille à 8h30. B: J'aime faire de l'exercice avant le travail. A: C'est une bonne habitude!",
|
|
"timestamps": [
|
|
{ "time": 0.5, "text": "What time do you wake up?" },
|
|
{ "time": 3.2, "text": "I usually wake up at 7 AM" },
|
|
{ "time": 6.8, "text": "That's early! I wake up at 8:30" },
|
|
{ "time": 11.1, "text": "I like to exercise before work" },
|
|
{ "time": 14.5, "text": "That's a good habit!" }
|
|
]
|
|
},
|
|
{
|
|
"title": "Weather Report",
|
|
"audioFile": "audio/weather.mp3",
|
|
"transcript": "Today's weather: It's sunny and warm with a high of 25 degrees. Light winds from the south. Perfect day for outdoor activities!",
|
|
"translation": "Météo d'aujourd'hui: Il fait ensoleillé et chaud avec un maximum de 25 degrés. Vents légers du sud. Journée parfaite pour les activités extérieures!"
|
|
}
|
|
],
|
|
"withoutText": [
|
|
{
|
|
"title": "Mystery Conversation",
|
|
"audioFile": "audio/mystery.mp3",
|
|
"questions": [
|
|
{ "question": "How many people are speaking?", "type": "ai_interpreted" },
|
|
{ "question": "What are they talking about?", "type": "ai_interpreted" },
|
|
{ "question": "What is the mood of the conversation?", "type": "ai_interpreted" }
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"poems": [
|
|
{
|
|
"title": "Roses Are Red",
|
|
"content": "Roses are red,\nViolets are blue,\nSugar is sweet,\nAnd so are you.",
|
|
"translation": "Les roses sont rouges,\nLes violettes sont bleues,\nLe sucre est doux,\nEt toi aussi.",
|
|
"audioFile": "audio/roses_poem.mp3",
|
|
"culturalContext": "Traditional English nursery rhyme pattern, often used to teach basic rhyming and poetry structure to children."
|
|
},
|
|
{
|
|
"title": "Twinkle, Twinkle",
|
|
"content": "Twinkle, twinkle, little star,\nHow I wonder what you are.\nUp above the world so high,\nLike a diamond in the sky.",
|
|
"audioFile": "audio/twinkle.mp3",
|
|
"culturalContext": "Famous children's lullaby, one of the most recognizable songs in English-speaking countries."
|
|
}
|
|
],
|
|
"fillInBlanks": [
|
|
{
|
|
"sentence": "I _____ to school every day",
|
|
"options": ["go", "goes", "going", "went"],
|
|
"correctAnswer": "go",
|
|
"explanation": "Present simple with 'I' uses base form of verb"
|
|
},
|
|
{
|
|
"sentence": "She _____ a book right now",
|
|
"options": ["read", "reads", "reading", "is reading"],
|
|
"correctAnswer": "is reading",
|
|
"explanation": "Present continuous for actions happening now"
|
|
},
|
|
{
|
|
"sentence": "The weather is _____ today",
|
|
"type": "open_ended",
|
|
"acceptedAnswers": ["nice", "good", "beautiful", "sunny", "warm", "pleasant", "lovely"],
|
|
"aiPrompt": "Evaluate if the answer is a positive adjective that could describe good weather"
|
|
},
|
|
{
|
|
"sentence": "I feel _____ when I listen to music",
|
|
"type": "open_ended",
|
|
"acceptedAnswers": ["happy", "relaxed", "calm", "peaceful", "good", "better"],
|
|
"aiPrompt": "Check if the answer describes a positive emotion or feeling"
|
|
}
|
|
],
|
|
"corrections": [
|
|
{
|
|
"incorrect": "I are happy today",
|
|
"correct": "I am happy today",
|
|
"explanation": "Use 'am' with pronoun 'I', not 'are'",
|
|
"type": "grammar_correction"
|
|
},
|
|
{
|
|
"incorrect": "She don't like apples",
|
|
"correct": "She doesn't like apples",
|
|
"explanation": "Use 'doesn't' with he/she/it, not 'don't'",
|
|
"type": "grammar_correction"
|
|
},
|
|
{
|
|
"incorrect": "I can to swim",
|
|
"correct": "I can swim",
|
|
"explanation": "After modal verbs like 'can', use base form without 'to'",
|
|
"type": "grammar_correction"
|
|
}
|
|
],
|
|
"comprehension": [
|
|
{
|
|
"text": "Sarah is a 25-year-old teacher who lives in London. Every morning, she wakes up at 6:30 AM and goes for a jog in the park near her house. After jogging, she has breakfast and reads the news. She loves her job because she enjoys working with children and helping them learn. On weekends, Sarah likes to visit museums and try new restaurants with her friends.",
|
|
"questions": [
|
|
{
|
|
"question": "What is Sarah's profession?",
|
|
"type": "multiple_choice",
|
|
"options": ["Doctor", "Teacher", "Engineer", "Artist"],
|
|
"correctAnswer": "Teacher"
|
|
},
|
|
{
|
|
"question": "What does Sarah do every morning?",
|
|
"type": "ai_interpreted",
|
|
"evaluationPrompt": "Check if answer mentions waking up early, jogging, and having breakfast"
|
|
},
|
|
{
|
|
"question": "Why does Sarah love her job?",
|
|
"type": "ai_interpreted",
|
|
"evaluationPrompt": "Verify answer mentions working with children and helping them learn"
|
|
},
|
|
{
|
|
"question": "How would you describe Sarah's lifestyle?",
|
|
"type": "ai_interpreted",
|
|
"evaluationPrompt": "Accept answers mentioning active, healthy, social, or organized lifestyle"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"matching": [
|
|
{
|
|
"title": "Match Animals to Their Sounds",
|
|
"leftColumn": ["Cat", "Dog", "Cow", "Bird"],
|
|
"rightColumn": ["Woof", "Meow", "Tweet", "Moo"],
|
|
"correctPairs": [
|
|
{ "left": "Cat", "right": "Meow" },
|
|
{ "left": "Dog", "right": "Woof" },
|
|
{ "left": "Cow", "right": "Moo" },
|
|
{ "left": "Bird", "right": "Tweet" }
|
|
]
|
|
},
|
|
{
|
|
"title": "Match Colors in English and French",
|
|
"leftColumn": ["Red", "Blue", "Green", "Yellow"],
|
|
"rightColumn": ["Bleu", "Vert", "Rouge", "Jaune"],
|
|
"correctPairs": [
|
|
{ "left": "Red", "right": "Rouge" },
|
|
{ "left": "Blue", "right": "Bleu" },
|
|
{ "left": "Green", "right": "Vert" },
|
|
{ "left": "Yellow", "right": "Jaune" }
|
|
]
|
|
}
|
|
],
|
|
"sentences": [
|
|
{ "english": "Hello, how are you?", "french": "Bonjour, comment allez-vous?" },
|
|
{ "english": "I like to read books", "french": "J'aime lire des livres" },
|
|
{ "english": "The weather is nice today", "french": "Il fait beau aujourd'hui" },
|
|
{ "english": "Can you help me please?", "french": "Pouvez-vous m'aider s'il vous plaît?" }
|
|
],
|
|
"texts": [
|
|
{
|
|
"title": "My Daily Routine",
|
|
"content": "I wake up at 7 AM every day. First, I brush my teeth and take a shower. Then I have breakfast with my family. After breakfast, I go to work by bus. I work from 9 AM to 5 PM. In the evening, I cook dinner and watch TV. I go to bed at 10 PM.",
|
|
"translation": "Je me réveille à 7h tous les jours. D'abord, je me brosse les dents et prends une douche. Ensuite je prends le petit déjeuner avec ma famille. Après le petit déjeuner, je vais au travail en bus. Je travaille de 9h à 17h. Le soir, je cuisine le dîner et regarde la télé. Je me couche à 22h."
|
|
},
|
|
{
|
|
"title": "The Four Seasons",
|
|
"content": "There are four seasons in a year: spring, summer, autumn, and winter. Spring is warm and flowers bloom. Summer is hot and sunny. Autumn is cool and leaves change colors. Winter is cold and it sometimes snows.",
|
|
"translation": "Il y a quatre saisons dans une année: le printemps, l'été, l'automne et l'hiver. Le printemps est chaud et les fleurs fleurissent. L'été est chaud et ensoleillé. L'automne est frais et les feuilles changent de couleur. L'hiver est froid et il neige parfois."
|
|
}
|
|
],
|
|
"dialogues": [
|
|
{
|
|
"title": "At the Restaurant",
|
|
"conversation": [
|
|
{ "speaker": "Waiter", "english": "Good evening! Welcome to our restaurant.", "french": "Bonsoir! Bienvenue dans notre restaurant." },
|
|
{ "speaker": "Customer", "english": "Thank you. Can I see the menu please?", "french": "Merci. Puis-je voir le menu s'il vous plaît?" },
|
|
{ "speaker": "Waiter", "english": "Of course! Here you are. What would you like to drink?", "french": "Bien sûr! Voici. Que voulez-vous boire?" },
|
|
{ "speaker": "Customer", "english": "I'll have a glass of water, please.", "french": "Je prendrai un verre d'eau, s'il vous plaît." }
|
|
]
|
|
}
|
|
]
|
|
} |