|
|
<!DOCTYPE html> |
|
|
<html lang="en"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>Learning Engine API | QuantumCode</title> |
|
|
<link rel="icon" type="image/x-icon" href="/static/favicon.ico"> |
|
|
<script src="https://cdn.tailwindcss.com"></script> |
|
|
<script src="https://unpkg.com/feather-icons"></script> |
|
|
<style> |
|
|
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&display=swap'); |
|
|
|
|
|
body { |
|
|
font-family: 'Space Grotesk', sans-serif; |
|
|
background-color: #0f172a; |
|
|
color: #e2e8f0; |
|
|
} |
|
|
|
|
|
.gradient-text { |
|
|
background: linear-gradient(90deg, #7c3aed 0%, #2563eb 100%); |
|
|
-webkit-background-clip: text; |
|
|
background-clip: text; |
|
|
color: transparent; |
|
|
} |
|
|
|
|
|
.glass-card { |
|
|
background: rgba(15, 23, 42, 0.7); |
|
|
backdrop-filter: blur(10px); |
|
|
border: 1px solid rgba(255, 255, 255, 0.1); |
|
|
border-radius: 1rem; |
|
|
} |
|
|
|
|
|
.endpoint-card { |
|
|
border-left: 4px solid #7c3aed; |
|
|
} |
|
|
|
|
|
code { |
|
|
background: rgba(124, 58, 237, 0.2); |
|
|
padding: 0.2rem 0.4rem; |
|
|
border-radius: 0.25rem; |
|
|
font-family: monospace; |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body class="min-h-screen"> |
|
|
<nav class="px-6 py-4 flex justify-between items-center"> |
|
|
<div class="flex items-center space-x-2"> |
|
|
<i data-feather="cpu" class="text-indigo-500"></i> |
|
|
<span class="text-xl font-bold gradient-text">QuantumCode</span> |
|
|
</div> |
|
|
<div class="flex items-center space-x-2"> |
|
|
<a href="i18n-setup.html" class="flex items-center text-sm hover:text-indigo-400 transition-colors"> |
|
|
<i data-feather="globe" class="w-4 h-4 mr-1"></i> |
|
|
<span id="currentLang">EN</span> |
|
|
</a> |
|
|
</div> |
|
|
<div class="hidden md:flex space-x-8"> |
|
|
<a href="index.html" class="hover:text-indigo-400 transition-colors">Home</a> |
|
|
<a href="index.html#features" class="hover:text-indigo-400 transition-colors">Features</a> |
|
|
<a href="index.html#roadmap" class="hover:text-indigo-400 transition-colors">Roadmap</a> |
|
|
<a href="data-architecture.html" class="hover:text-indigo-400 transition-colors">Data Architecture</a> |
|
|
<a href="learning-engine.html" class="text-indigo-400">Learning Engine</a> |
|
|
<a href="auth.html" class="hover:text-indigo-400 transition-colors">Login</a> |
|
|
<a href="select-role.html" class="hover:text-indigo-400 transition-colors">Roles</a> |
|
|
<a href="progress-report.html" class="hover:text-indigo-400 transition-colors">Progress</a> |
|
|
<a href="self-talk-journal.html" class="hover:text-indigo-400 transition-colors">Self-Talk</a> |
|
|
<a href="gamequest.html" class="hover:text-indigo-400 transition-colors">GameQuest</a> |
|
|
</div> |
|
|
</nav> |
|
|
|
|
|
<main class="container mx-auto px-4 py-16"> |
|
|
<section class="max-w-6xl mx-auto mb-20"> |
|
|
<h1 class="text-4xl md:text-5xl font-bold mb-6"> |
|
|
<span class="gradient-text">Learning Engine</span> API Documentation |
|
|
</h1> |
|
|
<p class="text-xl text-slate-300 mb-10"> |
|
|
RESTful API for managing courses, modules, lessons and tracking learning metrics. |
|
|
</p> |
|
|
|
|
|
<div class="glass-card endpoint-card p-8 mb-12"> |
|
|
<h2 class="text-2xl font-bold mb-6">Course Structure</h2> |
|
|
<div class="mb-8"> |
|
|
<h3 class="text-xl font-bold mb-4">Courses → Modules → Lessons Hierarchy</h3> |
|
|
<div class="bg-slate-800/50 p-6 rounded-lg mb-6"> |
|
|
<pre><code> |
|
|
{ |
|
|
"course": { |
|
|
"id": "string", |
|
|
"title": "string", |
|
|
"description": "string", |
|
|
"modules": [ |
|
|
{ |
|
|
"id": "string", |
|
|
"title": "string", |
|
|
"lessons": [ |
|
|
{ |
|
|
"id": "string", |
|
|
"title": "string", |
|
|
"exercises": [ |
|
|
{ |
|
|
"id": "string", |
|
|
"type": "speaking|listening|vocabulary|grammar|speak-brave" |
|
|
} |
|
|
] |
|
|
} |
|
|
] |
|
|
} |
|
|
] |
|
|
} |
|
|
} |
|
|
</code></pre> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="glass-card endpoint-card p-8 mb-12"> |
|
|
<h2 class="text-2xl font-bold mb-6">API Endpoints</h2> |
|
|
|
|
|
<div class="mb-8"> |
|
|
<h3 class="text-xl font-bold mb-4 flex items-center"> |
|
|
<span class="px-3 py-1 bg-indigo-900/30 text-indigo-400 rounded mr-3">GET</span> |
|
|
<code>/api/courses</code> |
|
|
</h3> |
|
|
<p class="text-slate-300 mb-4">Retrieve all available courses</p> |
|
|
<div class="bg-slate-800/50 p-6 rounded-lg"> |
|
|
<pre><code>// Response |
|
|
[ |
|
|
{ |
|
|
"id": "course-123", |
|
|
"title": "Beginner English", |
|
|
"description": "Basic English for beginners", |
|
|
"language": "en", |
|
|
"difficulty": "beginner" |
|
|
} |
|
|
]</code></pre> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="mb-8"> |
|
|
<h3 class="text-xl font-bold mb-4 flex items-center"> |
|
|
<span class="px-3 py-1 bg-green-900/30 text-green-400 rounded mr-3">POST</span> |
|
|
<code>/api/courses</code> |
|
|
</h3> |
|
|
<p class="text-slate-300 mb-4">Create a new course (Admin only)</p> |
|
|
<div class="bg-slate-800/50 p-6 rounded-lg"> |
|
|
<pre><code>// Request Body |
|
|
{ |
|
|
"title": "Advanced English", |
|
|
"description": "Advanced English course", |
|
|
"language": "en", |
|
|
"difficulty": "advanced" |
|
|
} |
|
|
|
|
|
// Response |
|
|
{ |
|
|
"id": "course-456", |
|
|
"status": "created" |
|
|
}</code></pre> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="glass-card endpoint-card p-8 mb-12"> |
|
|
<h2 class="text-2xl font-bold mb-6">Progress Tracking</h2> |
|
|
|
|
|
<div class="mb-4"> |
|
|
<h3 class="text-xl font-bold mb-4 flex items-center"> |
|
|
<span class="px-3 py-1 bg-purple-900/30 text-purple-400 rounded mr-3">PATCH</span> |
|
|
<code>/api/lessons/{lessonId}/progress</code> |
|
|
</h3> |
|
|
<p class="text-slate-300 mb-4">Update lesson progress metrics</p> |
|
|
<div class="bg-slate-800/50 p-6 rounded-lg"> |
|
|
<pre><code>// Request Body |
|
|
{ |
|
|
"speaking": { |
|
|
"score": 75, |
|
|
"timeSpent": 120, |
|
|
"attempts": 3 |
|
|
}, |
|
|
"listening": { |
|
|
"score": 80, |
|
|
"timeSpent": 90, |
|
|
"attempts": 2 |
|
|
}, |
|
|
"vocabulary": { |
|
|
"score": 90, |
|
|
"timeSpent": 60, |
|
|
"attempts": 1 |
|
|
}, |
|
|
"grammar": { |
|
|
"score": 70, |
|
|
"timeSpent": 150, |
|
|
"attempts": 4 |
|
|
}, |
|
|
"speakBraveScore": { |
|
|
"confidence": 85, |
|
|
"clarity": 80, |
|
|
"fluency": 75, |
|
|
"emotionalImpact": 90, |
|
|
"transcript": "I believe in my ability to speak English confidently...", |
|
|
"emotions": [ |
|
|
{"emotion": "happy", "score": 0.85}, |
|
|
{"emotion": "neutral", "score": 0.12}, |
|
|
{"emotion": "sad", "score": 0.03} |
|
|
], |
|
|
"facialExpressions": [ |
|
|
{"expression": "smile", "intensity": 0.8}, |
|
|
{"expression": "eyeContact", "intensity": 0.7} |
|
|
] |
|
|
}, |
|
|
"confidence": 85, |
|
|
"completionStatus": "completed", |
|
|
"masteryPercentage": 78.75 |
|
|
} |
|
|
|
|
|
// Response |
|
|
{ |
|
|
"lessonId": "lesson-789", |
|
|
"updated": true, |
|
|
"report": { |
|
|
"totalTime": 420, |
|
|
"totalAttempts": 10, |
|
|
"weakestArea": "grammar", |
|
|
"nextSteps": [ |
|
|
"Review past tense exercises", |
|
|
"Practice with audio drills", |
|
|
"Complete bonus vocabulary quiz" |
|
|
] |
|
|
} |
|
|
}</code></pre> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="glass-card p-8 mb-12"> |
|
|
<h2 class="text-2xl font-bold mb-6">VoiceTrack Module</h2> |
|
|
<p class="text-slate-300 mb-6">Test the voice analysis API with real-time recording and feedback.</p> |
|
|
<div class="grid md:grid-cols-2 gap-8 mb-12"> |
|
|
<voice-track></voice-track> |
|
|
<ai-dialog></ai-dialog> |
|
|
</div> |
|
|
<div class="mt-6"> |
|
|
<h3 class="text-xl font-bold mb-4 flex items-center"> |
|
|
<span class="px-3 py-1 bg-purple-900/30 text-purple-400 rounded mr-3">POST</span> |
|
|
<code>/voice/analyze</code> |
|
|
</h3> |
|
|
<p class="text-slate-300 mb-4">Analyze voice recordings for pronunciation and confidence</p> |
|
|
<div class="bg-slate-800/50 p-6 rounded-lg"> |
|
|
<pre><code>// Request: Multipart form with audio file |
|
|
// Response |
|
|
{ |
|
|
"pronunciation": 85, |
|
|
"confidence": 78, |
|
|
"fluency": 82, |
|
|
"clarity": 80, |
|
|
"feedback": [ |
|
|
"Work on vowel sounds", |
|
|
"Good pacing overall", |
|
|
"Slightly nervous tone detected" |
|
|
] |
|
|
}</code></pre> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
</main> |
|
|
<script src="components/voice-track.js"></script> |
|
|
<script src="components/ai-dialog.js"></script> |
|
|
<footer class="py-12 border-t border-slate-800"> |
|
|
<div class="container mx-auto px-4 text-center"> |
|
|
<p class="text-slate-500 text-sm"> |
|
|
© 2023 QuantumCode AI Architect. All rights reserved. |
|
|
</p> |
|
|
</div> |
|
|
</footer> |
|
|
<script> |
|
|
|
|
|
document.getElementById('currentLang').textContent = |
|
|
document.cookie.match('(^|;)\\s*NEXT_LOCALE\\s*=\\s*([^;]+)')?.pop() || 'EN'; |
|
|
|
|
|
feather.replace(); |
|
|
</script> |
|
|
</body> |
|
|
</html> |