Standalone Engine
Gap-driven video and simulation engine
Root Next.js app with local SQLite persistence, local asset output, replaceable queue/storage/AI seams, and v1 API routes based on the payload spec.
SQLite localpubsub queuelocal assets
Total Jobs
330
Queued
2
Rendering
0
Complete
184
Failed
144
Recent Jobs
| Job | Status | Topic | Renderer |
|---|---|---|---|
| anim-job-987507be-1fb6... | queued | Newton Second Law in Non-Inertial Frames | html_three_js_local |
View Request / Response DetailsRequest Payload {
"gap": {
"topic": "newton-second-law-non-inertial",
"severity": "dangerous",
"error_type": "wrong_assumption",
"memory_state": "fragile",
"display_topic": "Newton Second Law in Non-Inertial Frames",
"common_wrong_answer": "Applied F=ma in an accelerating frame without pseudo force",
"confidence_at_error": "high",
"correct_understanding": "In non-inertial frames, include a pseudo force opposite to the frame acceleration."
},
"target": {
"style": "auto",
"render": {
"fps": 30,
"format": "mp4",
"resolution": "1920x1080",
"include_thumbnail": true,
"include_transcript": true
},
"audience": {
"tone": "neutral_instructional",
"grade": "11",
"language": "en"
},
"interactivity": "none",
"duration_seconds": 15
},
"context": {
"chapter": {
"name": "Laws of Motion",
"ncert_class": 11,
"ncert_chapter_number": 5
},
"sub_topics": [
{
"topic": "Newton Second Law",
"key_concepts": [
"F = ma",
"pseudo force"
]
}
]
},
"metadata": {
"priority": "normal"
},
"exam_type": "neet",
"asset_type": "simulation",
"request_id": "review-simulation-1789373203",
"subject_area": "physics"
}Error Context "None" | |||
| anim-job-37abae0f-9f19... | queued | Newton Second Law in Non-Inertial Frames | manim_local |
View Request / Response DetailsRequest Payload {
"gap": {
"topic": "newton-second-law-non-inertial",
"severity": "dangerous",
"error_type": "wrong_assumption",
"memory_state": "fragile",
"display_topic": "Newton Second Law in Non-Inertial Frames",
"common_wrong_answer": "Applied F=ma in an accelerating frame without pseudo force",
"confidence_at_error": "high",
"correct_understanding": "In non-inertial frames, include a pseudo force opposite to the frame acceleration."
},
"target": {
"style": "auto",
"render": {
"fps": 30,
"format": "mp4",
"resolution": "1920x1080",
"include_thumbnail": true,
"include_transcript": true
},
"audience": {
"tone": "neutral_instructional",
"grade": "11",
"language": "en"
},
"interactivity": "none",
"duration_seconds": 15
},
"context": {
"chapter": {
"name": "Laws of Motion",
"ncert_class": 11,
"ncert_chapter_number": 5
},
"sub_topics": [
{
"topic": "Newton Second Law",
"key_concepts": [
"F = ma",
"pseudo force"
]
}
]
},
"metadata": {
"priority": "normal"
},
"exam_type": "neet",
"asset_type": "animation",
"request_id": "review-animation-1789373203",
"subject_area": "physics"
}Error Context "None" | |||
| anim-job-0a1c9581-6a4c... | complete | Action-Reaction Pairs | html_three_js_local |
View Request / Response DetailsRequest Payload {
"gap": {
"topic": "laws_of_motion-action_reaction_pairs",
"severity": "moderate",
"error_type": "concept_misunderstanding",
"memory_state": "fragile",
"display_topic": "Action-Reaction Pairs",
"common_wrong_answer": "The concept works the same way in all conditions.",
"confidence_at_error": "high",
"correct_understanding": "The concept depends on constraints, assumptions, and variable relationships."
},
"target": {
"style": "auto",
"render": {
"fps": 30,
"format": "mp4",
"resolution": "1920x1080",
"include_thumbnail": true,
"include_transcript": true
},
"audience": {
"tone": "neutral_instructional",
"grade": "9",
"language": "en"
},
"interactivity": "none",
"duration_seconds": 15
},
"context": {
"chapter": {
"name": "Laws of Motion",
"ncert_class": 9
},
"sub_topics": [
{
"topic": "laws_of_motion-action_reaction_pairs",
"key_concepts": [
"Action-Reaction Pairs",
"Laws of Motion"
]
}
]
},
"metadata": {
"priority": "normal",
"trace_id": "bulk-run-2026-05-21T09-46-48-791Z"
},
"exam_type": "neet",
"asset_type": "simulation",
"request_id": "bulk-2026-05-21T09-46-48-791Z-5-a1-physics.09.laws-of-motion.action-reaction-pairs",
"subject_area": "physics"
}Error Context "None" | |||
| anim-job-e9a8b16d-69e3... | complete | Newton's Second Law (F = ma) | html_three_js_local |
View Request / Response DetailsRequest Payload {
"gap": {
"topic": "newton-second-law",
"severity": "moderate",
"error_type": "wrong_assumption",
"memory_state": "fragile",
"display_topic": "Newton's Second Law (F = ma)",
"common_wrong_answer": "Heavier objects accelerate faster for the same force.",
"confidence_at_error": "high",
"correct_understanding": "Acceleration is proportional to net force and inversely proportional to mass: a = F/m. Mass and acceleration are independent of each other."
},
"target": {
"style": "auto",
"render": {
"fps": 30,
"format": "mp4",
"resolution": "1920x1080",
"include_thumbnail": true,
"include_transcript": true
},
"audience": {
"tone": "neutral_instructional",
"grade": "9",
"language": "en"
},
"interactivity": "none",
"duration_seconds": 15
},
"context": {
"chapter": {
"name": "Laws of Motion",
"ncert_class": 9
},
"sub_topics": [
{
"topic": "newton-second-law",
"key_concepts": [
"F = ma",
"acceleration",
"force",
"mass"
]
}
]
},
"metadata": {
"priority": "normal",
"trace_id": "bulk-run-2026-05-21T09-46-48-791Z"
},
"exam_type": "neet",
"asset_type": "simulation",
"request_id": "bulk-2026-05-21T09-46-48-791Z-4-a1-physics.09.laws-of-motion.newton-second-law-fma",
"subject_area": "physics"
}Error Context "None" | |||
| anim-job-6d5f7a18-dd0c... | complete | Static to Kinetic Friction | html_three_js_local |
View Request / Response DetailsRequest Payload {
"gap": {
"topic": "friction-static_to_kinetic",
"severity": "moderate",
"error_type": "concept_misunderstanding",
"memory_state": "fragile",
"display_topic": "Static to Kinetic Friction",
"common_wrong_answer": "The concept works the same way in all conditions.",
"confidence_at_error": "high",
"correct_understanding": "The concept depends on constraints, assumptions, and variable relationships."
},
"target": {
"style": "auto",
"render": {
"fps": 30,
"format": "mp4",
"resolution": "1920x1080",
"include_thumbnail": true,
"include_transcript": true
},
"audience": {
"tone": "neutral_instructional",
"grade": "8",
"language": "en"
},
"interactivity": "none",
"duration_seconds": 15
},
"context": {
"chapter": {
"name": "Friction",
"ncert_class": 8
},
"sub_topics": [
{
"topic": "friction-static_to_kinetic",
"key_concepts": [
"Static to Kinetic Friction",
"Friction"
]
}
]
},
"metadata": {
"priority": "normal",
"trace_id": "bulk-run-2026-05-21T09-46-48-791Z"
},
"exam_type": "neet",
"asset_type": "simulation",
"request_id": "bulk-2026-05-21T09-46-48-791Z-3-a1-physics.08.friction.static-to-kinetic",
"subject_area": "physics"
}Error Context "None" | |||
| anim-job-f892deb7-160e... | complete | Balanced vs Unbalanced Forces | html_three_js_local |
View Request / Response DetailsRequest Payload {
"gap": {
"topic": "force_pressure-balanced_vs_unbalanced",
"severity": "moderate",
"error_type": "concept_misunderstanding",
"memory_state": "fragile",
"display_topic": "Balanced vs Unbalanced Forces",
"common_wrong_answer": "The concept works the same way in all conditions.",
"confidence_at_error": "high",
"correct_understanding": "The concept depends on constraints, assumptions, and variable relationships."
},
"target": {
"style": "auto",
"render": {
"fps": 30,
"format": "mp4",
"resolution": "1920x1080",
"include_thumbnail": true,
"include_transcript": true
},
"audience": {
"tone": "neutral_instructional",
"grade": "8",
"language": "en"
},
"interactivity": "none",
"duration_seconds": 15
},
"context": {
"chapter": {
"name": "Force & Pressure",
"ncert_class": 8
},
"sub_topics": [
{
"topic": "force_pressure-balanced_vs_unbalanced",
"key_concepts": [
"Balanced vs Unbalanced Forces",
"Force & Pressure"
]
}
]
},
"metadata": {
"priority": "normal",
"trace_id": "bulk-run-2026-05-21T09-46-48-791Z"
},
"exam_type": "neet",
"asset_type": "simulation",
"request_id": "bulk-2026-05-21T09-46-48-791Z-2-a1-physics.08.force-pressure.balanced-vs-unbalanced",
"subject_area": "physics"
}Error Context "None" | |||
| anim-job-829442a8-36a5... | complete | Distance vs Displacement | html_three_js_local |
View Request / Response DetailsRequest Payload {
"gap": {
"topic": "motion-distance_vs_displacement",
"severity": "moderate",
"error_type": "concept_misunderstanding",
"memory_state": "fragile",
"display_topic": "Distance vs Displacement",
"common_wrong_answer": "The concept works the same way in all conditions.",
"confidence_at_error": "high",
"correct_understanding": "The concept depends on constraints, assumptions, and variable relationships."
},
"target": {
"style": "auto",
"render": {
"fps": 30,
"format": "mp4",
"resolution": "1920x1080",
"include_thumbnail": true,
"include_transcript": true
},
"audience": {
"tone": "neutral_instructional",
"grade": "8",
"language": "en"
},
"interactivity": "none",
"duration_seconds": 15
},
"context": {
"chapter": {
"name": "Motion",
"ncert_class": 8
},
"sub_topics": [
{
"topic": "motion-distance_vs_displacement",
"key_concepts": [
"Distance vs Displacement",
"Motion"
]
}
]
},
"metadata": {
"priority": "normal",
"trace_id": "bulk-run-2026-05-21T09-46-48-791Z"
},
"exam_type": "neet",
"asset_type": "simulation",
"request_id": "bulk-2026-05-21T09-46-48-791Z-1-a1-physics.08.motion.distance-vs-displacement",
"subject_area": "physics"
}Error Context "None" | |||
| anim-job-e11a8e93-1973... | complete | Static to Kinetic Friction | html_three_js_local |
View Request / Response DetailsRequest Payload {
"gap": {
"topic": "friction-static_to_kinetic",
"severity": "moderate",
"error_type": "concept_misunderstanding",
"memory_state": "fragile",
"display_topic": "Static to Kinetic Friction",
"common_wrong_answer": "The concept works the same way in all conditions.",
"confidence_at_error": "high",
"correct_understanding": "The concept depends on constraints, assumptions, and variable relationships."
},
"target": {
"style": "auto",
"render": {
"fps": 30,
"format": "mp4",
"resolution": "1920x1080",
"include_thumbnail": true,
"include_transcript": true
},
"audience": {
"tone": "neutral_instructional",
"grade": "8",
"language": "en"
},
"interactivity": "none",
"duration_seconds": 15
},
"context": {
"chapter": {
"name": "Friction",
"ncert_class": 8
},
"sub_topics": [
{
"topic": "friction-static_to_kinetic",
"key_concepts": [
"Static to Kinetic Friction",
"Friction"
]
}
]
},
"metadata": {
"priority": "normal",
"trace_id": "bulk-run-2026-05-21T09-24-28-957Z"
},
"exam_type": "neet",
"asset_type": "simulation",
"request_id": "bulk-2026-05-21T09-24-28-957Z-3-a1-physics.08.friction.static-to-kinetic",
"subject_area": "physics"
}Error Context "None" | |||
API Surface
POST /api/v1/animations/generateGET /api/v1/animations/jobs/{job_id}GET /api/v1/healthLocal Infra
- Database
- data/animation-engine.db
- Assets
- storage/assets
- Redis
- docker compose up redis
Sample Request
{
"request_id": "11111111-1111-4111-8111-111111111111",
"asset_type": "simulation",
"subject_area": "physics",
"exam_type": "neet",
"context": {
"chapter": { "name": "Laws of Motion", "ncert_class": 11, "ncert_chapter_number": 5 },
"sub_topics": [{ "topic": "Newton's Second Law", "key_concepts": ["F = ma", "pseudo force"] }]
},
"gap": {
"topic": "newton-second-law-non-inertial",
"display_topic": "Newton's Second Law in Non-Inertial Frames",
"error_type": "wrong_assumption",
"memory_state": "fragile",
"severity": "dangerous",
"confidence_at_error": "high",
"common_wrong_answer": "Applied F=ma in a rotating frame without pseudo force",
"correct_understanding": "In non-inertial frames, include pseudo force opposite frame acceleration."
},
"target": {
"duration_seconds": 60,
"audience": { "grade": "11", "language": "en", "tone": "neutral_instructional" },
"render": { "format": "mp4", "resolution": "1920x1080", "fps": 30, "include_transcript": true, "include_thumbnail": true },
"style": "auto",
"interactivity": "parameter_sliders"
},
"metadata": { "priority": "high" }
}